1
adspe 2013-04-06 18:13:23 +08:00
好主意。
|
3
jasontse 2013-04-06 19:31:07 +08:00 via iPad
为什么要在墙外搭建xdns这个门槛呢?用tcp请求8.8.8.8有什么缺点吗?
|
4
AstroProfundis 2013-04-06 19:35:40 +08:00
|
5
isayme OP @jasontse GFW可以监听到你与8.8.8.8的通信数据包,然后可以伪造数据包发给你,同样可以污染你。只是一般机器的DNS都是UDP报文,GFW可能现在只会污染UDP查询,没有处理TCP的DNS查询~
|
6
isayme OP @AstroProfundis 这个。。。我不懂CDN,难道墙外和墙内与8.8.8.8通信有什么不同么?
|
8
AstroProfundis 2013-04-06 19:54:54 +08:00
@isayme 唔...怎么说呢,很多CDN都是基于DNS查询时客户端所在的地理位置(一般应该是用来源IP判断,细节没有研究过)来返回相应地区最快的一个/一组IP的,比如你在天朝和在欧洲查询 google.com 出来的就不是同一个IP段的地址,再比如 iTunes 的下载加速也是基于类似的原理。
所以从境外发起查询,对应 xdns 的话就是从公共 DNS 服务器看来实际的查询是由 xdns 的服务端所在IP发起的,所以返回的IP是对于服务器来说最好的,而很多情况下这个IP对天朝用户来说就是个杯具... 另一方面,使用的公共 DNS 在海外的话,这台服务器本身缓存的IP数据就是上游(网站自己的服务器)经过优化过后最适合该地区的IP, 同理,美帝访问最快的节点从天朝过去的效果应该不难理解... 当然,可以通过选择中国附近,比如香港、台湾、日本等地的公共 DNS 服务器作为上游来一定程度改善这个问题,但是效果比起直接用本地 ISP 的服务器还是有一定差距,所以我感觉只是出于规避污染这一个目的的话,用 TCP 查询的效果应该是最好的,就像楼主之前也说到了的,因为用 TCP 的比例很小,基本也不用担心被干扰。(另外有个问题有疑惑,印象中 TCP 貌似是有验证的,真的可以像 UDP 那样简单的污染吗?) |
9
isayme OP @jasontse 可能目前没有做TCP的污染吧~ 毕竟TCP的包也是可以伪造的
@AstroProfundis 多谢科普CDN~ TCP有个握手包,但说到底还是简单的数据包,握手是为了验证确保对方在线(UDP是直接发包,不管对方在不在),所以GFW完全可以在你握手之后的TCP数据请求包之后给你回一个符合TCP协议头的报文,甚至可以直接回你一个FIN包,结束这次TCP通信。 |
10
jasontse 2013-04-06 20:15:51 +08:00 via iPad
@AstroProfundis tcp污染我目前只想到一种方法 就是nat转发到另一台服务器 挺暴力的
|
11
AstroProfundis 2013-04-06 20:19:41 +08:00
|
12
jasontse 2013-04-06 20:30:17 +08:00 via iPad
@AstroProfundis nat有一个致命的缺点它会暴露后面递归服务器的IP地址 从域名的ns服务器上就可以查到:-)
|
13
isayme OP @AstroProfundis 貌似还真可以直接改个端口就行。。。。虽然是同样的报文,但是估计GFW没有那么智能,对DNS它只会管53端口的。。
|
14
isayme OP @AstroProfundis 又想了下,如果用53以外的端口,那么本地的服务端和墙外的服务端就要开不同的监听端口(如开54端口,那么本地还是53,对外连54,而墙外的开54端口,对外连53端口),这样反而会导致配置项多。
|
15
fqrouter2 2013-04-07 10:43:30 +08:00
我在此文 (http://fqrouter.tumblr.com/fqrouter) 中详细描述了DNS的问题
非标准端口: 工作正常 DNS over TCP: 只是一般不屑于封你, dig +tcp @8.8.8.8 dl.dropbox.com 你试试看 丢弃错误的应答: 工作正常 |
16
AstroProfundis 2013-04-07 11:17:07 +08:00
|
17
powerfj 2013-04-07 14:36:06 +08:00
哥用nodejs做了一个dnsproxy+socket5proxy,proxy里面设置哪些域名被墙了,如果被墙的域名都到外面获取dns或者做socket5请求,facebook,twitter还有youtube都没问题..不敢多用,怕被封..
|
19
code4craft 2013-05-31 19:56:33 +08:00
gfw的DNS污染只是旁路一条错误结果,自己本地用个程序筛掉就行了,没有必要在墙外建DNS跳板的(至少在我这里的网络是这样),我写过一个本地DNS服务器做这个事:
github:https://github.com/code4craft/blackhole Java写的,主要代码在antipollution包里 博客:http://my.oschina.net/flashsword/blog/110276 |
20
isayme OP @code4craft 哈哈 有个人和我说西厢计划第三季也是类似的方法,你们的方法更有针对性~
|