DNS解析过程及厂商封锁节点分析

前置知识

在深入解析之前,让我们先了解一些域名和DNS服务器的基本概念。

域名等级示例

  • 顶级域名部分:.com
  • 二级域名部分:test.com
  • 三级域名部分:w.test.com
  • 以此类推

注意:许多人会将test.com称为顶级域名或一级域名,在习惯上可以接受,但在严谨的学术定义上,这是不正确的。

DNS服务器等级

  1. Root Servers
  2. TLD Servers
  3. Authoritative Name Servers
  4. Recursive Resolvers (Caching DNS Servers)
  5. Local DNS Servers (at the user level)

模拟DNS解析过程

  1. 发起HTTP请求:电脑a发起了一个http请求,假设请求的域名为 https://w.test.com
  2. DNS Cache检查:电脑a在自身的DNS Cache中查找是否存在该域名的缓存,并且该缓存的TTL没有过期。
  3. 网络适配器选择:获取自身所有可用的网络适配器(网卡),并通过一些条件选择一个要使用的网卡。
  4. DNS服务器地址:读取该adapter配置的DNS服务器地址(IPv4和IPv6版本)。
  5. Route Table检查:检查本机route table,分别查看IPv4版本和IPv6版本的首选路由,并发送DNS查询。
  6. Recursive Resolvers响应:Recursive Resolvers服务器接收到DNS查询,会先查看自身缓存中是否存在要解析的域名的缓存。
  7. 根服务器回应:根服务器收到DNS请求,回复Recursive Resolvers服务器,指引找到TLD Servers进行解析。
  8. TLD Servers请求:Recursive Resolvers服务器将DNS域名解析请求发给TLD Servers。
  9. TLD Servers回应:TLD Servers根据二级域名查询zone files,得到该域名注册时指定的nameserver地址。
  10. Authoritative Name Servers请求:Recursive Resolvers服务器将DNS请求发送到这个Authoritative Name Servers。
  11. Authoritative Name Servers响应:Authoritative Name Servers找到域名的IP地址,并返回给Recursive Resolvers服务器。
  12. Recursive Resolvers缓存:Recursive Resolvers服务器将地址数据缓存,并返回给电脑A。
  13. 电脑A缓存:电脑A将地址数据缓存。
  14. 建立数据连接:电脑a使用获取到的IP地址建立数据连接。
  15. TLS安全层建立:使用https协议时,建立TLS安全层,进行证书验证、交换密钥、加密传输等。

厂商封锁节点

  • DNS Cache:如果电脑a的DNS cache中没有相关域名的缓存,无论是否主动设置了DNS服务器,都要先请求Recursive Resolvers进行DNS的解析。
  • Authoritative Name Servers:如果Authoritative Name Servers指定了是国内云服务器厂商的,那么它就能验证域名是否备案过,从而能够实现阻止解析。
  • 入站端口:云服务器厂商可以封80或443的入站端口。

结论:云服务器厂商可以封80或443的入站端口,但无法阻止其他所有端口。此外,它可以在Authoritative Name Servers这个节点上阻止解析,前提是域名使用了它家的Authoritative Name Servers。