2.0.0版本现在可用了吗?
-m -l 参数怎么去掉了? -e 参数如何使用 "本地公网IP,远程服务器IP" ?
我试了下可以用 /usr/bin/chinadns -p 5354 -s 127.0.0.1:5300 -c /etc/chinadns_chnroute.txt -e 101.x.x.x,168.x.x.x
还没发布,目前还有一些问题。
-s 参数只能使用支持 ECS 的国外 DNS server, 并且不能使用 dns-forwarder 或者 ss-tunnel 之类的工具中转,所以基本只能用 8.8.8.8。
@aa65535 好吧,上面的127.0.0.1:5300的确是dns-forwarder提供的,我还以为能用了,应该是用了之后ecs特性就没了,dns-forwarder还不支持ecs打包tcp吧。
支持的,可能是 Google DNS 不支持 TCP 协议的 ECS。 测试 8.8.4.4 也不能正常工作。
@aa65535 那安卓那边也不能正常工作吗,我看他们好像也用了ecs并且还是tcp
https://github.com/shadowsocks/shadowsocks-android/blob/master/mobile/src/main/scala/com/github/shadowsocks/BaseService.scala#L340
https://github.com/shadowsocks/shadowsocks-android/blob/master/mobile/src/main/scala/com/github/shadowsocks/BaseService.scala#L358
@aa65535

Google DNS 应该是支持 TCP 协议的 ECS 吧,要不然不可能这么精确的,不加client解析到美国去了,加了就在国内了。
@suikatomoki 可能是数据包结构的问题,我目前没有去做调试,只是猜测。
@suikatomoki 因为 dig 默认带有一个空的 Additional record,目前 chinadns 是直接在后面追加 Additional record ,可能是这个原因导致 TCP 下 ECS 的支持出了问题。
使用 curl nslookup ping 发起的 DNS 请求倒是没有问题。
如果不是使用 dig 测试的话是可以搭配 dns-forwarder 使用的。
@aa65535 从2.0.0版本开始,DNS“分流”全靠ECS了吗?以前的思路不再采用了吗?旧版本还会维护吗?
@suikatomoki 是的,以前的思路不再采用了。
@aa65535 再问个问题, -y 设置 delay 是出于什么考虑
@suikatomoki 目前逻辑很简单,就这里.
@aa65535 我之前看到 @cokebar 解释说“ delay 等待时间: 默认值:0.3 为防止GFW的DNS污染抢答,而设置一个等待时间,请根据自己填写的国外DNS延迟值来填写,留下一定的裕度。GoogleDNS在国内延迟一般在100-200ms,留0.3比较合适。过大的值会造成DNS解析较大的延迟时间,过小的值可能导致无法接收正确的解析结果。” 所以不是很明白目前 -y 参数的必要性。
@suikatomoki 目前存在以下四种情况
- 国内 Client Subnet 返回国内 IP 地址, pass
- 国外 Client Subnet 返回国内 IP 地址, delay
- 国内 Client Subnet 返回国外 IP 地址, filter
- 国外 Client Subnet 返回国外 IP 地址, delay
1 与 3, 2 与 4 不会同时出现, 对于 fake answer 会在上面判断之前被检测出来并 drop.
上面的 delay 是针对国外 Client Subnet 的应答, 因为目前的策略是国内 Client Subnet 优先.
而 delay time 是可以小于 0.3s 的,因为现在的应答都是来自同一个服务器.

@aa65535 dig针对同一个域名(tieba.baidu.com)测试了十几次 发现有那么一两次返回的是国外 Client Subnet 应答的 得到了香港ip 其他得到了国内ip。
@suikatomoki 受限于上游 DNS,另外如果两个应答不是同时返回或者有一个丢包了,也会有这个情况。
@aa65535 嗯

谷歌DNS针对国内 Client Subnet 有时候返回国内的 有时候返回国外的 蛋疼
@suikatomoki 的确会这样,在 https://dns.google.com/query?name=tieba.baidu.com&type=A&dnssec=true&ecs=111.193.0.0 测试也是会偶尔返回香港 IP 的结果。
另外 -e 参数建议使用模糊化的 IP, 只要能大致定位对就行。
想要这样的 主从dns(同时支持设置多上游,ecs client ip) 主DNS(国内):119.29.29.29,119.28.28.28 ecs_ip:自己的公网ip/24 从DNS(国外):8.8.8.8,8.8.4.4,vps搭建的dns ecs_ip:自己的ss的ip/24 hosts列表,匹配直接返回ip 黑白名单: 白名单=dnsmasq_china_list可用+自定义 黑名单=gfwlist可用+自定义 白名单命中直接主dns解析,返回ip 黑名单命中直接从dns解析,返回ip 剩下的: 先向主dns发送请求解析,返回的ip如果匹配chnroute.txt直接返回ip,不匹配直接使用从dns解析,并返回ip(剩下的可能有更好的逻辑)
@aa65535 我之前好像看到google说,8.8.8.8并不一定保证接收ecs client ip,所以有时候并不准确,要准确获取需要google的https Dns proxy
OpenDNS是不是号称支持ECS但是实际并不支持?dig了一下返回里并没有相关的数据,和谷歌的返回有明显区别……
目前没法用。 Google DNS的ecs支持也不好。 TCP模式下面不可用。
2017年7月23日 21:51,Ian Li [email protected]写道:
OpenDNS是不是号称支持ECS但是实际并不支持?dig了一下返回里并没有相关的数据,和谷歌的返回有明显区别……
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/aa65535/ChinaDNS/issues/1#issuecomment-317254385, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AFKrOp65WKXgxBmDM_zTtpCiopkigWL5ks5sQ0_FgaJpZM4MpXQ-.
感觉有条件的话还是自己在远端部署 DNS 到 HTTPS-DNS 的代理靠谱……
XD 确实已经过去了快半年 Google DNS OpenDNS 还有新出来的IBM Quad9 DNS都无法做到很好的支持 不过已经算是还好了 我自己将这个版本的ChinaDNS部署到了Openwrt/LEDE 然后擅自修改了luci chinadns XD 应该没什么问题(吧). 拉了三个不同地区的朋友一起体验了三个月并且都是使用的8.8.8.8. 大概体验就是: 1.虽然现在TCP模式还是无法支持ecs,但是防火墙无法伪造ecs数据包,所以可以避免抢答和DNS污染. 2.中国移动对UDP 53端口的强制干扰也有所缓解 3.解析方面确实像www.qq.com,tieba.baidu.com这类的域名很容易被解析到香港的服务器,不过从实际体验上来讲不影响使用 4.视频网站比如bilibili,优酷等能够保证准确的解析,至少在我的体验中还未出现解析到国外服务器的情况
大致情况就是这样XD希望可以提供给开发者一定的参考
冒昧的问一下😅,目前这个版本现在能使用了吗 (使用 8.8.8.8)?