神奇的Willem

DNS解析互联网的基石(科普)

DNS(Domain Name System)是整个互联网的基石之一

简述DNS

当我们打开浏览器,输入www.google.com时,我们很少会去想,计算机是如何知道要去哪里获取信息的。我们输入的是人类可读的“名字”,而计算机网络(如互联网)通信依靠的却是数字“地址”(即IP地址,例如 172.217.14.228)。

DNS,即域名系统(Domain Name System),就是负责这个翻译工作的核心服务。它就像是整个互联网的“电话簿”,维护着域名和IP地址之间的对应关系。没有DNS,我们就必须记住一长串毫无意义的数字,互联网的易用性将不复存在。

这有点像你去图书馆找一本书,进门你找到了借阅电脑,点击借书《时间简史》,借阅电脑告诉你:他应该属于科学类书籍专区,有很多不同种类,找到了科普著作书架,最好在第3排第16列找到这本书。之后你拿着书走出图书馆,开始阅读。

这个跟dns解析很像!!

专有名词介绍

递归解析:我用的是akuai路由器,自建ADguard,他就是私有dns服务器,可以缓存一些dns地址,防止dns污染,尤其是运营商污染,我会强制DOT SSl询问,访问谷歌和Cloudflear以及阿里等。

跟域名:new.baidu.com 。new为二级域名,baidu为一级域名,com为顶级域名。

  • new隶属于baidu.com。baidu.com隶属于com.(我们一般买的都是一级域名)

  • 所有二级域名均为一级域名所有

本地缓存:浏览器,系统,路由器,为了缓解域名解析压力,提高访问速度,防止反复请求,生成的在一段时间内,你在请求相同域名时候不去询问,而是在使用原来解析过的域名(如果没有过期的话,缓存有时间限制)

工作流程

想象一下,您(您的电脑)想找一个叫 www.example.com 的朋友的地址(IP)。您会求助于您的“私人助理”(本地DNS/递归解析器)。这个助理会开始一场寻访之旅:

1. 第一站:本地缓存(Cache)

• 您的电脑会先查看自己的“记忆”(浏览器缓存、操作系统缓存),看最近是否访问过这个网站。如果访问过且记录未过期,它会直接使用本地的IP地址,解析过程结束。

2. 第二站:本地DNS(递归解析器)

• 如果本地没有缓存,电脑会询问您在网络设置中配置的“本地DNS服务器”(通常由您的ISP运营商如电信、移动提供,或您自己设置的公共DNS如 8.8.8.8)。这个服务器被称为递归解析器 (Recursive Resolver)。

• 递归解析器也会先查自己的缓存,如果有,就直接返回IP。

3. 第三站:根服务器(Root Server)

• 如果递归解析器也不知道,它会向全球13组根服务器(Root Server)之一发出请求:“你好,我该去哪里找 .com 域名的信息?”

• 根服务器不认识 www.example.com,但它知道谁管理 .com。它会回复:“我不知道,但你可以去问 .com 的顶级域服务器(TLD Server),它们的地址是 XXX。”

4. 第四站:顶级域(TLD)服务器

• 递归解析器转向 .com 的顶级域服务器(TLD Server):“你好,我该去哪里找 example.com 的信息?”

• TLD服务器也不认识 www.example.com,但它知道 example.com 这个域名“注册”时,指定的权威服务器是谁。它会回复:“我不知道,但你可以去问 example.com 的权威服务器,它们的地址是 ns1.example.com。”

5. 第五站:权威服务器(Authoritative Server)

• 递归解析器最终找到了““真正知道答案”的服务器。它向 example.com 的权威服务器(Authoritative Server)提问:“你好,请问 www.example.com 的IP地址是什么?”

• 权威服务器掌管着 example.com 域下所有的记录。它查询自己的记录,找到 www 这条A记录,然后给出一个最终答案:“www.example.com 的IP地址是 93.184.216.34。”

6. 返回与缓存

• 递归解析器拿到了IP地址,它会:

1. 将这个答案返回给您的电脑。

2. 将这个答案(www.example.com = 93.184.216.34)缓存一段时间(由权威服务器设置的TTL值决定),以便下次有人再问时,它可以跳过3-5步,直接回答。

7. 连接

• 您的电脑最终拿到了 93.184.216.34 这个IP地址,然后浏览器向这个IP地址发起HTTP/HTTPS请求,网站页面开始加载。

加密DNS (Encrypted)

为了解决明文传输的风险,诞生了多种加密DNS技术。它们就像是把您的“明信片”放进了一个无法被窥视的、上锁的保险箱里。

最主流的两种是 DoT 和 DoH:

2. DoT (DNS over TLS)

• 全称: DNS over TLS (基于TLS的DNS)。

• 工作方式: 它创建了一个专用的、加密的通道,专门用于传输DNS数据。

• 使用端口: 853 端口。

• 比喻: 就像一个专用的、加锁的银行气动传输管道。

• 优点: 非常安全。

• 缺点(或特点): 由于它使用一个独特的端口(853),网络管理员(如公司防火墙)可以轻易地识别出“这是DoT流量”,并选择(出于安全策略)阻止它。(有点恶心人)

3. DoH (DNS over HTTPS)

• 全称: DNS over HTTPS (基于HTTPS的DNS)。

• 工作方式: 这是目前最主流的加密方式。它非常“聪明”地将DNS查询“伪装”成普通的网页访问(HTTPS)流量。

• 使用端口: 443 端口(与所有HTTPS网站相同的端口)。

• 比喻: 就像把您的“信件”放进了一个**与其他数千个公文包一模一样的、上了锁的公文包(HTTPS)**里,一起传输。

• 优点:

1. 极高的隐私性: 网络管理员几乎无法区分DoH的DNS查询和普通的网页浏览。这使得DNS查询很难被监控或(在某些网络环境中)被审查。

2. 安全性: 与DoT一样,内容是完全加密的,无法被篡改。

• 缺点(争议点): 对于企业网络安全来说,DoH可能是个噩梦。安全团队通常依赖监控DNS流量来发现和阻止恶意软件(如僵尸网络)的通信。DoH使得这种传统的监控方法失效了。(我喜欢DoH大部分的递归解析服务器都支持此协议)(vpn也可以用这个加密解析)

为了防止被劫持,使用加密DNS是有必要的,但更重要的是选择一个被信任的递归解析服务器,我们是没有权限直接访问跟域名服务器的,跟域名服务器只有13个(A-M)虽然有很多的镜像站点,但是由于本人所在地域问题,收到运营商递归服务器的欺骗,我们可能得不到准确的IP。相比于加密其实递归解析设备的信任度更为重要。(不建议用运营商的)

自用Adguard域名解析上有服务器

https://sm2.doh.pub/dns-query
https://doh.skydns.ru/dns-query
https://doh.pub/dns-query
https://dns.alidns.com/dns-query   #阿里
https://doh.pub/dns-query
tls://1.1.1.1
tls://dns.alidns.com     #阿里
1.1.1.1
8.8.8.8
8.8.4.4
9.9.9.9
149.112.112.112
223.5.5.5      #阿里
119.29.29.29    #腾讯
-------------------------------------
#94.140.14.140, 2a10:50c0::1:ff: 常规 DNS(基于 UDP);
#94.140.14.140:53, [2a10:50c0::1:ff]:53: 常规 DNS(通过 UDP,带端口);
#udp://unfiltered.adguard-dns.com: 常规 DNS(通过 UDP、主机名);
#tcp://94.140.14.140, tcp://[2a10:50c0::1:ff]: 常规 DNS(基于 TCP );
#tcp://94.140.14.140:53, tcp://[2a10:50c0::1:ff]:53: 常规 DNS(通过 TCP,带端口);
#tcp://unfiltered.adguard-dns.com: 常规 DNS(通过 TCP、主机名);
#tls://unfiltered.adguard-dns.com: 加密 DNS-over-TLS;
#https://unfiltered.adguard-dns.com/dns-query: 加密 DNS-over-HTTPS;
#h3://unfiltered.adguard-dns.com/dns-query: 带有强制 HTTP/3 的加密 DNS-over-HTTPS,不会回退到 HTTP/2 或更低版本;
#quic://unfiltered.adguard-dns.com: 加密 DNS-over-QUIC
#sdns://...: DNSCrypt 的 DNS Stamps 或者 DNS-over-HTTPS 解析器;
#[/example.local/]94.140.14.140: 指定为特定域名的上游服务器;
#[/example.local/]94.140.14.140 2a10:50c0::1:ff: 特定域名的多个上游服务器;

祝您上网愉快!!!

为什么不能直接请求跟域名服务器?

为了缓解压力,你知道我们一天要进行多少次请求吗,有多少的手机,多少的广告,多少的二级三级域名。

虽然我们有很多的镜像服务器,但是与跟域名服务器同步也是需要时间的。

所以会非常慢。我们可以做本地dns缓存服务器,用它来规避一些广告即可。没必要直接请求跟域名。

国家跟域名服务器是有保护的。

下次再见!(地下城配音)