Domain-Name-System

防火牆後 RHEL 6.3 上的 DNS 解析超時

  • July 25, 2012

我有一台在 VMWare 虛擬機中執行 Red Hat 6.3 Enterprise 的伺服器。在伺服器和 Internet 之間有一個 Juniper SSG 5 防火牆。我正在嘗試診斷 DNS 查找超時是什麼樣子的,但恐怕我沒有這樣做所需的知識。

這是我執行以下操作時 tcpdump 的輸出$ wget www.google.com.br

$ tcpdump -i eth0 -n -vvv 不是埠 ssh

14:15:15.361010 IP (tos 0x0, ttl 64, id 8975, offset 0, flags [DF], proto UDP (17), length 63)
192.168.1.12.54835 > 200.196.66.30.domain: [bad udp cksum f4e1!] 47797+ A? www.google.com.br。(35)
14:15:15.361195 IP (tos 0x0, ttl 64, id 8976, offset 0, flags [DF], proto UDP (17), length 63)
192.168.1.12.54835 > 200.196.66.30.domain: [bad udp cksum 4e62!] 8028+ AAAA? www.google.com.br。(35)
14:15:15.362122 IP (tos 0x0, ttl 61, id 25375, offset 0, flags [none], proto UDP (17), length 283)
200.196.66.30.domain > 192.168.1.12.54835:[udp sum ok] 47797 問:A?www.google.com.br。4/4/4 www.google.com.br。[1m] CNAME www-cctld.l.google.com., www-cctld.l.google.com. [4 分 47 秒] A 74.125.234.184,www-cctld.l.google.com。[4 分 47 秒] A 74.125.234.191,www-cctld.l.google.com。[4 分 47 秒] A 74.125.234.183 ns:google.com。[20h11m12s] NS ns1.google.com., google.com. [20h11m12s] NS ns2.google.com., google.com. [20h11m12s] NS ns3.google.com., google.com. [20h11m12s] NS ns4.google.com。ar:ns1.google.com。[3d1h39m] A 216.239.32.10,ns2.google.com。[3d23h47m54s] A 216.239.34.10,ns3.google.com。[3d21h48m53s] A 216.239.36.10,ns4.google.com。[3d14h11m28s] A 216.239.38.10 (255)
14:15:20.365434 IP (tos 0x0, ttl 64, id 8977, offset 0, flags [DF], proto UDP (17), length 63)
192.168.1.12.54835 > 200.196.66.30.domain: [bad udp cksum f4e1!] 47797+ A? www.google.com.br。(35)
14:15:20.366657 IP (tos 0x0, ttl 61, id 25377, offset 0, flags [none], proto UDP (17), length 283)
200.196.66.30.domain > 192.168.1.12.54835:[udp sum ok] 47797 問:A?www.google.com.br。4/4/4 www.google.com.br。[55s] CNAME www-cctld.l.google.com., www-cctld.l.google.com. [4 分 42 秒] A 74.125.234.191,www-cctld.l.google.com。[4 分 42 秒] A 74.125.234.183,www-cctld.l.google.com。[4 分 42 秒] A 74.125.234.184 ns:google.com。[20h11m7s] NS ns4.google.com., google.com. [20h11m7s] NS ns2.google.com., google.com. [20h11m7s] NS ns3.google.com., google.com. [20h11m7s] NS ns1.google.com。ar:ns1.google.com。[3d1h38m55s] A 216.239.32.10,ns2.google.com。[3d23h47m49s] A 216.239.34.10,ns3.google.com。[3d21h48m48s] A 216.239.36.10,ns4.google.com。[3d14h11m23s] A 216.239.38.10 (255)
14:15:20.366760 IP (tos 0x0, ttl 64, id 8978, offset 0, flags [DF], proto UDP (17), length 63)
192.168.1.12.54835 > 200.196.66.30.domain: [bad udp cksum 4e62!] 8028+ AAAA? www.google.com.br。(35)
14:15:20.368486 IP (tos 0x0, ttl 61, id 25378, offset 0, flags [none], proto UDP (17), length 263)
200.196.66.30.domain > 192.168.1.12.54835: [udp sum ok] 8028 q: AAAA? www.google.com.br。2/4/4 www.google.com.br。[55s] CNAME www-cctld.l.google.com., www-cctld.l.google.com. [3m7s] AAAA 2800:3f0:4001:805::1017 ns:google.com。[20h11m7s] NS ns3.google.com., google.com. [20h11m7s] NS ns2.google.com., google.com. [20h11m7s] NS ns4.google.com., google.com. [20h11m7s] NS ns1.google.com。ar:ns1.google.com。[3d1h38m55s] A 216.239.32.10,ns2.google.com。[3d23h47m49s] A 216.239.34.10,ns3.google.com。[3d21h48m48s] A 216.239.36.10,ns4.google.com。[3d14h11m23s] A 216.239.38.10 (235)
14:15:20.368936 IP (tos 0x0, ttl 64, id 36272, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.12.58407 > 74.125.234.191.http: Flags [S], cksum 0xa695 (正確), seq 2103294767, win 14600, options [mss 1460,sackOK,TS val 499988127 ecr 0,nop,wscale 7], 長度 0
14:15:20.370424 IP (tos 0x0, ttl 58, id 12210, offset 0, flags [none], proto TCP (6), length 60)
74.125.234.191.http > 192.168.1.12.58407:標誌 [S.],cksum 0x2a65(正確),seq 1378505609,ack 2103294768,win 14180,選項 [mss 1430,sackOK,TS val 40168261627 secpr ],長度為 0
[...]

第三行和第四行之間的 5 秒延遲始終如一地發生。

無法nslookup使用,dig或重現延遲dig +dnssec,所以我沒有想法。

有沒有人知道可能是什麼問題?

這發生在雙棧 IPv4/IPv6 環境中,其中進行 DNS 查找的機器在同一個套接字上發送對 AAAA 和 A 記錄的請求,期望收到兩個回复。這是相對較新版本的 glibc 的預設行為。然而,瞻博網路防火牆在第一個回復返回後斷開連接。

Juniper 知識庫中有一篇文章描述瞭如何配置防火牆來解決此問題

正如@BMDan 指出的那樣,您還可以將該行添加到/etc/resolv.conf

options single-request-reopen

這通過打開兩個連接來查找 AAAA 和 A 記錄來解決損壞的防火牆行為。

引用自:https://serverfault.com/questions/411165