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
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
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í.
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.
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.
Klient se konfiguruje následující posloupností kroků.
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. }; };
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.