linux工具我用 Linux程序员

合理配置DNS保障冲浪安全

2017-07-07  本文已影响267人  肆不肆傻

DNS (Domain Name System) 域名系统可以看做是一个库,完成的是从 语义上的域名(例如:www.baidu.com)到 机器可理解的IP(例如:14.215.177.38)的映射。当我们浏览网页时,我们通过输入易读的域名或网址便能访问到目标主机提供的服务,问题是对于人而言我们更能方便的记住域名而计算机底层却在只有知道目标主机的IP地址的情况下才能与之通信。在 输入网址 到 获取资源中间有个过程及其重要,那就是DNS域名解析过程。关于DNS解析的基本原理参见文末参考资料。

DNS域名解析之所以重要是速度、稳定性和安全性三方面的考虑。从用户的角度来讲安全性是比较重要的,但这个因素我们无法考量;稳定性决定用户能够获取互联网服务的可靠性;速度是用户上网时能直接感受到的。有时候我们会觉得网页刷不动,导致这个问题的原因是多方面的:计算机资源枯竭、DNS解析延时长、网页服务器响应时间长等,撇开其他因素不看,单从DNS角度我们看看如何解决网络延时问题。

本文讨论的主要内容:1)主流可用DNS服务器资源;2)不同DNS服务器解析延时比较和查看系统当前使用的DNS解析服务器以及解析延时;3)设置(指定)DNS解析服务器;4)关于使用DNScrypt时的DNS设置注意事项

以下内容均针对Linux平台,对于其他平台查看或设置方法或许不同,本文内容也能有一定的启发意义。

主流DNS服务器资源

DNS解析服务器提供着从域名或网址解析目标主机IP的服务。DNS解析服务器收录的域名信息是否完备、域名解析是否受保护、解析到的是不是就近的主机等因素都将影响服务的速度、安全性和稳定性。选择一个垃圾的DNS服务器可能导致网页加载缓慢、DNS被劫持从而将用户导引到广告页面、用户上网信息泄露等不愉快的冲浪体验。下面将收录一些比较好用的、信誉相对较高的DNS解析服务器。

国内的:

# 114 DNS服务器

114.114.114.114

114.114.115.115

# 阿里 DNS服务器

223.5.5.5

223.6.6.6

# One DNS

112.124.47.27

114.215.126.16

# 腾讯DNS服务器

119.29.29.29

# Baidu  DNS

180.76.76.76

# DNS派

123.125.81.6

101.226.4.6

国外的:

# Google DNS

8.8.8.8

8.8.4.4

# Verisign DNS

64.6.64.6

64.6.65.6

# Level3 DNS

209.244.0.3

209.244.0.4

4.2.2.1

4.2.2.2

4.2.2.3

4.2.2.4

# Comodo Secure DNS

8.26.56.26

8.20.247.20

# OpenDNS

208.67.222.222

208.67.220.220

解析延时和传输路径是有很大关系的,在国内设置国外的DNS时由于每次解析都要翻山越岭地发送请求,解析结果又要漂洋过海才能传回来所以解析时间一般比设置国内DNS要慢很多。此外国外DNS对国内域名以及服务集群的收录可能不完整,会影响对国内网站的访问,相应的对国外网站的解析要全面稳定一些。这种地区差异导致的服务差异在所难免。

DNS解析服务器延时比较

国内外DNS解析服务延时差距一般比较大,国内DNS解析服务延时有差异,国外DNS解析服务有差异但不明显。我们可是使用dig命令来测试DNS解析服务的响应时间。

dig是一款dns查询小程序,Linux系统自带,基本使用方式是

dig @dns-server domain-name

意为使用制定DNS服务器解析特定域名或网址。下面我们通过使用114DNS、One DNS 和 Google DNS、openDNS来比较国内DNS服务器查询区别、国外DNS服务器查询区别以及国内外DNS服务器查询区别。

我们选取 www.jianshu.com 和 www.facebook.com 作为查询域名。

1)国内114DNS

114 简书 114 Facebook

2)国内One DNS

One DNS 简书 One DNS Facebook

3)国外Google DNS

Google DNS 简书 Google DNS Facebook

4)国外openDNS

openDNS 简书 openDNS Facebook

观察发现国内DNS服务器对国内域名解析基本一致,解析延时很短,对国外域名解析结果存在差异而这种差异即便是国外DNS服务器对国外DNS解析也同样存在。国外DNS解析国外网址响应速度极快,相比而言解析国内网址速度要慢得多。国内DNS解析国外网址响应时间与解析国内网址相差无几,猜想可能是因为有墙的原因。另外,国内DNS解析出的国外网址的IP都无法访问,ping丢包率100%,奇怪的是国外DNS解析出的IP有着相同的情况(国外IP能否访问的实验是通过海外vps测试的),可能说明DNS服务器的域名资源不完备。是不是存在其他原因这里并不清楚。。。

关于DNS解析延时可以通过 ping dns-server 的时间估计个大概。网上也有网友提供以下代码来检测当前系统DNS的响应时间:(评估系统DNS解析淘宝网的时间)

curl -o /dev/null -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}"\n" "http://www.taobao.com"

具体参数意义和返回结果的解释参见文末参考资料。当前系统使用的DNS罗列在文件 /etc/resolv.conf 中,可使用 cat /etc/resolv.conf 查看。

设置系统DNS服务器

如上文言,系统当前的DNS设置可通过查看resolv.conf 文件知晓。打开 resolv.conf 可见一份以nameserver 开头的列表,该列表罗列了当前系统设置的可用于DNS解析的DNS服务器地址,其中 search lan 表示使用当前局域网的DNS服务器设置,该选项只有当设置网络为自动DHCP获取IP和DNS是才存在。

在网络设置为DHCP自动获取IP和DNS时,首先查询当前局域网设置的DNS服务器,失败后才按照顺序逐个向其他DNS服务器发送查询请求,直到某服务器成功返回查询结果为止。当网络设置为DHCP只获取IP时,系统不会查询局域网DNS设置,而是直接使用系统内设的DNS列表按从上到下的顺序发送DNS请求。

设置系统备选DNS时直接修改/etc/resolv.conf 是不行的,这种修改方式只是临时的,当系统重新启动或网络解析服务重启后设置将丢失。可将备选DNS写入文件夹/etc/resolvconf/resolv.conf.d下的base或head文件中以便长期保留。有一点需要注意的是这样设置的DNS会出现在/etc/resolv.conf列表的最前面,由于网络DNS解析按照自上而下的顺序进行,因此设置的DNS将代替网络自动获取的DNS成为首要解析服务器。解决这个问题我们可以通过在/etc/resolvconf/resolv.conf.d文件夹下新疆 tail 文件并将DNS服务器写入该文件。这样重启系统或网络服务后tail中的DNS列表将追加在系统自动获取的DNS列表后成为备选DNS服务器

使用DNScrypt 进行DNS加密传输的注意事项

DNScrypt 通过将不安全的http传输方式改成安全的https方式来传输DNS解析请求,从而有效避免DNS劫持、篡改等DNS安全隐患,达到加密DNS的目的。

DNScrypt的使用参见 Linux下配置DNScrypt避免DNS污染

自用DNScrypt时遇到一个小问题:自定义DNS备选服务器后 DNScrypt 不能正常工作,查看日志显示 " Unable to retrieve server certificates" 错误。出现这个问题是DNScrypt启动时需要先在其他DNS服务器的辅助下与DNScrypt服务器建立链接,而我设置的备选服务器中第一个服务器是无效的,导致DNScrypt启动时无法与服务器建立链接,删除无效DNS服务器解决问题。

参考资料:

从浏览网页看DNS解析DNS原理总结及其解析过程详解 | curl 查看一个web站点的响应时间(rt) | curl 获取站点的各类响应时间 | Linux下配置DNScrypt避免DNS污染

上一篇下一篇

猜你喜欢

热点阅读