Ubuntu 默认为 IPv6,应该默认为 IPv4

Ubuntu 默认为 IPv6,应该默认为 IPv4

Ubuntu 16.04.5 的内核为 4.4,以前运行正常:默认使用 IPv4。自从更改为内核 (hwe) 4.15 后,它默认使用 IPv6。

它具有通过 Tunnelbroker 提供的 IPv6,由路由器广播。

现在默认为 IPv6:curl ifconfig.co返回机器的 IPv6。仅curl -4 ifconfig.co返回所需的 IPv4 地址。(curl -6 ifconfig.co如预期的那样返回 IPv6)

$ ip rule list
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

$ ip -6 rule list
0:      from all lookup local
32766:  from all lookup main

$ ip route list
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.x

$ ip -6 route list
2001:470:x:999::9999:f6a dev eth0  proto kernel  metric 256  pref medium
2001:470:x:999::/64 dev eth0  proto kernel  metric 256  expires 42905sec pref medium
fe80::/64 dev eth0  proto kernel  metric 256  pref medium
default via fe80::2ac6:8eff:fe65:d117 dev eth0  proto ra  metric 1024  expires 1505sec hoplimit 64 pref medium

PS:例如,某些提供商仍报告 IPv4 curl ipinfo.io/ip。我使用 ifconfig.co 已有很长时间了,因此我不确定他们是否更改了设置(可能性较小)或者内核升级是否使 Ubuntu 更喜欢 IPv6。

我如何找出导致 IPv6 成为首选的原因?

答案1

将名称解析设置为首选 v4。对于 glibc 的 getaddrinfo 用户,请取消注释 /etc/gai.conf 中“首选 IPv4”注释后的优先行。带有 IPv4 /96 的那个。

答案2

要优先使用 IPv4 而不是 v6,您只需在 /etc/gai.conf 文件中删除注释或添加以下行即可:

优先级 ::ffff:0:0/96 100

相关内容