Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2.0.0版本现在可用了吗? #1

Open
ghost opened this issue Mar 26, 2017 · 25 comments
Open

2.0.0版本现在可用了吗? #1

ghost opened this issue Mar 26, 2017 · 25 comments
Labels

Comments

@ghost
Copy link

ghost commented Mar 26, 2017

-m -l 参数怎么去掉了?
-e 参数如何使用 "本地公网IP,远程服务器IP" ?

@ghost
Copy link
Author

ghost commented Mar 26, 2017

我试了下可以用
/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

@aa65535
Copy link
Owner

aa65535 commented Mar 26, 2017

还没发布,目前还有一些问题。

-s 参数只能使用支持 ECS 的国外 DNS server, 并且不能使用 dns-forwarder 或者 ss-tunnel 之类的工具中转,所以基本只能用 8.8.8.8

@ghost
Copy link
Author

ghost commented Mar 26, 2017

@aa65535 好吧,上面的127.0.0.1:5300的确是dns-forwarder提供的,我还以为能用了,应该是用了之后ecs特性就没了,dns-forwarder还不支持ecs打包tcp吧。

@aa65535
Copy link
Owner

aa65535 commented Mar 26, 2017

支持的,可能是 Google DNS 不支持 TCP 协议的 ECS。
测试 8.8.4.4 也不能正常工作。

@ghost
Copy link
Author

ghost commented Mar 26, 2017

@aa65535

qq 20170326184702

Google DNS 应该是支持 TCP 协议的 ECS 吧,要不然不可能这么精确的,不加client解析到美国去了,加了就在国内了。

@aa65535
Copy link
Owner

aa65535 commented Mar 26, 2017

@suikatomoki 可能是数据包结构的问题,我目前没有去做调试,只是猜测。

@aa65535
Copy link
Owner

aa65535 commented Mar 27, 2017

@suikatomoki 因为 dig 默认带有一个空的 Additional record,目前 chinadns 是直接在后面追加 Additional record ,可能是这个原因导致 TCP 下 ECS 的支持出了问题。

使用 curl nslookup ping 发起的 DNS 请求倒是没有问题。

如果不是使用 dig 测试的话是可以搭配 dns-forwarder 使用的。

@ghost
Copy link
Author

ghost commented Mar 27, 2017

@aa65535 从2.0.0版本开始,DNS“分流”全靠ECS了吗?以前的思路不再采用了吗?旧版本还会维护吗?

@aa65535
Copy link
Owner

aa65535 commented Mar 27, 2017

@suikatomoki 是的,以前的思路不再采用了。

@ghost
Copy link
Author

ghost commented Mar 27, 2017

@aa65535 再问个问题, -y 设置 delay 是出于什么考虑

@aa65535
Copy link
Owner

aa65535 commented Mar 28, 2017

@suikatomoki 目前逻辑很简单,就这里.

@ghost
Copy link
Author

ghost commented Mar 28, 2017

@aa65535
我之前看到 @cokebar 解释说“ delay 等待时间: 默认值:0.3 为防止GFW的DNS污染抢答,而设置一个等待时间,请根据自己填写的国外DNS延迟值来填写,留下一定的裕度。GoogleDNS在国内延迟一般在100-200ms,留0.3比较合适。过大的值会造成DNS解析较大的延迟时间,过小的值可能导致无法接收正确的解析结果。”
所以不是很明白目前 -y 参数的必要性。

@aa65535
Copy link
Owner

aa65535 commented Mar 29, 2017

@suikatomoki 目前存在以下四种情况

  1. 国内 Client Subnet 返回国内 IP 地址, pass
  2. 国外 Client Subnet 返回国内 IP 地址, delay
  3. 国内 Client Subnet 返回国外 IP 地址, filter
  4. 国外 Client Subnet 返回国外 IP 地址, delay

13, 24 不会同时出现, 对于 fake answer 会在上面判断之前被检测出来并 drop.

上面的 delay 是针对国外 Client Subnet 的应答, 因为目前的策略是国内 Client Subnet 优先.

而 delay time 是可以小于 0.3s 的,因为现在的应答都是来自同一个服务器.

@ghost
Copy link
Author

ghost commented Mar 29, 2017

screenshot_20170329-042829

@aa65535 dig针对同一个域名(tieba.baidu.com)测试了十几次 发现有那么一两次返回的是国外 Client Subnet 应答的 得到了香港ip 其他得到了国内ip。

@aa65535
Copy link
Owner

aa65535 commented Mar 29, 2017

@suikatomoki 受限于上游 DNS,另外如果两个应答不是同时返回或者有一个丢包了,也会有这个情况。

@ghost
Copy link
Author

ghost commented Mar 29, 2017

@aa65535
2017-03-29_115155

谷歌DNS针对国内 Client Subnet 有时候返回国内的 有时候返回国外的 蛋疼

@aa65535
Copy link
Owner

aa65535 commented Mar 29, 2017

@suikatomoki
的确会这样,在 https://dns.google.com/query?name=tieba.baidu.com&type=A&dnssec=true&ecs=111.193.0.0 测试也是会偶尔返回香港 IP 的结果。

另外 -e 参数建议使用模糊化的 IP, 只要能大致定位对就行。

@cjjdaq
Copy link

cjjdaq commented Jun 9, 2017

想要这样的
主从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(剩下的可能有更好的逻辑)

@cjjdaq
Copy link

cjjdaq commented Jun 9, 2017

@aa65535 我之前好像看到google说,8.8.8.8并不一定保证接收ecs client ip,所以有时候并不准确,要准确获取需要google的https Dns proxy

@techotaku
Copy link

OpenDNS是不是号称支持ECS但是实际并不支持?dig了一下返回里并没有相关的数据,和谷歌的返回有明显区别……

@aa65535
Copy link
Owner

aa65535 commented Jul 23, 2017 via email

@techotaku
Copy link

感觉有条件的话还是自己在远端部署 DNS 到 HTTPS-DNS 的代理靠谱……

@lrinQVQ
Copy link

lrinQVQ commented Dec 6, 2017

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希望可以提供给开发者一定的参考

@pexcn
Copy link

pexcn commented Mar 7, 2019

冒昧的问一下😅,目前这个版本现在能使用了吗 (使用 8.8.8.8)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants