Как получить стабильный адрес IPv6 в 16.04?

Как получить стабильный адрес IPv6 в 16.04?

У меня есть доменное имя, которое указывает на мой домашний сервер. В каждом релизе Ubuntu вплоть до Wily по умолчанию у меня был стабильный адрес EIU-64, который я мог использовать для своей записи AAAA. Однако после установки Xenial я, похоже, не получаю стабильный адрес по умолчанию.

joejoe@myserver:~$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:24:1d:d2:e3:f4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.101/24 brd 192.168.0.255 scope global enp2s0
       valid_lft forever preferred_lft forever
    inet6 2601:280:3068:2945:74ed:b303:6474:6e29/64 scope global temporary dynamic
       valid_lft 6965sec preferred_lft 3363sec
    inet6 2601:280:3068:2945:ac34:ea15:4340:29a4/64 scope global temporary deprecated dynamic
       valid_lft 6965sec preferred_lft 0sec
    inet6 2601:280:3068:2945:bdfd:6253:b07e:1308/64 scope global mngtmpaddr noprefixroute dynamic
       valid_lft 6965sec preferred_lft 6965sec
    inet6 fe80::dc3e:6127:bd4e:18b/64 scope link
       valid_lft forever preferred_lft forever

Как вы видите, все inet6адреса scope globalимеют ограниченный срок действия. Есть ли способ вернуть мой адрес EIU-64 или есть ли другой способ получить стабильный адрес, который я могу использовать в записи доменного имени?

решение1

Я только что понял это. Для каждого соединения в /etc/NetworkManager/system-connections/нужно задать следующее свойство:

[ipv6]
addr-gen-mode=eui64

NetworkManager в версии 16.04, по-видимому, устанавливает stable-privacyдля этого addr-gen-modeпараметра значение по умолчанию.

решение2

Другие ответы здесь немного неполны: изменение настроек NetworkManager не поможет, если вы неиметьone (что на самом деле является проблемой, см. ниже), а отключение расширений конфиденциальности IPv6 на самом деле не имеет к этому никакого отношения (опять же, если ваш предположительно стабильный адрес IPv6 меняется при каждой загрузке, удаление дополнительных адресов конфиденциальности не поможет).

Как подробно описано вэта тема, новая установка по умолчанию 16.04 имеет небольшую оплошность, если вы используете проводное соединение. NetworkManager автоматически генерирует «эфемерную» конфигурацию, которая отлично работает, но, ну, эфемерна. Это означает, что GUID, используемый для хэширования в предположительно согласованный адрес IPv6, не сохраняется, и поэтому вы получаете новый при каждой загрузке. Просто зайдя в NetworkManager, нажав «изменить» на проводном соединении и сохранив его без изменений, вы сгенерируете фактическую конфигурацию NM с сохраненным GUID, и поэтому вы будете получать тот же адрес IPv6 при каждой загрузке.

Этот адрес — адрес RFC7217 (криптографический хэш GUID, вашего префикса и т. д. и т. п.) — так что хотя он стабилен при каждой загрузке, он не тот, который напрямую включает ваш MAC-адрес в адрес. Если вам нужен один из этих адресов EUI64,этот другой ответ на этот вопросподробности как это изменить.

решение3

Ubuntu 16.04 и предыдущие релизы всегда по умолчанию использовали EIU-64 для меня, поэтому для серверов мне приходится его отключать. Я с удовольствием использую адрес конфиденциальности на своем рабочем столе.

Итак, вам нужно что-то вроде:

    sysctl -w net.ipv6.conf.all.use_tempaddr=0
    sysctl -w net.ipv6.conf.default.use_tempaddr=0
    sysctl -w net.ipv6.conf.default.use_tempaddr=0
    sysctl -w net.ipv6.conf.<devname>.use_tempaddr=0

Затем ifdown/ifup. Результат для меня, обратите внимание на связь MAC/IPv6:

$ ifconfig enp3s0 | egrep 'HWaddr|Global'
enp3s0    Link encap:Ethernet  HWaddr 74:d0:2b:90:8b:90  
          inet6 addr: 2501:300:d008:61c8:76d0:2bff:fe90:8b90/64 Scope:Global

Вы можете назвать конкретные интерфейсы, если вам нужно, чтобы это было включено на некоторых интерфейсах, а не на других. Вы можете просмотреть список с помощью:

$ sysctl -a | grep tempaddr

Я не рекомендую Network manager для производственных сервисов. Например, он не работает с другими, например, /etc/sysctl.conf. Если вы хотите сделать это, вам понадобится запись в /etc/networking/interfaces для статического адреса или автоматически настроенного. Я просто использую:

auto enp3s0 
iface enp3s0 inet dhcp
iface enp3s0 inet6 auto
pre-up modprobe ipv6

Конечно, регулируйте по вкусу.

Связанный контент