Routing
Ubuntu 預設為 IPv6,應預設為 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
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