IPv6

Martin Vejnár, xvejnar1@fi.muni.cz

Obsah

Přehled

Verze 6 protokolu IP (IPv6) vzniká v roce 1998 vydáním RFC 2460. Motivací pro vznik následníka IP verze 4 (označované IPv4) byla především nedostatečná velikost adresového prostoru.

Kromě již zmiňovaného rozšíření adresového prostoru z 32 na 128 bitů dosáhl nový protokol i jiných změn. Mezi nimi

Zápis adresy

Adresa podle protokolu IPv6 má 128 bitů a zapisuje se jako osm skupin čtyř hexadecimálních cifer oddělených dvojtečkou, například

2001:0db8:0000:0000:0000:0000:1428:57ab

Několik po sobě jdoucích nulových skupin je možné vynecha a psát místo nich jen dvě dvojtečky po sobě.

2001:0db8::1428:57ab

V adrese může být jenom jedna dvojitá dvojtečka, jinak by adresa mohla být nejednoznačná. V rámci skupiny je možné vynechat počáteční nuly.

2001:db8::1428:57ab

Poslední dvě skupiny lze také psát jako čtveřici desítkových čísel oddělených tečkou (podobně, jako v IPv4). Následující dva zápisy jsou ekvivalentní.

::ffff:0c22:384e
::ffff:12.34.56.78

V URL se IPv6 adresy zapisují obalené v hranatých závorkách, tak se od sebe jednoznačně odliší adresa a port.

https://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/

Síťové prefixy se v IPv6 zapisují podobně jako v případě IPv4, tedy pomocí CIDR notace. Například

2001:0db8:1234::/48

Způsoby doručování

Podobně jako v IPv4 se v IPv6 používá především unicast -- to odpovídá end-to-end struktuře internetu. Módy doručování jsou následující.

Dělení adresového prostoru

Adresový prostor je dělený na dvě základní skupiny podle způsobu doručování na unicastové adresy a multicastové adresy.

Multicastové adresy lze rozeznat pomocí prefixu FF00::/8. Druhý oktet multicastové adresy potom určuje, kam se bude paket propagovat. Typické hodnoty jsou 2 (pro link-local), 5 (pro site-local) a 15 (pro globální adresy).

Anycastové adresy nejsou syntakticky rozeznatelné od unicastových.

Unicastové adresy se dělí na několik skupin.

Identifikátor rozhraní

Síťová rozhraní mající globální unicastovou adresu musí mít spodních 64-bitů vytvořených pomocí ve formátu modifikové EUI-64, tedy EUI-64 s převráceným univerzálním bitem. Z 48-bitové MAC adresy lze 64-bitový EUI vytvořit vložením oktetů FFFE doprostřed MAC adresy. Z EUI-64 lze pak vytvořit modifikovaný EUI-64 invertováním bitu 6 (univerzálního bity).

Protože rozhraní s pevným identifikátorem umožňují sledovat pohyb rozhraní a tudíž narušovat soukromí, definuje RFC 4941 rozšíření umožňující rozhraním náhodně měnit v čase svůj identifikátor.

Identifikátor rozhraní se používá při bezstavové autokonfiguraci, kdy si rozhraní z routeru zjistí 64-bitový prefix a připojí k němu svúj identifikátor. Výsledek použije jako svouji automatickou IPv6 adresu.

Není-li v síti router, vytvoří si rozhraní pomocí svého identifikátoru link-local adresu.

Bezstavová konfigurace

Klient se konfiguruje následující posloupností kroků.

  1. Vytvoří svůj identifikátor rozhraní.
  2. Vygeneruje svoji link-local adresu (přidá před svúj identifikátor prefix FE80::/64).
  3. Pomocí protokolu Neighbor discovery zkontroluje, zda má na lokální síti unikátní identifikátor.
  4. Pomocí své link-local adresy kontaktuje router pomocí Router solicitation protokolu, nebo poslouchá a čeká na Router Advertisement paket. Router klientovi oznámí, jak má v konfiguraci pokračovat (jestli použít DHCP nebo bezstavovou konfiguraci).
  5. Klient získá svůj globální prefix a je nakonfigurován.

Konfigurace v Linuxu

Aby Linuxový stroj uměl pracovat s IPv6, musí mít v jádru zabudovanou podporu. Potom lze IPv6 rozhraní konfigurovat obvyklým způsobem pomocí ifconfig a route.

ifconfig eth0 inet6 add fec0::30
route -A inet6 add default fec0::1

Tunel zprovozníme takto. Pomocí iptunnel vytvoříme IPv6-to-IPv4 rozhraní a nakonfigurujeme ho pomocí ifconfig.

iptunnel add 6to4 mode sit remote 10.0.30.1 local 10.0.30.2 ttl 8
ifconfig 6to4 up
ifconfig 6to4 add fec0:0:0:30::2
route -A inet6 add fec0:0:0:30::/64 dev 6to4

Chceme-li, aby Linuxový stroj fungoval jako router, musíme na něm rozběhnout démona zpracovávajícího zprávy typu router advertisement a router solicitation. Použijeme k tomu radvd.

emerge -v radvd

V gentoo se konfigurační soubor radvd defaultně nachází v /etc/radvd.conf. Nejjednodušší konfigurace vypadá takto.

interface eth0                       # Konfigurace pro rozhrani eth0.
{
        AdvSendAdvert on;            # Demon bude odpovidat na dotazy.
        prefix 2001:db8:0:1::/64     # Jako odpoved bude zasilan prefix 2001:db8:0:1::
        {
                AdvAutonomous on;    # Prefix muze byt pouzit pro autonomni autokonfiguraci.
        };
};

Různé

Dříve existující projekt 6bone umožňoval přístup k experimentální IPv6 síti. Dnes je možné se k IPv6 internetu připojit pomocí tunelu k anycastové adrese 192.88.99.1, nebo registrací u tunnel brokera.

Co se týče podpory IPv6 na straně aplikací, funkce getaddrinfo umí pracovat i s IPv6. Proto by neměl být s přechodem na IPv6 problém.

Literatura