使用 TCP 查询 DNS,不能按运营商返回正确地址

2016-05-08 00:27:59 +08:00
 bazingaterry

坐标广州,运营商联通,一直在用 119.29.29.29 ,对于 114 DNS 相比,前者会将解析到南方一些 CDN ,而 114 会解析到山东之类的,前者更加靠近。

最近使用了 pdnsd 作为 DNS 缓存,由于众所周知的原因,使用 TCP 方式查询,这时候诡异的事情出来了,使用 TCP 方式查询,例如 www.qq.com 会解析到电信的 CDN 上面,然而 UDP 或者 114 则不会有这个问题。

dig @119.29.29.29 www.qq.com +tcp 结果

; <<>> DiG 9.8.3-P1 <<>> @119.29.29.29 www.qq.com +tcp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43918
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.qq.com.			IN	A

;; ANSWER SECTION:
www.qq.com.		285	IN	A	59.37.96.63
www.qq.com.		285	IN	A	14.17.42.40
www.qq.com.		285	IN	A	14.17.32.211

;; Query time: 409 msec
;; SERVER: 119.29.29.29#53(119.29.29.29)
;; WHEN: Sun May  8 00:25:04 2016
;; MSG SIZE  rcvd: 76

dig @119.29.29.29 www.qq.com 结果

; <<>> DiG 9.8.3-P1 <<>> @119.29.29.29 www.qq.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50450
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.qq.com.			IN	A

;; ANSWER SECTION:
www.qq.com.		123	IN	A	112.90.83.112

;; Query time: 17 msec
;; SERVER: 119.29.29.29#53(119.29.29.29)
;; WHEN: Sun May  8 00:25:59 2016
;; MSG SIZE  rcvd: 44

dig @114.114.114.114 www.qq.com +tcp 结果

; <<>> DiG 9.8.3-P1 <<>> @114.114.114.114 www.qq.com +tcp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37406
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.qq.com.			IN	A

;; ANSWER SECTION:
www.qq.com.		47	IN	A	112.90.83.112

;; Query time: 55 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Sun May  8 00:26:20 2016
;; MSG SIZE  rcvd: 44

dig @114.114.114.114 www.qq.com 结果

; <<>> DiG 9.8.3-P1 <<>> @114.114.114.114 www.qq.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53984
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.qq.com.			IN	A

;; ANSWER SECTION:
www.qq.com.		30	IN	A	112.90.83.112

;; Query time: 566 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Sun May  8 00:26:49 2016
;; MSG SIZE  rcvd: 44

同样地, V2EX 、七牛、又拍云的域名均有这个问题。虽然也不是什么严重问题啦,但是希望 119.29.29.29 的伙计们留意一下这个问题,我暂时就先用 114 啦~

8094 次点击
所在节点    DNS
19 条回复
mytsing520
2016-05-08 04:05:09 +08:00
这两家压根不会将用户 IP 丢给权威 DNS ,他们都是将他们自身的 IP 丢给了权威 DNS 然后抓结果返回,所以你解析结果不准确。
lslqtz
2016-05-08 04:34:59 +08:00
@mytsing520 那么哪家好一些呢?个人现在也在用这个。
lslqtz
2016-05-08 05:14:31 +08:00
114 的我以前在用,因为 dns 刷新缓存慢,因此改用 119 了
FlyingLion
2016-05-08 06:40:21 +08:00
如果楼主真的是广东省内的宽带用户,那基本上用不着纠结这些问题了!

广东省作为国内重要的骨干网交换节点,访问电信、联通、移动都不存在互联互通问题,所有国内数据流量都是在广东本地城域网内进行直连交换的。

其它省就没这种待遇了……
xofyarg
2016-05-08 08:02:56 +08:00
个人猜测,对于 119.29.29.29 这个 DNS 服务器, UDP 和 TCP 采用了不同的路径。可能 UDP 直接做了递归查询, TCP 只是做了个中继,转发到其他服务器查询。这样就导致了查询结果不一致。看 www.qq.com 的 UDP 和 TCP 查询结果,不象是同一个服务器返回的。

大多数的 DNS 服务器并不完全支持 TCP 。我能想到比较简单的办法是,列出一个自己常用的国内使用 CDN 业务的主域白名单,这些查询直接走 UDP 。
jasontse
2016-05-08 08:04:14 +08:00
@FlyingLion 现在直联点有 10 个,不止北上广有这种能力。
yexm0
2016-05-08 08:21:21 +08:00
@FlyingLion 广州互联点经常拥堵,特别是晚上的时候某些线路延迟能飙到上百 ms.
boboliu
2016-05-08 08:57:45 +08:00
同 LZ ,我这里用 udp 查询 www.qq.com 是 119.188.89.202;119.188.89.220 (都是济南联通), tcp 是 59.37.96.63;14.17.42.40;14.17.32.211 (深圳电信),但是 httpdns 结果和 udp 查询的结果是一样的。
LZ 可以试试 http://119.29.29.29/d?dn=www.qq.com
P.S.坐标济南,服务商联通
hzqim
2016-05-08 12:19:46 +08:00
用 pdnsd 来查询国内域名?楼主处女座吗?
容易被污染的才让 pdnsd 的 tcp 来查询,剩下的用运营商或者国内第三方的 DNS 来解析。
区别对待,其它的就不折腾了。
mytsing520
2016-05-08 13:13:32 +08:00
@lslqtz 目前国内没有一家公共 DNS 服务商有这种负责任的服务
qucklay
2016-05-08 17:57:17 +08:00
用 pdnsd 来查询国内域名?楼主处女座吗?
容易被污染的才让 pdnsd 的 tcp 来查询,剩下的用运营商或者国内第三方的 DNS 来解析。
区别对待,其它的就不折腾了。
youhwc
2016-05-08 18:03:11 +08:00
CDN 这类的 90%是根据 DNS-IP 对映地区 进行分发. 要想很准确,还是用上网服务商自带的.
JoeyChan
2016-05-08 18:10:31 +08:00
国内域名确实没必要 tcp ,被认证的黑名单才 tcp ,其他都 udp ,这样才有效率。
Lentin
2016-05-08 19:19:31 +08:00
白名单走运营商 dns
johnjiang85
2016-05-09 10:04:52 +08:00
目前 119.29.29.29 的 tcp 查询请求确实是走了转发的,通过 bgp 出口转发到了单独的服务器,没有区分各运营商的 IP ,导致解析到了默认。
johnjiang85
2016-05-09 10:05:17 +08:00
我们看看调整下方案,有进展再回复。
bclerdx
2016-05-11 23:42:43 +08:00
@FlyingLion 所以你的 DNS 选择了广东省省内了吧?
bclerdx
2016-05-11 23:51:55 +08:00
@boboliu 收藏了。
donglemon
2016-05-31 16:54:59 +08:00

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

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

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

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

© 2021 V2EX