没有备案的域名怎么绕过国内服务器厂商的封锁?
作者:卡卷网发布时间:2025-01-12 18:15浏览数量:67次评论数量:0次
前排提示,文很干,并且笔者懒得摆弄格式,不嫌枯燥可以看完。
该文内容会贯彻整个https访问过程,涉及到DNS解析的整个过程(概括,对,这么啰嗦的情况下依旧是概括,其中有许多技术细节限于篇幅无法深入讲解),以及所谓的“厂商的封锁”是发生在什么节点,(注:文中许多术语名词采用了英文术语,并非是为了装高大上,而是因为许多概念笔者都是通过英文书籍学习的,实在不知道中文叫什么合适,怕叫错,所以干脆叫英文原称),让我们开始:
前置知识
域名等级
示例:w防w呑http://w.test.com
- 顶级域名部分:com
- 二级域名部分:http://test.com
- 三级域名部分:w防w吞http://w.test.com
- 以此类推
注:许多人会将http://test.com称为顶级域名或一级域名,在习惯上可以接受,在严谨的学术定义上,这是不正确的。
DNS服务器等级
- Root Servers
- TLD Servers
- Authoritative Name Servers
- Recursive Resolvers (Caching DNS Servers)
- Local DNS Servers (at the user level)
模拟过程如下
- 电脑a发起了一个http请求,假设请求的域名为h防tt吞ps://w防w吞http://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服务器道:二级域名为http://test.com的域名,关于它的解析,请找这个Authoritative Name Servers,地址是XXX。
10. Recursive Resolvers服务器接收到TLD Servers的回应,根据拿到的地址将DNS请求发送到这个Authoritative Name Servers。
11. Authoritative Name Servers接收到DNS请求,检索自身管理的数据,终于找到了w防w吞http://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。
技术男,不善文章,就酱。
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
- 上一篇:为什么一些程序员很傲慢?
- 下一篇:deepseek v3模型为啥要开源?
相关推荐

你 发表评论:
欢迎