Routing

Ubuntu 預設為 IPv6,應預設為 IPv4

  • December 23, 2021

帶有核心 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

PS:一些提供商仍然報告 IPv4,例如curl ipinfo.io/ip。我已經使用 ifconfig.co 很長時間了,所以我不確定他們是否更改了設置(不太可能)或者核心升級使 Ubuntu 更喜歡 IPv6。

如何找出導致首選 IPv6 的原因?

將名稱解析設置為首選 v4。對於 glibc 的 getaddrinfo 的使用者,取消 /etc/gai.conf 中“prefer IPv4”註釋後的優先行的註釋。帶有 IPv4 /96 的那個。

要更喜歡 IPv4 而不是 v6,您可以取消註釋或在 /etc/gai.conf 文件中添加以下行:

優先級::ffff:0:0/96 100

引用自:https://serverfault.com/questions/923560