卡卷网
当前位置:卡卷网 / 每日看点 / 正文

没有备案的域名怎么绕过国内服务器厂商的封锁?

作者:卡卷网发布时间:2025-01-12 18:15浏览数量:67次评论数量:0次

前排提示,文很干,并且笔者懒得摆弄格式,不嫌枯燥可以看完。

该文内容会贯彻整个https访问过程,涉及到DNS解析的整个过程(概括,对,这么啰嗦的情况下依旧是概括,其中有许多技术细节限于篇幅无法深入讲解),以及所谓的“厂商的封锁”是发生在什么节点,(注:文中许多术语名词采用了英文术语,并非是为了装高大上,而是因为许多概念笔者都是通过英文书籍学习的,实在不知道中文叫什么合适,怕叫错,所以干脆叫英文原称),让我们开始:

前置知识

域名等级

示例:w防w呑w.test.com

  • 顶级域名部分:com
  • 二级域名部分:test.com
  • 三级域名部分:w防w吞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)

模拟过程如下

  1. 电脑a发起了一个http请求,假设请求的域名为h防tt吞ps://w防w吞w.test.com

2. 电脑a在自身的DNS Cache中查找是否存在该域名的缓存,并且该缓存的TTL(Time To Live)没有过期,如果找到,跳到第[14]步。

3. 电脑a获取自身所有可用的网络适配器Network Adapter,就是我们俗称的网卡,并在其中通过一些条件(关键条件为Metric,该数值越小,则网卡被使用的优先级就越高)选择一个要使用的网卡。

4. 电脑a在选择完Network Adapter之后,读取该adapter配置的DNS服务器地址(IPv4和IPv6版本的都会获取到),到这一步,有两种情况:第一种,该adapter手动配置了DNS服务器(仅配置了主选DNS,或主选DNS和备选DNS都配置了);第二种,该adapter没有配置DNS服务器,那么DNS服务器会默认使用DHCP分配的DNS服务器,也就是ISP网络服务商(在国内就是三大运营商)提供的。无论是采用主动配置的DNS服务器还是采用DHCP分配的DNS服务器,该DNS服务器都是如下类型的:Recursive Resolvers (Caching DNS Servers)

5. 电脑a终于获取到DNS服务器的地址了,于是检查本机route table,分别查看IPv4版本和IPv6版本的首选路由,然后发送DNS查询,IPv4和IPv6的查询会并行发出,基于Happy Eyeballs Algorithm原则,谁先响应就用谁。

6. Recursive Resolvers服务器接收到DNS查询,会先查看自身缓存中是否存在要解析的域名的缓存,如果存在且TTL未过期,则返回缓存的该域名的IP地址到电脑a,并跳到第[13]步。如果未找到缓存,则向根服务器继续发送DNS解析请求。

7. 根服务器收到DNS请求,查看请求解析的域名的顶级域名,回复Recursive Resolvers服务器道:顶级域名为com的域名,请找这个TLD Servers进行解析,它的地址是XXX

8. Recursive Resolvers服务器接收到根服务器的回应,得到了TLD Servers的地址,然后它就将DNS域名解析请求发给该TLD Servers。

9. TLD Servers接收到DNS请求,查看请求解析的域名的二级域名,然后根据这个二级域名查询zone files,得到了该域名注册时指定的nameserver地址,回复Recursive Resolvers服务器道:二级域名为test.com的域名,关于它的解析,请找这个Authoritative Name Servers,地址是XXX。

10. Recursive Resolvers服务器接收到TLD Servers的回应,根据拿到的地址将DNS请求发送到这个Authoritative Name Servers。

11. Authoritative Name Servers接收到DNS请求,检索自身管理的数据,终于找到了w防w吞w.test.com的IP地址,并且有可能是IPv4的地址和IPv6的地址都有,它将地址数据返回给Recursive Resolvers服务器。

12. Recursive Resolvers服务器终于收到了该域名的地址数据,所以赶紧将该数据在自身缓存区缓存一份,并且设置好缓存TTL(TTL由Authoritative Name Servers指定),这样的话下次再收到该域名的解析请求,只要缓存的TTL未走完,就无需再去递归请求根服务器了。然后它就将该域名的IP地址数据返回给电脑A了。

13. 电脑a接收到该域名的IP地址数据之后,同样是先在自身DNS Cache缓存区缓存一份,同样是要给缓存指定TTL,这样的话,下次自己再请求该域名,就不用去找Recursive Resolvers服务器进行解析了。

14. 在这之后,电脑a就要真正的使用该域名的IP地址建立数据连接了,这时电脑a发现自己获取到了这个域名的IPv4地址和IPv6地址,那么要使用哪一个进行连接呢?答案是两者同时使用,并行建立连接,谁的响应速度快,就用谁。建立连接使用的Network adapter依旧要基于route table的查询匹配来决定。

15. 因为是使用的https协议,所以默认使用的端口是443,如果云服务器厂商在防火墙中将443的入站限制打开,那么在建立连接这一步就失败了。如果443未被封,那么在tcp连接建立之后,就是TLS安全层的建立了,证书验证、交换密钥、加密传输等等不再赘述。

至此,整个DNS的解析过程全部走完,那么所谓的“厂商”能够干涉的,有哪些节点呢?

只要电脑a的DNS cache中没有相关域名的缓存,显然无论电脑a是否主动设置了DNS服务器,都要先请求Recursive Resolvers进行DNS的解析的,区别就是手动设置能指定为国外的DNS服务器如8.8.8.8,它显然是不管你这个域名备没备案的,如果不手动设置就要走运营商提供的DNS服务器,在理论上,它能够管,但是要经过很复杂的验证,所以约等于管不了,经过实际验证它也确实管不了。

那么根服务器、TLD服务器的解析,厂商就更管不了了,但是Authoritative Name Servers如果指定了是国内云服务器厂商的,那么它就能验证域名是否备案过,从而能够实现阻止解析的,也就是说在Authoritative Name Servers解析这个节点上,云服务器厂商可以干涉,前提是在注册域名时将nameserver指定为国内的解析服务器了。如果指定为国外的解析服务器,如Noip,那么这个节点也是无法验证是否备案过的。

那么结论就是,云服务器厂商可以封80或443的入站端口,但显然它不能将其他所有端口都封上。另外就是它可以在Authoritative Name Servers这个节点上阻止解析,前提是域名使用了它家的Authoritative Name Servers。

技术男,不善文章,就酱。

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码