Debian 7 w jaki sposób ustawia się lokalne adresy linków IPv6?

12

Wydaje się, że kiedy dhclient działa na eth0, otrzymuję adres IPv4 z serwera DHCP i adres IPv6 Scope: Link dołączony do eth0:

inet6 addr: fe80::a00:27ff:fed0:4d41/64 Scope:Link

Ale ze skryptu dhclient nie widzę, jak ten adres jest dodawany. Na innym interfejsie ze statycznym adresem IP chciałbym dodać link lokalny adres IPv6 i zastanawiałem się, czy istnieje ogólne polecenie, aby to zrobić bez znajomości mac.

Edycja:
Wygląda na to, że jądro przypisuje lokalny adres linku, gdy wykonasz „ip link set dev ethX up” lub „ifconfig ethX up”. Jednak w moim przypadku miałem kabel podłączony do interfejsu DHCP i żaden kabel nie był podłączony do interfejsu, który konfigurowałem statycznie. Nie mogę zweryfikować do poniedziałku, ale domyślam się, że jądro nie przypisuje do interfejsu lokalnych adresów łącza, jeśli nie ma łącza.

Aaron
źródło
2
Żaden z nich nie ma nic wspólnego z drugim.
Michael Hampton
2
Rozumiem, że. A jednak w wyniku uruchomienia dhclient otrzymujesz adres IPv6LL, ale po ustawieniu statycznego adresu IPv4 nie. Więc jakiś efekt uboczny polecenia wykonywanego przez dhclient ustawia to ...
Aaron,
1
Nie, nie otrzymujesz adresu lokalnego łącza IPv6 z uruchomionego programu dhclient.
Michael Hampton

Odpowiedzi:

7

Lokalne adresy linków są uzyskiwane z adresu MAC urządzenia. Są one generowane automatycznie w ramach podnoszenia interfejsu. Automatyczna konfiguracja obejmuje proces wykrywania, aby upewnić się, że adres jest unikalny w sieci.

Podobny proces stosuje się do automatycznej konfiguracji adresów routowalnych, gdy dostępna jest reklama routera. Adresy te mogą być okresowo odnawiane w celu zapewnienia prywatności.

RFC 4862 określa procesy, których należy przestrzegać.

BillThor
źródło
1
„Są one generowane automatycznie w ramach podnoszenia interfejsu”. Tak, właśnie tego szukam, kto to generuje automatycznie? Nie jest generowany automatycznie, gdy przypisujesz statyczny adres IPv4, ale dzieje się tak, gdy działa dhclient. Więc czy dhclient implementuje RFC 4862, czy jest to efekt uboczny jakiegoś polecenia w skrypcie dhclient? Jak mogę go replikować na interfejsie statycznym bez pisania własnej implementacji RFC 4862?
Aaron,
wydaje się, że jest automatycznie generowane przez jądro, patrz edycja powyżej.
Aaron,
6

Znaleziono to! To polecenie nie wystarczy:

ifconfig eth0 up

Zamiast tego muszę zrobić:

ifconfig eth0 up
sysctl -w net.ipv6.conf.eth0.disable_ipv6=0

Tylko ta ostatnia przywraca lokalny adres łącza IPv6 na eth0.

Innymi słowy, moja dystrybucja wydaje się mieć gdzieś ukryty kod, który dynamicznie zmienia się za net.ipv6.conf.eth0.disable_ipv6każdym razem, gdy jest proszony o podniesienie lub wyłączenie sieci. Twój przebieg może się różnić.

Dotarłem do sedna tego dzięki zwykłemu:

sysctl -a | grep ipv6
Marsz
źródło
Nawiasem mówiąc, nie rozumiem, dlaczego moja dystrybucja zmienia „disable_ipv6”: kiedy link zostanie wyłączony, robi to jakąkolwiek różnicę.
MarcH
Dotyczy to doskonale Ubuntu 16.04. Dzięki.
Cbhihe,