不可用的IPv4块禁止IPv6 dns查找

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

有时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地址映射到另一台服务器,IPv6networking应该作为回退。 但是,如果我不能解决任何主机名,我真的不能工作。

有没有可能使IPv6 DNS工作,但IPv4是否可用?

编辑:

在/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 

您将这种情况描述为“IPv4地址映射到另一台服务器”。 这是否意味着IPv4地址实际上从服务器#1中删除(从networking接口取消configuration),或者只是没有路由到系统?

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

解决的办法是找出哪个进程导致resolvconf config中的IPv4地址,以及哪个进程导致IPv6地址,并在/ etc / resolvconf / interface-order中切换