В Hetzner Cloud с Debian и Ubuntu я заметил, что IPv6 по умолчанию имеет предпочитаемое значение 0 секунд. Таким образом, он «устарел» и приводит к проблемам при добавлении еще одного inet6, поскольку приоритет отдается нерекомендуемому ipv6.
root@debian-2gb-nbg1-1:~# ip -6 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2a01:4f8:c2c:6daa::1/64 scope global deprecated
valid_lft forever preferred_lft 0sec
inet6 fe80::9400:ff:fe2d:6848/64 scope link
valid_lft forever preferred_lft forever
Вот конфиг:
root@debian-2gb-nbg1-1:~# cat /etc/network/interfaces.d/50-cloud-init.cfg
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
dns-nameservers 213.133.99.99 213.133.98.98 213.133.100.100
auto eth0:0
iface eth0:0 inet6 static
address 2a01:4f8:c2c:6daa::1/64
gateway fe80::1
post-up route add -net :: netmask 0 gw fe80::1%eth0 || true
pre-down route del -net :: netmask 0 gw fe80::1%eth0 || true
Где это 0sec
происходит от?
Решение - не использовать виртуальный интерфейс для IPv6:
root@debian-2gb-nbg1-1:~# cat /etc/network/interfaces.d/50-cloud-init.cfg
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
dns-nameservers 213.133.99.99 213.133.98.98 213.133.100.100
iface eth0 inet6 static
address 2a01:4f8:c2c:6daa::1/64
gateway fe80::1
post-up route add -net :: netmask 0 gw fe80::1%eth0 || true
pre-down route del -net :: netmask 0 gw fe80::1%eth0 || true
Тогда не будет проблем с предпочтительным_lft и IPv6 не будет помечен как устаревший.
root@debian-2gb-nbg1-1:~# ip -6 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2a01:4f8:c2c:6daa::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::9400:ff:fe2d:6848/64 scope link
valid_lft forever preferred_lft forever