prdns
prdns copied to clipboard
Purified DNS: a CDN friendly and anti-pollution DNS forwarder server that does not rely on GeoIP/GeoDomain db.
hi. 在mac上。 yudeMacBook-Air:~ brite$ gem install prdns ERROR: Loading command: install (LoadError) dlopen(/usr/local/Cellar/ruby/2.6.3/lib/ruby/2.6.0/x86_64-darwin16/openssl.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib Referenced from: /usr/local/Cellar/ruby/2.6.3/lib/ruby/2.6.0/x86_64-darwin16/openssl.bundle Reason: image not found - /usr/local/Cellar/ruby/2.6.3/lib/ruby/2.6.0/x86_64-darwin16/openssl.bundle ERROR: While executing...
第一次查询www.google.com的ip结果为31.13.73.1 第二次查询www.google.com的ip结果为31.13.73.1 第三次查询www.google.com的ip结果为172.217.27.132 `root@iZwz9d1rjhrzzxa4lsoi93Z:~# dig www.google.com @127.0.0.1 -p 5400 ; DiG 9.10.3-P4-Debian www.google.com @127.0.0.1 -p 5400 ;; global options: +cmd ;; Got answer: ;; ->>HEADERHEADERHEADER
想法交流
看到[你的贴子](https://www.v2ex.com/t/649297),可以说是英雄所见略同。大概在一年前根据相似的原理写了一个防DNS污染的小项目。 具体的内容可以参考我这篇博文:https://blog.bgme.me/posts/some-ideas-about-anti-pollution-dns-server/ 这篇博文写的有一点早,再加上后来GFW的DNS污染模块做了一些升级(对于AAAA请求,也会返回虚假的AAAA纪录,而不是像博文中写的直接返回A纪录),把项目简单重写了一下。所以看博文时,防火墙缺陷一节看完之后就不用再向下看了。(等一下会对该博文进行一下更新) 大概看了一下项目的源码,感觉可能会存在以下问题: 问题一:上面v友所说的对于泛解析不适用,无法区分该域名是泛解析域名还是被GFW污染的域名。 对于这个问题可以采用我博文中的方法,向境外一未开放53端口的主机发送DNS请求来解决。 问题二:其实是问题一的衍生,鉴于国内某些运营商的DNS劫持行为(甚至直接劫持53端口),如果其对 ``NXDOMAIN`` 返回有效的A纪录或AAAA纪录的话,那么你的项目就没有什么用了。方法一中的解决办法也受到很大的限制。 这个一个可能的解决方法是,向境外未开放53端口的主机发送DNS时,不要请求A、AAAA纪录,而是请请求MX、TXT等纪录,并同时附加上 ``norecurse`` flag。如果在这种情况下收到A纪录或AAAA纪录的回复,即证明该域名已被DNS污染。 问题三:对于CNAME至被污染域名的域名无效。 举例说明:现有一域名 ``test.example.com`` CNAME至 ``www.google.com``。 那么你项目中的测试方法便对这样的域名无效,因为 test.example.com 并不存在于GFW的屏蔽列表之中,所以你构造的 ``ne-[timestamp].test.example.com`` 查询并不会得到GFW的伪响应。但由于其CNAME至被污染域名www.google.com,所以你最终得到的解析结果仍是被污染的。 对于第三个问题,说一个现实一点的例子,之前有一段时间 github头像加载不出来。 经过我的分析,问题大致如下: ``avatars*.githubusercontent.com`` 域名本身没有被屏蔽,但是由于被 CNAME 至了 ``github.map.fastly.net``...
若输入的域名不存在或者查询超时,这边就会发生错误 | Errno::ECONNRESET: An existing connection was forcibly closed by the remote host. - recvmsg(2) | → C:/Ruby27-x64/lib/ruby/2.7.0/socket.rb 444 | C:/Ruby27-x64/lib/ruby/2.7.0/socket.rb 444 | C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/async-io-1.27.3/lib/ async/io/generic.rb 216 | C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/async-io-1.27.3/lib/ async/io/generic.rb 62...