IPv6 to fundamentalna ewolucja adresacji w internecie, zaprojektowana, by usunąć ograniczenia IPv4 dzięki ogromnej przestrzeni adresowej i usprawnionej funkcjonalności sieci.

Przejście z 32‑bitowego IPv4 na architekturę IPv6 o długości 128 bitów umożliwia wygenerowanie około 3,4 × 10^38 unikatowych adresów, co daje praktycznie nieograniczony zapas dla przyszłych wdrożeń.

Zrozumienie struktury adresu, zasad kompresji i notacji, adresów link‑local oraz globalnych unicast jest kluczowe dla administratorów i inżynierów sieci.

Struktura adresu IPv6 i podstawowa architektura

Adres IPv6 składa się ze 128 bitów, zorganizowanych w osiem 16‑bitowych segmentów (hextetów) oddzielonych dwukropkami i zapisywanych w notacji szesnastkowej.

Architektura IPv6 wspiera hierarchiczne trasowanie i efektywną agregację, dzieląc adres na prefiks sieci oraz identyfikator interfejsu. Takie podejście upraszcza tablice routingu w skali internetu.

Aby szybko uporządkować kluczowe elementy tej architektury, zapamiętaj trzy podstawowe składowe adresu IPv6:

  • prefiks sieci – część lewostronna adresu wykorzystywana do routingu między sieciami,
  • identyfikator podsieci (SLA) – wewnętrzny podział przestrzeni przydzielonej organizacji,
  • identyfikator interfejsu – część prawostronna identyfikująca host w ramach podsieci.

Część sieciowa ma typowo 64 bity. W globalnych adresach unicast lewostronne 48 bitów stanowi prefiks globalnego routingu, a kolejne 16 bitów tworzy identyfikator podsieci (SLA).

Identyfikator interfejsu to standardowo prawostronne 64 bity. Może być wyprowadzony metodą EUI‑64 z adresu MAC lub generowany losowo (rozszerzenia prywatności).

Notacja adresów IPv6 i standardy reprezentacji

Adresy IPv6 zapisuje się szesnastkowo, po osiem grup po cztery znaki. Pełny przykład to 2001:0db8:0000:0000:0000:0000:0000:0001.

Notacja szesnastkowa bezpośrednio odwzorowuje bity (każda cyfra to 4 bity), dzięki czemu jest jednocześnie zwięzła, precyzyjna i czytelna w konfiguracjach.

W szczególnych przypadkach używa się adresów IPv4‑mapped, gdzie 96 bitów ma postać szesnastkową, a ostatnie 32 bity zapisuje się w kropkowej notacji IPv4, np. ::ffff:192.0.2.1 — rozwiązanie to ułatwia mechanizmy przejściowe.

Zasady kompresji adresów IPv6 i konwencje skracania

Reguły skracania zdefiniowano pierwotnie w RFC 2373, następnie utrwalono w RFC 4291 i ujednolicono stylistycznie w RFC 5952.

Pierwsza reguła to usuwanie zer wiodących w każdej 16‑bitowej grupie: 2001:0db8:0000:0000:0000:0000:0000:0001 skraca się do 2001:db8:0:0:0:0:0:1.

Druga reguła umożliwia zastąpienie jednego ciągu kolejnych grup samych zer zapisem ::. Przykład: 2001:db8:0:0:0:0:0:12001:db8::1. :: wolno użyć tylko raz w pojedynczym adresie.

Gdy występuje kilka sekwencji zer, skraca się pierwszą najdłuższą. Jeśli długości są równe — skraca się pierwszą.

Najczęstsze błędy przy kompresji, których należy unikać:

  • użycie więcej niż jednego podwójnego dwukropka w jednym adresie,
  • skrót „zer końcowych” w grupie (np. 4200 do 42) zmienia wartość,
  • mieszanie różnych sekwencji zer bez zachowania zasady „pierwsza najdłuższa”,
  • stosowanie wielkich liter w heksadecymalnych cyfrach wbrew zaleceniom RFC 5952 (preferowane małe litery).

Adresy link-local – podstawa komunikacji IPv6

Adresy link‑local mają prefiks FE80::/10 (najwyższe bity 1111111010) i zwykle zaczynają się od FE80::. Obowiązują tylko w obrębie lokalnego łącza i nie są routowane przez routery.

zawsze obecne na interfejsach z włączonym IPv6 i wykorzystywane m.in. przez NDP, jako adresy bramy domyślnej i „next‑hop” w tablicach tras.

Najważniejsze zastosowania adresów link‑local w praktyce to:

  • obsługa protokołu neighbor discovery (NDP) i rozgłaszania prefiksów,
  • ustalanie bramy domyślnej i lokalnego next‑hop,
  • komunikacja w obrębie segmentu bez infrastruktury DHCP i bez adresów globalnych.

Identyfikator interfejsu (dolne 64 bity) można wyprowadzić metodą EUI‑64 z MAC (np. 00:1a:2b:3c:4d:5efe80::021a:2bff:fe3c:4d5e), jednak współczesne systemy często generują losowe identyfikatory (RFC 4941) ze względów prywatności.

W celu rozróżnienia interfejsów stosuje się indeksy stref (zone indices). Przykłady zapisu: fe80::1%eth0 (Linux) lub fe80::1%Ethernet/fe80::1%12 (Windows).

Globalne adresy unicast – routowanie i alokacja w skali internetu

Globalne adresy unicast są globalnie routowalne i pochodzą z zakresu 2000::/3 (prefiks binarny 001). IANA alokuje przestrzeń rejestrom regionalnym (RIR), a te przekazują ją operatorom i organizacjom.

Struktura jest trójpoziomowa: 48‑bitowy prefiks globalnego routingu + 16‑bitowy identyfikator podsieci (SLA) + 64‑bitowy identyfikator interfejsu, co umożliwia efektywną agregację tras.

Łańcuch alokacji wygląda następująco:

  • IANA → RIR – przydział dużych bloków dla regionów (np. RIPE NCC, ARIN, APNIC, LACNIC, AFRINIC);
  • RIR → operatorzy – przydział prefiksów dla ISP i dużych podmiotów (często /32);
  • operator → organizacja – przydział dla klientów końcowych (typowo /48).

Organizacja posiadająca prefiks /48 może wydzielić z niego 65 536 podsieci /64, a rekomendacją jest /64 na każdy segment (zgodnie ze SLAAC i NDP).

Adresy globalne można przypisać ręcznie lub przez SLAAC, łącząc ogłaszany prefiks z (często losowym) identyfikatorem interfejsu. Proces nie wymaga DHCP, co upraszcza administrację.

Identyfikacja interfejsu i generowanie adresu poprzez EUI-64

Format EUI‑64 przekształca 48‑bitowy MAC w 64‑bitowy identyfikator interfejsu: dzieli MAC na dwie 24‑bitowe części, wstawia FFFE pośrodku, a następnie odwraca bit U/L.

  1. Podziel MAC na OUI i część urządzenia, np. 00:1a:2b | 3c:4d:5e.
  2. Wstaw pośrodku FFFE: 00:1a:2b:ff:fe:3c:4d:5e.
  3. Odwróć bit U/L (siódmy od lewej) w pierwszym bajcie: 0002, wynik: 021a:2bff:fe3c:4d5e.

Coraz częściej stosuje się jednak identyfikatory losowe (RFC 4941), które ograniczają możliwość długoterminowego śledzenia urządzeń.

Autokonfiguracja adresów i integracja z siecią

SLAAC eliminuje konieczność rozbudowanego DHCP dla adresów. Całość zachodzi automatycznie i bez ingerencji operatora, jeśli routery IPv6 poprawnie ogłaszają prefiksy.

Przebieg autokonfiguracji SLAAC wygląda następująco:

  1. Utworzenie adresu link‑local (prefiks FE80::/64 + identyfikator interfejsu).
  2. Wykonanie DAD (Duplicate Address Detection) dla adresu link‑local.
  3. Wysłanie Router Solicitation (multicast) przez hosta.
  4. Odebranie Router Advertisement z prefiksem globalnym i parametrami.
  5. Utworzenie adresu globalnego (prefiks + identyfikator interfejsu) i ponowne DAD.

Podstawą SLAAC jest NDP (ICMPv6). Typy komunikatów NDP to:

  • router solicitation,
  • router advertisement,
  • neighbor solicitation,
  • neighbor advertisement,
  • redirect.

Zakresy adresów i granice komunikacji

Zakres (scope) określa obszar ważności adresu: link‑local działa tylko w obrębie łącza, global unicast w całym internecie, a ULA (unique local addresses) jest z założenia prywatna i nieniesiona w globalnym routingu.

Dla szybkiego porównania najczęściej spotykanych kategorii adresów IPv6 spójrz na poniższe zestawienie:

Typ adresu Prefiks Zakres (scope) Routowalność w internecie Przykład
Link‑local FE80::/10 lokalny (łącze) Nie fe80::1
Global unicast 2000::/3 globalny Tak 2001:db8::1
Unique Local Address (ULA) FC00::/7 lokalny/globalnie unikatowy Nie (domyślnie) fd00:abcd::1
IPv4‑mapped ::ffff:0:0/96 specjalny Nie dotyczy ::ffff:192.0.2.1