Ubuntu 16.04.5 с ядром 4.4 работал по назначению: IPv4 по умолчанию. После перехода на ядро (hwe) 4.15 по умолчанию используется IPv6.
Он имеет IPv6, доступный через Tunnelbroker, транслируемый маршрутизатором.
Теперь по умолчанию используется 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. Для пользователей getaddrinfo glibc: раскомментируйте строку приоритета после комментария «предпочитают IPv4» в /etc/gai.conf. Тот, у кого IPv4 / 96.