DNS 污染的一个讨论。

2017-08-08 11:51:42 +08:00
 holinhot

最近对最新的 GFW DNS 污染的测试结果。

当域名被污染后随机指向国外被封 IP 或无效 IP 地址,如 255.x.x.x 这样的。

这个随机 IP 地址范围非常大,可能有好几千个。

当域名解析在向根服务器查询 NS 记录的时候就被拦截。无法返回正常的 NS 记录。 当域名存在 MX 记录时向根服务器查询 NS 记录,可以正常返回 NS 记录与 MX 记录。

域名不管使用国内还是国外的服务商,在查询 NS 这一步必须出国,因为中国没有根服务器。

疑惑的是:

当一个域名被污染后,如果使用国内 DNS 服务商并设置 MX 记录。可以正常返回 NS 记录。但仍然无法返回正确的 A 记录。

按理当查询 MX 记录时,返回了正确的 NS 记录。此时当地运营商的递归 DNS 应该会缓存 NS 记录,在下一次请求解析这个域名的过程中不再向根域查找 NS 记录,而使用上一次缓存的 NS 记录,向该 NS 请求 A 记录。

但实际测试看起来递归 DNS,好像不会缓存 NS 记录,这个非常奇怪。这样就造成了域名被彻底封杀。

1865 次点击
所在节点    DNS
28 条回复
Toools
2017-08-08 12:09:16 +08:00
同求 解决方法
holinhot
2017-08-08 12:34:43 +08:00
@Toools 哈哈 送礼
matsuz
2017-08-08 13:09:22 +08:00
大陆是有根服务器的啊。

你这个问题是能正确解析 MX 而不能解析 A 记录?
那你直接向你的权威服务器请求能返回正确的 A 记录数据吗?
matsuz
2017-08-08 13:28:09 +08:00
要看递归服务器有没有缓存 NS 用 dig 执行一次迭代解析就行了

dig youdomain.com @114.114.114.114 +norecurse

上面 @ 后面的 IP 换成递归服务器的 IP 就好了。
Devmingwang
2017-08-08 13:35:54 +08:00
对,我也在想为什么所有的污染的域名全都不会返回 NS 记录。

如果可以返回 NS 记录的话,那么可以采取 NS 国内一台国外一台,NS 所用 DOMAIN 分区解析的方式躲过 DNS 污染。

关键就是不向 NS 查啊。
matsuz
2017-08-08 13:41:10 +08:00
@Devmingwang 要污染整个域最快的方式当然就是屏蔽 NS 啊
不过我刚刚查了一下,是可以正常查询到 google.com 的域 NS 的,说明你们的域名的污染方式和污染 Google 的方式还是有些不同的啊 ( ̄▽ ̄)"
mytsing520
2017-08-08 13:46:19 +08:00
@matsuz Google 没被完全污染,不然这事情后果严重
matsuz
2017-08-08 13:50:30 +08:00
@mytsing520 嗯,对 Google 的处理方式可能主要还是 IP 黑名单吧。
我刚才试了一下,Google 权威服务器还可以直接查询呢,而且好像也没被劫持
matsuz
2017-08-08 13:54:19 +08:00
。。我错了,DNS 报文进入大陆的网络的时候应该确实是被劫持了,不过 google\.com 域里面不是每个域名都会被劫持的
eben
2017-08-08 16:48:25 +08:00
楼主的 cdn 系统啥时候上线开卖
holinhot
2017-08-09 11:01:02 +08:00
@matsuz 可以返回 NS 记录,如果你域名有 MX 记录的情况下
holinhot
2017-08-09 11:02:43 +08:00
@matsuz 大陆的根服务器仅限 CN 域名。
而且就算 CN 域名同样要过 root-servers.netroot-servers.net 中国没有。
holinhot
2017-08-09 11:08:26 +08:00
@eben 卖这个?
holinhot
2017-08-09 11:15:19 +08:00
@Devmingwang

如果像根查询的时候不返回 NS,伪造根服务器直接返回 A 记录 IP,这样不就彻底封死。直接跳过 NS 查询那个步骤。
holinhot
2017-08-09 11:21:59 +08:00
@matsuz 直接伪装根服务器返回了假的 udp 包,能直接返回 A 记录,根本不需要向 NS 查询
matsuz
2017-08-09 13:10:44 +08:00
@holinhot

#12 我在 http://www.root-servers.org 上看到的是中国大陆有 5 台根,这个应该并不是指 CN 顶级域的权威服务器

#11 #14 那你这个可能是只针对了 A 记录进行了污染,可能是通过劫持 DNS 响应包实现的。如果是这样的话,这个估计不好解决了
matsuz
2017-08-09 13:12:33 +08:00
@holinhot 试试换个子域名看看
txydhr
2017-08-11 07:12:57 +08:00
向海外任何一个 IP 请求(或者从海外向境内 ip 请求)都会被 gfw 抢答,不管是请求的是 a 记录,ns 记录,还是 mx 记录。。防火墙没有污染 google.com ,污染的是 www.google.com 这个子域名。。正常向根服务器查询 www.google.com 的 a 记录,根服务器会返回 google.com 的 ns 记录。。然而防火墙直接伪装抢答了一个错误的 a 记录,isp 的 dns 直接将这个错误的 a 记录缓存下来返回给用户。。。我测试请求 www.google.com 的 mx 记录也会被污染的。。。
matsuz
2017-08-11 08:44:16 +08:00
@txydhr 是的,入境的 DNS 数据包都会被检测一遍。但是是发现请求了特定的一些域名才会抢答(或劫持?)
txydhr
2017-08-11 14:10:17 +08:00
@matsuz 是的 估计为了提高性能,防火墙不区分源 IP 是境外还是境内(入境还是出境),也不管目标 ip 是否有效。。只要发往 53 端口的 udp 包通过 gfw 时。。匹配上特定域名直接抢答。。毕竟抢答你得速度快。。比如你在境外向国内任何一个 ip 地址查询那些域名,都可以收到被污染的解析结果。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/381301

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX