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

Gai*_*aia 5 routing ip ipv6 ip-routing ipv4

具有内核 4.4 的 Ubuntu 16.04.5 曾经按预期工作: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
Run Code Online (Sandbox Code Playgroud)

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

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

Joh*_*ald 3

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