2022年01月08日科技新闻:如何设置一个更安全的 DNS

无尾鱼
阅读

2022年01月08日科技新闻:如何设置一个更安全的 DNS

大家好,小农来为大家解答以上最好用的dns设置,如何设置一个更安全的 DNS的问题,那么下面带大家一起了解下吧。

解答:

最简单的域名系统请求过程

随着互联网技术的快速发展,人们在上网时遇到以下情况的概率丝毫没有降低:

从官网下载内容时,下载的地址是一串IP地址,而不是官网地址,有时下载的内容不是最新的。

打开一个网站后,网站中某些广告的质量明显不如其他广告,或者网页中的内容明显被屏蔽。

错误的网站会打开一个充满广告的页面。

网站中的广告风格与整个网站完全不匹配。

经常会遇到一些打不开的页面(这个网址我解析不了),但是过一段时间就好了。

这些问题通常与您的域名系统设置有关。

为什么会出现这些问题?

只要你连接了互联网,互联网服务提供商(也叫ISP,以下简称运营商)就会给你发两个DNS,也就是运营商DNS。

并且DNS服务器将该URL映射到该IP。随着互联网技术的飞速发展,DNS服务器经历了很长一段时间的发展,衍生出了更多更好的功能,让用户可以自由上网。

每个运营商几乎都会在每个城市部署自己独立的DNS服务器,这也是同一运营商在不同城市分布的DNS服务器地址也不一样的原因。另外,运营商知道内容分发网络的位置(也就是我们常说的CDN,CDN主要起两个作用,第一是让用户能够以最快的速度访问自己想要访问的内容,第二是降低主服务器所需的带宽和维护成本)以及自身网络的情况,所以运营商DNS返回的结果应该是:最准确、最合适、响应时间最短和最准确的CDN分析结果,总之:可以吗

每个城市维护一台DNS服务器的成本自然不会小到运营商经常更改DNS结果,导致文章开头提到的问题。那么运营商最主要的就是降低成本。当然,还有一种情况是附近的DNS服务器没有及时扩容或者维护不善,导致出现上述情况。

使用公共DNS服务来解决这个问题。

解决上述问题最快的方法就是使用公共DNS服务。

公共DNS服务器一般由大公司或非营利组织构建。公共DNS的本质是将你的查询请求转发到更权威的DNS上游,所以这些公司或组织提供的公共DNS服务器一般都是更安全、更准确的结果。

当然,由于资金限制,不会每个城市都有一个公共DNS服务器。自然会遇到公共DNS服务解析的IP不是最快的情况。下图显示了运营商DNS解析同一个网站的结果和阿里巴巴云公共DNS解析两个完全不同延迟的结果(time-ios.apple.com是CDN优化的网站):

域名系统返回结果的比较

提示:如何快速知道我和某个服务器之间的延迟?

使用ping命令

Ping是一种计算机网络工具,用于测试数据包是否可以通过IP协议到达特定主机。根据成功响应的时间和数量,估计数据包丢失率(数据包丢失率)和数据包往返时间(网络延迟)。

Ping将直接连接到任何操作系统的内置终端(或命令提示符)。使用时,用户只需使用ping网站/IP地址(如ping 17.253.84.251)并按回车键即可获得结果。

因此,我们在选择公共DNS时要注意以下几个方面:

上线率:也叫SLA或可靠性,DNS服务器是连接网站与IP的唯一手段。如果上线率不够高,网站就不能时不时地解决,大大降低了上网的乐趣和连贯性。

响应速度:访问新网站时,DNS对该网站的响应速度将直接影响当前网站的直观加载速度。

准确性:即使不考虑DNS污染和中毒,DNS对于网站访问结果的准确性也是非常重要的。

CDN友好性:又称ECS或EDNS,ECS可以帮助你获得最准确的CDN分析结果,这也是我在选择公共DNS时最看重的。

DNS退出位置:在没有ECS的情况下,CDN的权威DNS会根据公共DNS使用的请求IP(即DNS退出)来确定你的运营商和你的位置,从而将最近节点的IP返还给你。有了ECS,返回结果所需的时间会更短,CDN判断会更准确。

受篇幅限制,下图只介绍了符合RFC的(不含IBM Quad9 DNS)、有多个响应站点的大规模公共DNS服务(不含360个公共DNS)、相对较好的准确性(并非故意下毒),更重要的是CDN友好的公共DNS服务。延迟由每个地方的每个操作员决定。请自己测试一下。

推荐的公共 DNS 服务器

利用安全的公共 DNS 服务解决这个问题

不过在一部分 DNS 问题严重的地方,将运营商 DNS 更换为公共 DNS 可能还是不能解决本文开头的问题。

这是因为我们的 DNS 流量没有经过加密,就和曾经的 http 协议一样,运营商或是第三方还是能够清楚的知道:我们发起了一个 DNS 请求,我们想要知道 xxx 网站的地址。下图展示了一个 DNS 请求发起的过程,可以很清楚的看到,我请求了什么网址(用十六进制码显示,右侧是转义以后的结果)

一条普通的 DNS 查询

如果我们给我们的 DNS 流量加个密,就和 https 流量一样,那么运营商不就不知道我们我们的 DNS 请求了吗。这就是 DNS over HTTPS (下文简称 DoH )和 DNS over TLS (下文简称 DoT )技术要做的事。他们分别利用 HTTPS (超文本传输安全协议)和 TLS(传输层安全协议)这两种行业通用的安全协议,将我们的 DNS 请求发往 DNS 服务器。运营商或是第三方在整个传输过程中,只能知道发起者和目的地,除此以外别的什么都知道,甚至都不知道你发起了 DNS 请求。同时 HTTPS 和 TLS 都会使用网络数字证书确保对面的身份,这样传输的过程中无论是任何第三方都不能修改 DNS 的请求内容和最后的结果。保证你请求的结果就是你最后想要的。

DoH 和 DoT 不仅能为经常被运营商和第三方劫持 DNS 的人群提供安全可靠的 DNS 解析结果,还能给极为看重隐私人群补上上网隐私保护流程中的最后一块短板。

下图是目前支持 DoH 或者 DoT 的 DNS 服务器列表

推荐的安全 DNS 服务器

我应该怎么使用 DoH 和 DoT 技术

对于 iOS 设备

大家可以前往 App Store 中下载 Cloudflare App(也被称为 1.1.1.1),下载以后,打开应用,直接打开开关即可享用到来自 Cloudflare 提供的 DoH 服务。

通过 Cloudflare 使用安全的公共 DNS 服务器

Adguard iOS 版的用户可以手动选择 DNS 服务器(需要高级订阅),前往 Adguard iOS 版本的设置,选择 DNS,再选择合适的 DNS 服务器即可,当然你也可以选择手动输入自定义的 DNS 服务器(DoH 和 DoT 均支持)使用这项功能。

通过 Adguard iOS 使用安全的公共 DNS 服务器

对于 Android

Android 9 以及以上的版本,你可以前往无线和网络,选择指定加密 DNS 服务(部分设备上可能被命名为:私人 DNS),输入 DNS over TLS 的地址即可。

Android 9 以及以上的版本直接能进行设置

对于 Android 9 以下的版本,或者没有指定加密 DNS 服务,你可以前往各大应用市场下载 Intra 应用,进行配置。前往 Intra 的设置,选择 DNS over HTTPS 服务器,输入或者选择 DNS over HTTPS 服务器即可。

通过 Intra 使用安全的公共 DNS 服务器

当然,如果你是 Adguard Android 版的用户,你可以前往 Adguard Android 版本的设置,选择 DNS,再选择合适的 DNS 服务器即可,和 iOS 版本一样你也可以选择手动输入自定义的 DNS 服务器,使用更适合自己的 DNS 服务器。

通过 Adguard Android 使用安全的公共 DNS 服务器

对于 macOS & Windows

对于完全不熟悉终端命令的用户来说,现在想在 macOS 或者 Windows 上得到安全可靠的解析,那么 Firefox 浏览器是目前唯一的选择,前往 Firefox 的设置,常规-网络设置-设置,选择启用基于 HTTPS 的 DNS,这样就打开了 Firefox 上的 DoH 服务了。

通过 Firefox 使用安全的公共 DNS 服务器

当然,用户基数更大的 Chrome 在未来也会在实验性设置里提供对应的选项(本文写作时 Chrome 正式版本为 77,从 78 版本开始将在实验性设置里提供对应的选项,78 正式版本将在 10 月 22 日推送)。打开你的 Chrome,在地址栏中输入 chrome://flags/#dns-over-https,回车,在右侧下拉箭头中选择 Enable。这样就打开了 Chrome 78 上的 DoH 服务了。

在 Chrome 里打开 DoH

如果你自己有的代码基础,也可以选择 DNScrypt 作为本地的 DNS 客户端,提供安全可靠的 DNS 解析。当然你对代码有更深入的了解,想要给全家或是全公司提供安全的 DNS,那么红鱼的这份文档就特别适合你。当然,希望在未来这两大操作系统能加入对应的设置,给我们提供额外的安全的选择。

希望通过这篇文章能帮到你,在和好朋友分享的时候,也欢迎感兴趣小伙伴们一起来探讨。

阅读
本文由用户上传,如有侵权请联系删除!

撰写回复
更多知识