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

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

我有一台在 VMWare 虚拟机中运行 Red Hat 6.3 Enterprise 的服务器。服务器和互联网之间有一个 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、偏移量 0、标志 [DF]、proto UDP(17)、长度 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、偏移量 0、标志 [DF]、proto UDP(17)、长度 63)
    192.168.1.12.54835 > 200.196.66.30.domain:[坏 udp cksum 4e62!] 8028+ AAAA?www.google.com.br。(35)
14:15:15.362122 IP(tos 0x0、ttl 61、id 25375、偏移量 0、标志[无]、proto UDP(17)、长度 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。[4m47s] A 74.125.234.184,www-cctld.l.google.com。[4m47s] A 74.125.234.191,www-cctld.l.google.com。[4m47s] 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、偏移量 0、标志 [DF]、proto UDP(17)、长度 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、偏移量 0、标志[无]、proto UDP(17)、长度 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。[4m42s] A 74.125.234.191,www-cctld.l.google.com。[4m42s] A 74.125.234.183,www-cctld.l.google.com。[4m42s] 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、偏移量 0、标志 [DF]、proto UDP(17)、长度 63)
    192.168.1.12.54835 > 200.196.66.30.domain:[坏 udp cksum 4e62!] 8028+ AAAA?www.google.com.br。(35)
14:15:20.368486 IP(tos 0x0、ttl 61、id 25378、偏移量 0、标志[无]、proto UDP(17)、长度 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、偏移量 0、标志 [DF]、proto TCP(6)、长度 60)
    192.168.1.12.58407 > 74.125.234.191.http:标志 [S],cksum 0xa695(正确),seq 2103294767,win 14600,选项 [mss 1460,sackOK,TS val 499988127 ecr 0,nop,wscale 7],长度 0
14:15:20.370424 IP(tos 0x0、ttl 58、id 12210、偏移量 0、标志[无]、proto TCP(6)、长度 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 4016826562 ecr 499988127,nop,wscale 6],长度 0
[...]

第三行和第四行之间总是存在 5 秒的延迟。

不能nslookup使用或重现延迟,dig所以dig +dnssec我没有主意。

有谁知道可能是什么问题吗?

答案1

这种情况发生在双栈 IPv4/IPv6 环境中,其中执行 DNS 查找的机器在同一个套接字上发送 AAAA 和 A 记录请求,期望收到两个回复。这是默认行为适用于较新版本的 glibc。但是 Juniper 防火墙在收到第一个回复后就断开了连接。

Juniper 知识库中有一篇文章介绍了如何配置防火墙来解决此问题

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

options single-request-reopen

通过打开两个连接来查找 AAAA 和 A 记录,此方法可以解决防火墙损坏的问题。

相关内容