官网URL:https://github.com/shadowsocks/ChinaDNS
作者名字:Clowwindy
作者URL:https://github.com/clowwindy
传统上人们用国外的 DNS 解析来解决dns被污染的问题,但是如果所有DNS请求都走国外DNS server,国内有些网站(如微博)在海外有服务器,就会比较慢,且遇到了流氓 ISP 对 DNS 投毒的话, 即使换了 DNS 服务器也解析不到正确的 IP 地址。ChinaDNS 保证的就是国内域名能解析成国内IP,国外域名解析成国外IP。原理是通过国内 IP 地址段来判断是该用国内的解析还是国外的解析。如此简单的原理确有奇效!
特别是如果你想要在路由器上自动爬梯子!
你需要两个软件 shadowsocks 和 ChinaDNS.
Shadowsocks 开启 ss-redir 做透明代理,还需要开启 ss-tunnel 作 UDP 转发;然后在 ChinaDNS 上设置上游dns查询服务器,分别设置一个国内的dns和 ss-tunnel 作为国外dns。此时在路由器里将所有 dns 查询转发到 ChinaDNS 上即可。如果再使用 DNSmasq 作为 dns 服务器就完美了。这样 DNS 查询的流程就是: dnsmasq -> ChinaDNS -> ss-tunnel -> 国外DNS服务器(e.g: 8.8.8.8)。
注意,ss-tunnel 服务需要你的 SS 服务器端开启了 UDP Relay 功能。假设你的路由器地址是 192.168.1.1, ss-tunnel 的端口是 5300, 可以通过下面的命令测试 ss-tunnel 是否联通:
dig @192.168.1.1 -p 5300 google.com
本教程写得很简单,只是记录了一下我在折腾过程中一些值得注意的点,我已经成功了, 如果你需要帮助,可以在此留言,我会考虑写一个完整点的教程。