Chinaunix

标题: 淘宝主页dns解析IP过多使用TCP传输解析数据 [打印本页]

作者: dreamhunter    时间: 2010-07-06 10:05
标题: 淘宝主页dns解析IP过多使用TCP传输解析数据
本帖最后由 dreamhunter 于 2010-07-06 10:10 编辑

最近发现内网用户淘宝主页不能访问,但是旺旺可以登录;但是直接将计算机接到外网,访问淘宝主页正常;
从而判断问题肯定出在内部。
我们网络内部架有自己的dns转发服务器,如果从内部解析,发现其他域名解析正常,而唯独www.taobao.com不能正常解析;
nslookup结果(直接用外网):
Server:  cache3-ec
Address:  202.102.224.68

Non-authoritative answer:
Name:    www.gslb.taobao.com
Addresses:  121.14.24.251, 121.14.63.241, 121.14.63.251, 121.194.7.241
          121.194.7.251, 121.207.229.241, 121.207.229.251, 122.224.194.180, 122.224.194.190
          122.224.194.200, 122.224.194.210, 123.129.244.241, 123.129.244.251, 124.232.159.241
          124.232.159.251, 125.39.85.241, 125.39.85.251, 125.39.87.241, 125.39.87.251
          125.76.224.241, 125.76.224.251, 211.138.122.241, 211.138.122.251, 218.108.237.226
          220.181.78.241, 220.181.78.251, 58.215.106.241, 58.215.106.251, 61.55.165.241
          61.55.165.251, 61.158.239.241, 61.158.239.251, 61.189.3.241, 61.189.3.251
          114.80.174.241, 114.80.174.251, 114.80.182.241, 114.80.182.251, 118.123.202.241
          118.123.202.251, 119.97.134.241, 119.97.134.251, 119.167.235.241, 119.167.235.251
          121.0.23.78, 121.0.23.86, 121.14.24.241
Aliases:  www.taobao.com
直接接到外网,用网通dns解析www.taobao.com可以正常解析,用netstat -an 查看发现解析时使用了tcp53,如下:
  TCP    222.22.222.222:2627    202.102.224.68:53      TIME_WAIT
防火墙规则对外只开放了udp53,没有开放tcp53,原来使用一直正常,查了一下资料,原来www.taobao.com解析出来的ip太多,导致报文过长,而UDP的报文最大长度为512字节;解析器发现后,将使用TCP重发request,TCP允许报文长度超过512字节。
修改防火墙规则,允许dns使用tcp传输即可。
作者: salmon5    时间: 2010-07-06 21:17
内网电脑发了DNS请求,UDP包从53端口出去了,TCP 53回不来,导致TIME_WAIT,不知是否这样理解?
UDP的DNS请求,TCP的返回包,不知怎么三次握手?楼主能不能附上内网电脑解析淘宝的包,让大家研究下?
“原来www.taobao.com解析出来的ip太多,导致报文过长,而UDP的报文最大长度为512字节”有没有相应的RFC?学习学习,谢谢。
作者: heut2009    时间: 2010-07-06 21:36
以前也听说dns有时要用tcp的,不过什么时候用,也没细研究,原来如此!
作者: LunarBull    时间: 2010-07-07 12:53
学习
作者: dreamhunter    时间: 2010-07-07 13:29
回复 2# salmon5


    UDP请求后,服务器发现返回的数据用UDP装不下,会给请求方用UDP发一个数据包,提示请求方用TCP请求解析,请求方使用TCP发起DNS请求,然后服务器再用TCP回复。
作者: salmon5    时间: 2010-07-07 19:55
原来如此,知道了谢谢分享
作者: qdwmail    时间: 2010-07-08 13:58
楼主真是个爱学习的人。
作者: itisthinktime    时间: 2010-07-08 17:37
RFC 1035有详解,关于DNS Over TCP
作者: chinalujw    时间: 2010-07-12 16:58
一起学习了。
作者: 印随    时间: 2010-07-14 13:31
版主对此贴有验证过吗?怎么直接就给了精华帖

是不是只有在河南才会出现这种情况?  我在北京,使用联通ADSL没有发现这样情况

麻烦楼主再验证一次!
作者: dream_land    时间: 2010-07-14 14:46
楼主适合搞工程研究,有前途~
作者: wenjianhn    时间: 2010-07-14 20:52
本帖最后由 wenjianhn 于 2010-07-14 20:57 编辑

回复 10# 印随


    DNS over UDP 有512字节的限制(并不是UDP报文的限制是512字节)
    DNS应答不超过512字节不会出现这种情况

  《TCP/IP详解 卷一》 p156也有提到
作者: 印随    时间: 2010-07-15 13:46
回复 12# wenjianhn


    我的意思是说淘宝DNS 返回列表真的有这么长吗?  我得不到这个完整列表
作者: ssffzz1    时间: 2010-07-16 07:35
版主对此贴有验证过吗?怎么直接就给了精华帖

是不是只有在河南才会出现这种情况?  我在北京,使用联通 ...
印随 发表于 2010-07-14 13:31



   
这个和使用的DNS服务器有一定的关系。既然放开TCP 53端口能解决问题,应该是楼主所说了
作者: ssffzz1    时间: 2010-07-16 19:21
LZ 抓个包上来吧
重启电脑 开抓包  访问taobao
作者: icyfish28    时间: 2010-07-19 16:07
参考资料
RFC 1035 - Domain names - implementation and specification:

4.2.1. UDP usage

Messages sent using UDP user server port 53 (decimal).

Messages carried by UDP are restricted to 512 bytes (not counting the IP
or UDP headers).  Longer messages are truncated and the TC bit is set in
the header.


UDP is not acceptable for zone transfers, but is the recommended method
for standard queries in the Internet.  Queries sent using UDP may be
lost, and hence a retransmission strategy is required.
  Queries or their
responses may be reordered by the network, or by processing in name
servers, so resolvers should not depend on them being returned in order.

The optimal UDP retransmission policy will vary with performance of the
Internet and the needs of the client
,...........................
作者: yxx608    时间: 2010-07-19 17:40
dig @202.102.224.68 www.taobao.com

; <<>> DiG 9.2.4 <<>> @202.102.224.68 www.taobao.com
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16509
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 3

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

;; ANSWER SECTION:
www.taobao.com.         228     IN      CNAME   www.gslb.taobao.com.
www.gslb.taobao.com.    4       IN      A       61.158.239.241

;; AUTHORITY SECTION:
gslb.taobao.com.        6006    IN      NS      gslbns2.taobao.com.
gslb.taobao.com.        6006    IN      NS      gslbns1.taobao.com.
gslb.taobao.com.        6006    IN      NS      gslbns3.taobao.com.

;; ADDITIONAL SECTION:
gslbns1.taobao.com.     341     IN      A       121.0.23.218
gslbns2.taobao.com.     3966    IN      A       115.124.17.70
gslbns3.taobao.com.     4028    IN      A       110.75.3.193

;; Query time: 9 msec
;; SERVER: 202.102.224.68#53(202.102.224.6
;; WHEN: Mon Jul 19 17:26:30 2010
;; MSG SIZE  rcvd: 185


用 202.102.224.68这个LDNS咋就返回一个地址?
作者: HiLoveS    时间: 2010-07-20 20:23
DNS首选UDP协议,当比如网络不稳定UDP常丢包时,或楼主的情况,就会采用TCP再查询DNS。所以,一般防火墙建议开放UDP 53和TCP 53端口。
作者: ssffzz1    时间: 2010-07-20 20:30
丢包切tcp的情况没见过
作者: sczjzy    时间: 2010-08-02 10:32
谢谢LZ,又累计了一个经验
作者: Puer_Tea    时间: 2010-08-02 10:53
这是给淘宝提了醒,  

建议TB 应该自己建立 组DNS 提供给tber 使用。
作者: ssffzz1    时间: 2010-08-02 11:01
这是给淘宝提了醒,  

建议TB 应该自己建立 组DNS 提供给tber 使用。
Puer_Tea 发表于 2010-08-02 10:53



    建议你直接提给淘宝。

就不理解和是否是自己的DNS有啥关系。
作者: panmeng2000    时间: 2010-08-02 11:59
淘宝在DNS前面加了防DDOS设备,当DNS请求达到阈值,会回DNS tc置位报文,而将UDP改为TCP,进而使用 safe reset 或者是cookie来保护服务器,所以使用的是TCP 53;
作者: silty    时间: 2010-08-02 14:18
这是给淘宝提了醒,  

建议TB 应该自己建立 组DNS 提供给tber 使用。
Puer_Tea 发表于 2010-08-02 10:53


淘宝使用的就是自己的DNS:
C:\>dig www.taobao.com +trace

; <<>> DiG 9.5.2-P4 <<>> www.taobao.com +trace
;; global options:  printcmd
.                       403579  IN      NS      g.root-servers.net.
.                       403579  IN      NS      f.root-servers.net.
.                       403579  IN      NS      b.root-servers.net.
.                       403579  IN      NS      j.root-servers.net.
.                       403579  IN      NS      h.root-servers.net.
.                       403579  IN      NS      c.root-servers.net.
.                       403579  IN      NS      d.root-servers.net.
.                       403579  IN      NS      m.root-servers.net.
.                       403579  IN      NS      a.root-servers.net.
.                       403579  IN      NS      l.root-servers.net.
.                       403579  IN      NS      k.root-servers.net.
.                       403579  IN      NS      i.root-servers.net.
.                       403579  IN      NS      e.root-servers.net.
;; Received 512 bytes from 202.98.96.68#53(202.98.96.6 in 421 ms

com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
;; Received 492 bytes from 192.228.79.201#53(b.root-servers.net) in 328 m

taobao.com.             172800  IN      NS      ns1.taobao.com.
taobao.com.             172800  IN      NS      ns2.taobao.com.
taobao.com.             172800  IN      NS      ns3.taobao.com.
;; Received 134 bytes from 192.26.92.30#53(c.gtld-servers.net) in 281 ms

www.taobao.com.         1800    IN      CNAME   www.gslb.taobao.com.
gslb.taobao.com.        86400   IN      NS      gslbns3.taobao.com.
gslb.taobao.com.        86400   IN      NS      gslbns1.taobao.com.
gslb.taobao.com.        86400   IN      NS      gslbns2.taobao.com.
;; Received 169 bytes from 121.0.23.188#53(ns3.taobao.com) in 93 ms


淘宝在DNS前面加了防DDOS设备,当DNS请求达到阈值,会回DNS tc置位报文,而将UDP改为TCP,进而使用 safe re ...
panmeng2000 发表于 2010-08-02 11:59


这个答案,额~~~
协议规定,当DNS应答报文长度超过512字节时,只返回前512字节内容,同时将报文flags TC字段设置为1,即请求客户端使用TCP协议发起查询。
作者: Puer_Tea    时间: 2010-08-02 15:26
地址 没有 8。8。8。8 的好记。。。
作者: ssffzz1    时间: 2010-08-02 16:00
唉,越学越糊涂了都。
作者: staryang01_cu    时间: 2010-08-12 12:30
怎么我在windows下,解析www.taobao.com只有一个地址?
作者: 程序c    时间: 2010-08-14 12:49
谢谢楼主,受教了
作者: night85    时间: 2010-08-14 23:29
比较实用的东西,谢谢分享
作者: yuhuohu    时间: 2010-08-23 15:54
我一直以为只有dns主辅之间才走tcp 53
作者: molecar    时间: 2010-08-24 01:01
楼主的二维码解码内容:Open like ari,Free like bird,Dreamhunter
作者: personalsea    时间: 2010-08-25 17:05
学习了{:3_198:}
作者: will_smith_sw    时间: 2010-08-27 19:18
学习了。TB的问题。。。另外返回这么多IP有啥用呀?
作者: ninjiakoo    时间: 2010-09-01 09:09
学习
作者: pucan1234    时间: 2010-09-02 11:57
返回地址做服务器负载均衡呀, 因为DNS应答结果是轮询的.
另外淘宝自己建DNS也没用,  那只是授权DNS.
作者: obsd178    时间: 2010-09-02 19:14
进来学习一下
作者: fire-phoenix    时间: 2010-09-07 22:45
Taobao的这一方面在负载均衡和dns解析还有很大的优化空间。应多学习一下baidu, sina, 163
作者: wss8848    时间: 2010-09-16 17:41
C:\Documents and Settings\Administrator>nslookup www.taobao.com
Server:  ns1.sdqdptt.net.cn
Address:  202.102.134.68

Non-authoritative answer:
Name:    www.gslb.taobao.com
Addresses:  123.129.244.241, 123.129.244.251
Aliases:  www.taobao.com


青岛网通
作者: jsw7001    时间: 2010-09-22 19:37
不是吧,dns服务器之间用tcp 53的吧
作者: pinna_angel    时间: 2010-10-22 10:56
学习了,丰富知识。:wink:
作者: eennTNT    时间: 2010-10-27 16:29
学习了
作者: crystalxyy    时间: 2010-11-02 09:29
那为什么以前一直正常,到现在才不可以呢?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2