IP

IPv6 Stateless Autoconfiguration

Automatyczna konfiguracja adresów IPv6 bez przydziału adresu przez DHCPv6.

SLAAC: bezstanowa autokonfiguracja adresu IPv6

W IPv4 urządzenie może otrzymać adres i inne parametry z DHCP, ale możliwa jest też konfiguracja ręczna. Po dołączeniu do sieci host może wysłać żądanie DHCP, a wybiera adres z puli, przekazuje go hostowi i utrzymuje dzierżawę. Jest to proces stanowy, ponieważ serwer przechowuje informacje o przydziale dla danego urządzenia.

IPv6 pozwala hostowi utworzyć adres na podstawie prefiksu ogłoszonego przez router i własnego identyfikatora interfejsu. Do samego utworzenia adresu SLAAC nie wymaga serwera DHCPv6. Poprawność adresu jest sprawdzana przez DAD. Host może utworzyć więcej niż jeden adres, a czasy preferred i valid sterują ich użyciem oraz wycofywaniem.

Adres jest tworzony za pomocą . Określenie „bezstanowa” oznacza, że router nie prowadzi ewidencji przypisań adresów utworzonych przez hosty. Router ogłasza prefiks i czasy życia, a host tworzy identyfikator interfejsu zgodnie z lokalną polityką.

SLAAC i protokół wykrywania sąsiadów (NDP)

SLAAC korzysta z komunikatów NDP przenoszonych przez ICMPv6. Hosty używają tych komunikatów do poznania routerów i parametrów łącza. Dwa z nich są podstawą procesu SLAAC:

  • Żądanie routera (RS): Komunikat wysyłany przez hosta po dołączeniu do łącza w celu uzyskania odpowiedzi od routerów.
  • Ogłoszenie routera (RA): Komunikat wysyłany okresowo przez router lub w odpowiedzi na RS. Zawiera parametry sieciowe, w tym opcje Prefix Information z prefiksem, flagą A oraz czasami życia adresów.

Host łączy prefiks z identyfikatorem interfejsu, aby utworzyć adres IPv6. RA może również wskazywać router domyślny i sposób uzyskania dodatkowych parametrów przez DHCPv6. Prefix Information zawiera osobno preferred lifetime i valid lifetime. Po upływie pierwszego adres przestaje być preferowany, a po drugim nie powinien być używany.

Proces SLAAC krok po kroku

Kolejne kroki opisują typowy przebieg autokonfiguracji hosta od dołączenia do łącza do utworzenia adresu globalnego.

  1. Krok 1: Utwórz adres link-local.

    Po włączeniu interfejsu host tworzy lokalny adres do komunikacji na bezpośrednim łączu. Tworzy ten samodzielnie. Adres korzysta z prefiksu fe80::/10. W adresie link-local pozostałe 64 bity tworzą identyfikator interfejsu. Jest on tworzony zgodnie z metodą właściwą dla łącza i polityką systemu. Jedną z metod jest Modified EUI-64. System może też użyć identyfikatora stabilnego lub losowego.

  2. Krok 2: Sprawdź adres link-local (DAD).

    Host wykonuje Wykrywanie Zduplikowanych Adresów (DAD), aby sprawdzić, czy adres tymczasowy nie jest używany na łączu. Wysyła komunikat Neighbor Solicitation z adresem tymczasowym w polu Target Address. Źródłem jest adres nieokreślony (::), ponieważ adres testowany nie został jeszcze przypisany. Brak odpowiedzi pozwala przypisać adres, lecz nie stanowi dowodu wykluczającego każdą kolizję.

  3. Krok 3: Znajdź router (Router Solicitation).

    Host wysyła komunikat Router Solicitation (RS) na adres multemisji wszystkich routerów (ff02::2), aby uzyskać RA bez oczekiwania na kolejne ogłoszenie okresowe.

  4. Krok 4: Odbierz informacje o sieci (Router Advertisement).

    Router odpowiada komunikatem Router Advertisement (RA). Opcja Prefix Information może zawierać prefiks (np. 2001:db8:acad:1::/64), flagę A oraz czasy życia preferred i valid. RA określa również czas życia routera domyślnego.

  5. Krok 5: Utwórz globalny adres unicast.

    Host ma teraz dwa niezbędne składniki:

    • 64-bitowy prefiks z RA (2001:db8:acad:1) z ustawioną flagą A.
    • Własny 64-bitowy identyfikator interfejsu.

    Host łączy te pola, tworząc pełny 128-bitowy globalny adres unicast (GUA).

  6. Krok 6: Sprawdź adres globalny (DAD).

    Host wykonuje DAD również dla nowego adresu globalnego. Wysyła kolejne Neighbor Solicitation na lokalnym łączu. Przy braku odpowiedzi może przypisać adres do interfejsu. Wykrycie konfliktu kończy jego autokonfigurację dla tego adresu.

W typowym przypadku host ma wtedy adres globalny oraz trasę domyślną wskazaną przez RA. Proces nie wymaga serwera DHCPv6 do przydzielenia adresu, choć DHCPv6 może dostarczyć dodatkowe parametry. Host może utrzymywać równocześnie adres link-local, adres stabilny i adres tymczasowy. Każdy z nich podlega własnym czasom życia i preferencji wyboru źródła.

Zmodyfikowany format EUI-64

Jedną z metod generowania 64-bitowego identyfikatora interfejsu jest zmodyfikowany format EUI-64. Algorytm wstawia wartość FFFE do 48-bitowego identyfikatora MAC i odwraca bit Universal/Local. Metoda ujawnia stałą część identyfikatora, dlatego współczesne systemy często wybierają inne metody.

Przykład: konwersja adresu MAC

Urządzenie ma adres MAC 00:1A:2B:3C:4D:5E.

  1. Krok 1: Podziel adres MAC na pół.

    48-bitowy (6-bajtowy) adres MAC jest dzielony na dwie 24-bitowe (3-bajtowe) połówki.

    00:1A:2B oraz 3C:4D:5E

  2. Krok 2: Wstaw hekstet 'FFFE'.

    16-bitowa wartość FFFE (szesnastkowo) jest wstawiana dokładnie pomiędzy obie połówki. To rozszerza adres do 64 bitów.

    00:1A:2B:FF:FE:3C:4D:5E

  3. Krok 3: Odwróć bit U/L (bit 7).

    To jest zmodyfikowana część EUI-64. Odwróć bit U/L w pierwszym bajcie, czyli bit 7 liczony od lewej (bit 1 liczony od najmłodszego bitu). Ten bit to . Dla pierwszego bajtu 00 odwrócenie bitu zmienia wartość na 02.

    • Pierwszy bajt to 00 szesnastkowo, czyli 00000000 binarnie.
    • Przy numeracji od lewej bity mają numery od 1 do 8. Odwracamy bit 7. 00000000
    • Odwrócenie bitu 7 z 0 na 1 daje: 00000010.
    • W systemie szesnastkowym 00000010 to 02.
  4. Krok 4: Końcowy identyfikator interfejsu.

    Wynik stanowi ostateczny 64-bitowy identyfikator interfejsu.

    021A:2BFF:FE3C:4D5E

    Dla prefiksu sieciowego 2001:db8:acad:1::/64 pełny adres globalny urządzenia to 2001:db8:acad:1:21a:2bff:fe3c:4d5e.

DNS i DHCPv6

SLAAC tworzy adres na podstawie prefiksu z RA, a RA może wskazać router domyślny. Podstawowa autokonfiguracja nie musi jednak przekazać adresów serwerów DNS. Mogą one zostać ogłoszone opcją RDNSS w RA, uzyskane przez DHCPv6 lub skonfigurowane ręcznie.

DHCP dla IPv6 (DHCPv6) może uzupełnić te parametry. RA zawiera flagi M i O, natomiast flaga A znajduje się w opcji Prefix Information. Ich wartości wskazują hostowi, czy użyć SLAAC i DHCPv6. Gdy M=1, flaga O jest redundantna, ponieważ DHCPv6 może zwrócić wszystkie dostępne informacje konfiguracyjne.

  • Flaga A (Autonomous Address-Configuration Flag): Jeśli ma wartość 1 w opcji Prefix Information, wskazuje, że prefiks może być użyty do SLAAC.
  • Flaga M (Managed Address Configuration Flag): Jeśli ma wartość 1, wskazuje użycie DHCPv6 do uzyskania adresów. Taki tryb nazywa się stanowym DHCPv6.
  • Flaga O (Other Configuration Flag): Jeśli ma wartość 1 przy M=0, wskazuje użycie DHCPv6 do uzyskania dodatkowych parametrów, takich jak adresy DNS. Przy M=1 flaga O jest redundantna.
Flaga AFlaga MFlaga OWynikowa Akcja Hosta
100SLAAC. Host tworzy adres z prefiksu RA, a trasę domyślną uzyskuje z RA. DNS może pochodzić z RDNSS, konfiguracji ręcznej lub innego protokołu.
101SLAAC + bezstanowe DHCPv6. Host używa SLAAC do utworzenia adresu, a DHCPv6 do dodatkowych parametrów, na przykład adresów serwerów DNS.
011Stanowe DHCPv6. Przy M=1 host uzyskuje adresy i dostępne parametry z DHCPv6, a flaga O jest redundantna. Brama domyślna nadal wynika z RA.

Prywatność: EUI-64 i tymczasowe identyfikatory

Identyfikator EUI-64 wyprowadzony z adresu MAC może pozostawać stały w różnych sieciach. Ułatwia to korelowanie adresów interfejsu, na przykład gdy laptop łączy się kolejno z siecią domową, kawiarnią i lotniskiem.

Rozszerzenia prywatności IPv6 (RFC 4941, zastąpione przez RFC 8981) definiują tymczasowe identyfikatory ograniczające takie korelowanie. Systemy operacyjne, w tym Windows, macOS, Android i iOS, mogą włączać tę funkcję zależnie od konfiguracji.

Zamiast stałego identyfikatora EUI-64 urządzenie może wygenerować tymczasowy, losowy 64-bitowy identyfikator dla adresu globalnego. Taki adres jest preferowany przy połączeniach wychodzących, na przykład podczas przeglądania internetu, i jest okresowo zmieniany zgodnie z czasami życia. Zmniejsza to możliwość korelowania aktywności urządzenia między sieciami. Stabilny adres może pozostać aktywny do obsługi połączeń przychodzących, zależnie od polityki systemu.

Powiązane artykuły