防火墙后面的 RHEL 6.3 上的 DNS 解析超时

Rôm*_*con 2 domain-name-system timeout tcpdump dig nslookup

我有一台在 VMWare 虚拟机中运行 Red Hat 6.3 Enterprise 的服务器。服务器和 Internet 之间有一个瞻博网络 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 q: 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 秒] 74.125.234.183 纳秒: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] 216.239.32.10,ns2.google.com。[3d23h47m54s] 216.239.34.10,ns3.google.com。[3d21h48m53s] 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 q: 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。[4m42s] 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] 216.239.32.10,ns2.google.com。[3d23h47m49s] 216.239.34.10,ns3.google.com。[3d21h48m48s] 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] 216.239.32.10,ns2.google.com。[3d23h47m49s] 216.239.34.10,ns3.google.com。[3d21h48m48s] 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,sack4297ts length,sack4297ts]
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: Flags [S.], cksum 0x2a65 (正确), seq 1378505609, ack 2103294768, win 14180,8crnos,860ks,800ks,8600,800,800,800,800,000 ], 长度 0
[...]

第三行和第四行之间的 5 秒延迟始终发生。

无法使用nslookup,dig或重现延迟dig +dnssec,所以我没有想法。

有没有人知道可能是什么问题?

Mic*_*ton 6

这发生在双栈 IPv4/IPv6 环境中,其中执行 DNS 查找的机器在同一套接字上发送对 AAAA 和 A 记录的请求,期望收到两个回复。这是相对较新版本的 glibc 的默认行为。但是,瞻博网络防火墙会在第一个回复返回后断开连接。

瞻博网络知识库中有一篇文章描述了如何配置防火墙以解决此问题

正如@BMDan 所指出的,您还可以将该行添加到/etc/resolv.conf

options single-request-reopen
Run Code Online (Sandbox Code Playgroud)

这可以通过打开两个连接来查找 AAAA 和 A 记录来解决损坏的防火墙行为。