anchorDNS,彻底解决 CHNRoutes 分流国内网站时 DNS 问题的一个本地 DNS Server (Java)

2015-07-19 23:02:25 +08:00
 tobyxdd

Github - https://github.com/tobyxdd/anchorDNS

懒得写所以下面内容直接复制README了... :)

anchorDNS

anchorDNS 是一个运行在本地的分流DNS服务器

这能干啥?

众所周知的 CHNRoutes 项目能够修改系统路由表使拨VPN后 中国IP依然直接连接,仅国外连接通过VPN以防止国内网站也通过VPN绕行。然而为了解决DNS污染,一般会让DNS解析全部走VPN到国外DNS服务器,因此上了CDN或有国外服务器的中国网站 依然会解析到国外或国内非最佳服务器降低访问速度。

anchorDNS 正是为解决此问题而设计,通过先从国内DNS解析域名,若发现是中国IP则直接返回结果,若非中国IP则改用境外DNS解析的方法 能够既完全保持国内网站的解析正确 又获得无污染的境外网站DNS查询结果。用户只需分别提供一个自己喜欢的国内DNS与国外DNS地址,与一个中国IP段的CIDR表(已自带)

另附"reverse"反模式,解释见下文

示例——
解析 www.baidu.com -> 查询114.114.114.114 -> 发现是中国IP -> 直接使用
解析 twitter.com -> 查询114.114.114.114 -> 发现非中国IP -> 抛弃结果查询8.8.8.8 -> 使用正确无污染结果

使用姿势

去 Release 下载最新版,解压后bin目录下 带参数运行 anchorDNS

参数详解——

usage: anchorDNS
 -a,--alternativeDNS <arg>   Specify the alternative DNS server.
 -c,--cidr <arg>             Specify the CIDR list.
 -d,--defaultDNS <arg>       Specify the default DNS server.
 -h,--help                   Show this help message.
 -r,--reverse                Check the alternative DNS first.

-a 指定国外DNS服务器
-d 指定国内DNS服务器
-c 指定中国IP CIDR表(可用本项目下的 **ChinaCIDR.txt** 或 [此处下载最新版][3])
-r 反模式:优先查询国外DNS 发现中国IP后再改用国内DNS **(不建议使用!)**

比如: anchorDNS -d 114.114.114.114 -a 8.8.8.8 -c ChinaCIDR.txt

然后设置机器的DNS服务器为 127.0.0.1 !

技术细节

使用 Netty 5.0 / dnsjava 处理DNS通信,Gradle构建,JDK1.6+

9419 次点击
所在节点    分享创造
12 条回复
tux
2015-07-20 00:26:21 +08:00
finally
Daniel65536
2015-07-20 02:28:53 +08:00
解析 twitter.com -> 查询114.114.114.114 -> 返回的随机fake ip恰好是国内的 怎么解决?
另外居然不同时请求国内国外,会拖慢速度的。
tobyxdd
2015-07-20 08:09:58 +08:00
@Daniel65536 fake ip不可能是国内的 不过确实应该同时请求国内外dns 之后版本改进
dopcn
2015-07-20 09:52:24 +08:00
“彻底解决 CHNRoutes 分流国内网站时 DNS 问题” 是指解决chnroutes 私有地址无法解析?
jiangzhizhou
2015-07-20 10:14:21 +08:00
可以跑在openwrt上么?目前发现有污染就是路由器ss才出现,直接Pac ss一般都没有发现dns污染。
tobyxdd
2015-07-20 10:58:26 +08:00
@dopcn 用chnroutes也会dns走vpn导致国内网站解析到国外节点 解决这问题的
tobyxdd
2015-07-20 10:58:48 +08:00
@jiangzhizhou 如果你能在wrt上跑java的话。。。
plqws
2015-07-20 12:07:14 +08:00
@jiangzhizhou 有一种曲线救国的方法,就是把路由器的DNS设置成你的内网IP,然后在你的PC上跑这个DNS服务器。
有个疑问就是路由器DNS充当的角色有点不明白。@tobyxdd
tobyxdd
2015-07-20 12:13:06 +08:00
@plqws 有些自带dns服务的路由默认会把dhcp clients的dns设成路由自己 走的是路由的解析
21grams
2015-07-20 20:54:10 +08:00
这不就跟chinadns是一样的嘛
qucklay
2015-07-20 21:40:56 +08:00
能说出和ChinaDNS的区别吗
kathylincn
2016-09-02 20:14:20 +08:00
可以增加不只设置 IP 。也可以设置端口吗?比如 114.114.114.114:53 或 202.48.72.85:443 之类的.因为有的 DNS 不是默认的 53 端口,带端口的话,程序不认。现在只能本程序设置端口,DNS 不能指定端口。很大程序上限制了自定义 SS

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

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

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

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

© 2021 V2EX