一个可以避免dns查询污染的工具

概述

dns查询的时候总是受到gfw的污染,一种污染的方式是gfw抢答一个假的ip地址给dns,因为dns只接受响应最快的结果,所以回答比较慢
的真实ip被丢弃,没有被返回。

实现避免dns污染

通过wireshark抓包知道了gfw污染的原理,所以我写了一个工具,在中国不用代理即可得到响应比较慢的真实ip.

简单说明下:

dns污染的一种方式是当我们进行dns查询时,gfw进行抢答,给一个错误的ip地址,dns只会返回响应最快的ip,
这样到达比较晚的正确ip被抛弃,实现了gfw的污染。

利用抓包可以得到dns响应结果,包括了gfw抢答的假ip和达到比较晚的正确ip。分析抓包结果可以看到我们查询的dns尾部带有OPT, gfw抢答的假ip尾部没有OPT, 而dns返回比较晚的正确(可能是正确的?限于没有使用cdn的网站)ip尾部带有OPT. (大家可以用wireshark抓包看下)

所以我写了一个工具用于获取到达比较晚的dns响应结果,即得到正确的dns返回结果。(不需任何代理,正常操作)

工具地址: https://github.com/mkzpd/getCorrectDnsResult

经测试一些知名网站:

google.com可以返回真实ip地址(即在国外主机机器上浏览器中输入得到的ip地址直接打开google页)

facebook.com同样可以返回真实ip地址

youtube.com返回的ip地址在国外主机机器上浏览器中打开的是google首页(可能是因为youtube属于G家的?)

twitter.com返回的ip地址在国外主机机器上浏览器中打开的是空白页,这个ip地址和在国外主机机器上
ping twitter.com显示的ip地址一样(可能是因为twitter用了cdn ?)

ebay.com返回的ip地址在国外主机机器上浏览器中打开的是 https://www.ebay.com/n/error (?????)

baidu.com返回ip地址在国外主机机器上浏览器中打开的是百度首页

zhihu.com返回ip地址在国外主机机器上浏览器中打开显示的是提示信息,不是知乎首页

douban.com返回ip地址在国外主机机器上浏览器中打开显示的是提示信息,不是豆瓣首页(可能是与知乎,twitter一样用了cdn ???)

目前这个工具还不是太完美,欢迎大家给出意见和评论。