Похоже, что когда dhclient работает на eth0, я получаю IPv4-адрес от DHCP-сервера и IPv6-адрес Scope: Link, прикрепленный к eth0:
inet6 addr: fe80::a00:27ff:fed0:4d41/64 Scope:Link
Но я не вижу из dhclient-script, как добавляется этот адрес. На другом интерфейсе со статическим IP-адресом я хотел бы добавить ссылку на локальный IPv6-адрес, и мне было интересно, есть ли общая команда для этого без знания Mac.
Редактировать:
Похоже, что ядро назначает локальный адрес ссылки, когда вы выполняете «ip link set dev ethX up» или «ifconfig ethX up». Однако в моем случае у меня был кабель, подключенный к интерфейсу с DHCP, и ни один кабель не был подключен к интерфейсу, который я настраивал статически. Не могу проверить до понедельника, но я предполагаю, что ядро не назначает интерфейсу локальные адреса ссылок, если ссылки нет.
Локальные адреса ссылок берутся из MAC-адреса устройства. Они автоматически генерируются как часть запуска интерфейса. Автоконфигурация включает в себя процесс обнаружения, чтобы гарантировать уникальность адреса в сети.
Аналогичный процесс используется для автоматической настройки маршрутизируемых адресов, когда доступно объявление маршрутизатора. Эти адреса могут периодически обновляться для обеспечения конфиденциальности.
RFC 4862 определяет процессы, которым необходимо следовать.
Нашел! Этой команды недостаточно:
ifconfig eth0 up
Вместо этого я должен сделать:
ifconfig eth0 up
sysctl -w net.ipv6.conf.eth0.disable_ipv6=0
Только последний восстанавливает локальный адрес ссылки IPv6 на eth0.
Другими словами, в моем дистрибутиве где-то спрятан код, который динамически изменяется. net.ipv6.conf.eth0.disable_ipv6
каждый раз, когда его просят включить или выключить сеть. Ваш пробег может отличаться.
Я разобрался с этим благодаря простому:
sysctl -a | grep ipv6