不可用的 IPv4 会阻止 IPv6 DNS 查找

不可用的 IPv4 会阻止 IPv6 DNS 查找

我在服务器 (#1) 上使用 IPv4 + IPv6。

有时 IPv4 地址会映射到另一台服务器(#2),因此 #1 无法通过 IPv4 访问,但仍然可以通过 IPv6 访问。

在这种情况下,IPv6 DNS 查找将不起作用。

$ ping6 mirror.ipv6.hetzner.de
unknown host

如果我禁用 IPv4 地址,一切都会正常运行。

$ ping6 mirror.ipv6.hetzner.de
PING mirror.ipv6.hetzner.de(2a01:4f8:0:a101::1:1) 56 data bytes
64 bytes from 2a01:4f8:0:a101::1:1: icmp_seq=1 ttl=60 time=0.469 ms

这怎么可能?如果 IPv4 地址映射到另一台服务器,IPv6 网络应该可以作为后备。但如果我无法解析任何主机名,我就无法使用它。

无论 IPv4 是否可用,是否有可能使 IPv6 DNS 正常工作?

编辑:

/etc/resolv.conf

$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 213.133.99.99
nameserver 213.133.100.100
nameserver 213.133.98.98
nameserver 2a01:4f8:0:a0a1::add:1010
nameserver 2a01:4f8:0:a102::add:9999
nameserver 2a01:4f8:0:a111::add:9898

路由:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         5.9.61.167      0.0.0.0         UG    100    0        0 eth0
5.9.61.167      0.0.0.0         255.255.255.255 UH    0      0        0 eth0

$ route -6
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
2a01:4f8:162:7ffe:1::2/128     ::                         U    1024 0     1 eth0
2a01:4f8:162:7ffe:6::/80       ::                         U    256 0     0 eth0
fe80::/64                      ::                         U    256 0     0 eth0
::/0                           2a01:4f8:162:7ffe:1::2     UG   1024 0     0 eth0
::/0                           ::                         !n   -1  1     6 lo
::1/128                        ::                         Un   0   1     5 lo
2a01:4f8:162:7ffe:6::2/128     ::                         Un   0   1   190 lo
fe80::5054:ff:fe3d:5f4c/128    ::                         Un   0   1     0 lo
ff00::/8                       ::                         U    256 0     0 eth0
::/0                           ::                         !n   -1  1     6 lo

答案1

您将情况描述为“IPv4 地址已映射到另一台服务器”。这是否意味着 IPv4 地址实际上已从服务器 #1 中删除(从网络接口取消配置)还是只是它没有路由到系统?

我问这个问题是因为 resolv.conf 中的顺序将首先尝试 IPv4,然后尝试 IPv6,所以当服务器“认为”它有 IPv4 时,它将通过 IPv4 发送一个数据包,并且永远不会看到答案(并且服务器#2 将忽略它)。

解决方案是找出哪个进程导致 resolvconf 配置中的 IPv4 地址以及哪个进程导致 IPv6 地址,然后在 /etc/resolvconf/interface-order 中切换它们

相关内容