我们已配置 dnsmasq 来缓存 DNS 响应,以缩短 DNS 响应时间。在仅配置 IPV4 上游服务器之前,它运行良好。
在具有 IPV4 和 IPV6 的不同环境中,IP 地址和 DNS 服务器详细信息由 DHCP 提供,DNS 解析不起作用。
该机器具有 IPV4 地址、一个 IPV4 dns 服务器和由 DHCP 配置的 3 个 IPV6 dns 服务器,在配置 IPV6 地址时出现问题,因此无法配置 IPV6 地址。因此,该设备在 eth0 中配置了一个 IPV4 地址、一个 IPV4 dns 服务器和 3 个 IPV6 dns 服务器。
尝试执行 时dig hostname
,一段时间后失败并显示“ Temporary failure in name resolution
”。实际上,IPV4 DNS 服务器可以访问,并且可以响应 DNS 查询(执行 时可以工作dig @IPV4server hostname
),但不知为何没有得到响应。
进一步检查数据包捕获,当dig hostname
请求时,dns 请求被发送到所有上游服务器,并且 IPV4 dns 服务器响应,而 IPV6 上游服务器无法访问。
有人可以澄清以下内容
- 根据 dnsmasq 手册页,当存在多个上游服务器时,它将仅向一个服务器发送 DNS 请求,直到
--all-servers
配置了选项。为什么在这种情况下请求会发送到所有服务器? - 当 IPV4 上游服务器回复答复时,为什么不考虑这一点并且 DNS 请求失败?
- dnsmaq 是否有任何顺序/偏好来选择 dns 服务器地址来转发请求。
下面是发送 DNS 请求时进行的 TCP 转储,显示 IPV4 上游服务器已经响应。
16:17:20.266462 IP 10.x.x.17.51705 > 10.x.x.20.domain: 15715+ A? facebook.com. (30)
16:17:20.266566 IP6 fe80::2d04:2479:e0a0:8677.60098 > 2001:x:x::x:20.domain: 15715+ A? facebook.com. (30)
16:17:20.266602 IP6 fe80::2d04:2479:e0a0:8677.60098 > 2001:x:x::x:22.domain: 15715+ A? facebook.com. (30)
16:17:20.266636 IP6 fe80::2d04:2479:e0a0:8677.60098 > 2001:x:x::x:34.domain: 15715+ A? facebook.com. (30)
**16:17:20.268080 IP 10.x.x.20.domain > 10.x.x.17.51705: 15715 1/0/0 A 157.240.22.35 (46) --> Response from IPV4 upstream server
16:17:25.271834 IP 10.x.x.17.51705 > 10.x.x.20.domain: 2104+ A? facebook.com.searchdomain1.lab. (41)
16:17:25.273270 IP 10.x.x.20.domain > 10.x.x.17.51705: 2104 NXDomain 0/1/0 (116)
16:17:25.273581 IP6 fe80::2d04:2479:e0a0:8677.60098 > 2001:x:x::x:20.domain: 1302+ A? facebook.com.searchdomain.com. (42)
16:17:25.273618 IP6 fe80::2d04:2479:e0a0:8677.60098 > 2001:x:x::x:22.domain: 1302+ A? facebook.com.searchdomain.com. (42)
16:17:25.273659 IP6 fe80::2d04:2479:e0a0:8677.60098 > 2001:x:x::x:34.domain: 1302+ A? facebook.com.searchdomain.com. (42)
16:17:30.278138 IP6 fe80::2d04:2479:e0a0:8677.60098 > 2001:x:x::x:20.domain: 1302+ A? facebook.com.searchdomain.com. (42)
16:17:30.278177 IP6 fe80::2d04:2479:e0a0:8677.60098 > 2001:x:x::x:22.domain: 1302+ A? facebook.com.searchdomain.com. (42)
16:17:30.278217 IP6 fe80::2d04:2479:e0a0:8677.60098 > 2001:x:x::x:34.domain: 1302+ A? facebook.com.searchdomain.com. (42)
编辑 1:今天再次尝试,现在节点获得了 IPv6 地址,但仍然无法访问 IPV6 服务器。可以看到具有 DNS 条目的 IPV4 服务器已响应,但命令仍然显示“连接超时;无法访问任何服务器”
09:07:16.348333 IP (tos 0x0, ttl 64, id 21050, offset 0, flags [DF], proto UDP (17), length 75)
10.115.153.176.nimspooler > 10.xx.xx.20.domain: [bad udp cksum 0xaf89 -> 0x29ec!] 36262+ A? s2.0583.proxy-s2-5.fmtest.lab. (47)
09:07:16.348415 IP (tos 0x0, ttl 64, id 18221, offset 0, flags [DF], proto UDP (17), length 75)
10.115.153.176.nimspooler > 10.xx.xx.109.domain: [bad udp cksum 0x804c -> 0x5929!] 36262+ A? s2.0583.proxy-s2-5.fmtest.lab. (47)
09:07:16.348493 IP6 (hlim 255, next-header UDP (17) payload length: 55) 2001:10:115:152::158:3.41736 > 2001:xx:xx::1:20.domain: [bad udp cksum 0x445d -> 0xad91!] 36262+ A? s2.0583.proxy-s2-5.fmtest.lab. (47)
09:07:16.348547 IP6 (hlim 255, next-header UDP (17) payload length: 55) 2001:10:115:152::158:3.41736 > 2001:xx:xx::1:20.domain: [bad udp cksum 0x445f -> 0xad8f!] 36262+ A? s2.0583.proxy-s2-5.fmtest.lab. (47)
09:07:16.348602 IP6 (hlim 255, next-header UDP (17) payload length: 55) 2001:10:115:152::158:3.41736 > 2001:10:10::1:34.domain: [bad udp cksum 0x4471 -> 0xad7d!] 36262+ A? s2.0583.proxy-s2-5.fmtest.lab. (47)
09:07:16.349109 IP (tos 0x0, ttl 63, id 33379, offset 0, flags [DF], proto UDP (17), length 91)
***10.xx.xx.109.domain > 10.115.153.176.nimspooler: [udp sum ok] 36262* q: A? s2.0583.proxy-s2-5.fmtest.lab. 1/0/0 s2.0583.proxy-s2-5.fmtest.lab. A 192.168.1.5 (63)***
09:07:16.349824 IP (tos 0x0, ttl 126, id 26992, offset 0, flags [none], proto UDP (17), length 150)
10.xx.xx.20.domain > 10.115.153.176.nimspooler: [udp sum ok] 36262 NXDomain q: A? s2.0583.proxy-s2-5.fmtest.lab. 0/1/0 ns: . SOA a.root-servers.net. nstld.verisign-grs.com. 2021080500 1800 900 604800 86400 (122)
[admin@fm-release ~]$ host -v s2.0583.proxy-s2-5.fmtest.lab
Trying "s2.0583.proxy-s2-5.fmtest.lab"
;; connection timed out; no servers could be reached