IPv6

Martin Husák, 256631@mail.muni.cz

Obsah

Úvod

IP verze 6 je protokol síťové vrstvy podle ISO/OSI, která má za úkol adresování a směrování v síti. IPv6 vznikl jako následník verze 4, důvodem k tomu byla snaha předejít vyčerpání adresního prostoru a začlenit do protokolu podporu nových služeb. IPv6 přináší větší adresový prostor, možnost autokonfigurace, více adres na jednom rozhraní, bezpečnostní mechanismy síťové komunikace a podporu mobility.

Historie

Předpovědi vyčerpání IPv4 adres se objevily již v roce 1990, odhadovaný termín vyčerpání adres se od té doby několikrát odložil (například díky zavedení CIDR). Návrhy na vznik nového protokolu se datují rokem 1993, první specifikace byla uveřejněna v roce 1995 (RFC 1883). Následoval provoz experimentálních sítí (6bone). Od roku 2000 můžeme mluvit o podpoře IPv6 v produkčním prostředí.

Linux získal podporu IPv6 v jádře vývojové verze 2.1.8 v roce 1996, od roku 2000 podporují IPv6 BSD systémy (projekt KAME) a Sun Solaris.

Adresy a doručování

Adresy v IPv6 mají velikost 128b a zapisují se jako 8 čtveřic hexadecimálních čísel oddělených dvojtečkou. Je možné vynechat nuly zleva či čtveřici nul zkrátit na jednu. Navazující čtveřice nul je možné zkrátit na ::, ale vždy nejvýše jednou v jedné adrese. Příkladem zápisu IPv6 adresy je adresa fc00:0:0:0:0:0:90:0, kterou můžeme zkráceně zapsat jako fc00::90:0.

V URL se IPv6 adresa uvádí v hranatých závorkách, aby bylo možné rozlišit adresu a port, např. https://[fc00:0:0:0:0:0:1234:1234]:443/.

Síťové prefixy se uvádí ve stejné notaci jako CIDR, tedy např. fe80::/10. IPv6 nezná síťové třídy jako IPv4.

EUI-64 formát adres

IP adresu je možné přidělit na základě fyzické adresy rozhraní. V ethernetu se použije MAC adresa, do které se vkládá fffe za identifikátor společnosti Sedmý nejvyšší bit pak udává, zda je adresa lokální či globální.

Protože je možné MAC adresu změnit (viz man ifconfig), definuje RFC 4941 způsob náhodného generování identifikátorů rozhraní platných jen po omezenou dobu.

Doručování

V IPv6 máme několik možností doručování paketů:

Unicast
Unicastová adresa určuje konkrétní rozhraní v síti.
Multicast
Adresa pro skupinu rozhraní. Jednotlivé unikátní adresy se přihlašují do multicastových skpuin. Multicast s adresou all-hosts nahrazuje broadcast, který v IPv6 nenajdeme.
Anycast
Opět adresa pro skupinu rozhraní, paket se ale doručí jen jednomu ve skupině (typicky nejbližšímu podle směrování). Jedná se o novinku v IPv6.

Adresování

Přehled vybraných adres a adresových rozsahů:

Lokální linkové adresy jsou přístupné pouze v místní síti (lince), využívají identifikátor rozhraní podle EUI-64 a jsou přístupné vždy. Unikátní lokální adresy mají podobný význam jako lokální linkové adreyy - určují rozhraní v rámci sítě dané organizace, která může rozdělena na několik podsítí. Globální individuální adresy, celosvětově jedinečné tvoří zbytek adresního prostoru a jsou přidělovány podobně jako v IPv4 (poskytovatel dostane přidělen prefix, který dále rozděluje mezi své klienty).

Konfigurace

V linuxu nastavíme IPv6 adresu nástrojem ip z balíku iproute.

Přidání adresy:

ip -6 addr add 2001:db8::10/64 dev eth0

Nastavení výchozí brány:

ip -6 route add default via 2001:db8::1/64

IPv6 nabízí možnost autokonfigurace, to znamená, že zařízení jsou schopná odvodit svou vlastní adresu. Routery posílají v síti tzv. ohlášení směrovače, tím každé zařízení na lince získá informace o své výchozí bráně. Autokonfigurace se dělí na stavovou a bezstavovou. Stavová je podobná DHCP a definuje ji protokol DHCPv6. V bezstavové autokonfiguraci si zařízení vytvoří svou adresu kombinací prefixu (zná od routeru) a svého lokálního identifikátoru.

Autokonfigurace pomocí radvd

Autokonfiguraci IPv6 zajišťuje radvd (Router Advertisement Daemon). Démon posílá do sítě tzv. ohlášení směrovače. Konfiguraci provedeme úpravou souboru /etc/radvd.conf, k odchytávání výzev směrovače můžeme použít program radvdump.

Ukázka nastavení:

interface eth0
{
        AdvSendAdvert on;
        prefix 2001:db8:0:1::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
                AdvRouterAddr on;
        };
};

DNS a IPv6

IPv6 adresy se v DNS v dopředných zónách uvádí v záznamech AAAA. Reverzní vyhledávání probíhá pod ip6.arpa, v záznamu je obráceno pořadí šestnáctkových číslic celé adresy a každé z nich reprezentuje subdoménu.

Schéma DNS záznamů definuje RFC 3596

Přechod mezi IPv4 a IPv6

Dual stack
Zařízení v síti podporuje oba protokoly, pro každou verzi má oddělený prostor.
Tunelování
IPv4 paket je vložen do paketu IPv6 a odeslán IPv6 sítí.
Autotunelování
IPv6 adresa 2002:xxxx:xxxx::/48 se v IPv4 síti směruje jako IPv4 adresa uvedená v xxxx:xxxx. O převod mezi sítěmi se starají brány (6to4 relay).
Proxy a překlad adres
Pro přístup ke službách IPv4 ze sítě IPv4 je možné využít i proxy překlad adres. Implementace obou řešení je však náročná a nemusí podporovat všechny služby sítě.

Nastavení tunelu nad IPv4

Nastavení tunelu je možné více způsoby. První příklad ukazuje použití ifconfig:

ifconfig sit0 up
ifconfig sit0 inet6 tunnel ::216.66.80.30
ifconfig sit1 up
ifconfig sit1 inet6 add 2001:470:1f0a:155c::2/64
route -A inet6 add ::/0 dev sit1

(Převzato z http://www.root.cz/clanky/navod-jak-jednoduse-a-rychle-na-ipv6/)

Druhý příklad ukazuje nastavení pomocí příkazu ip. Zde je nutné nastavit TTL (defaultně 0).

ip tunnel add sit1 mode sit ttl <ttldefault> remote <ipv4addressofforeigntunnel1> local <ipv4addresslocal>
ip link set dev sit1 up
ip -6 route add <prefixtoroute1> dev sit1 metric 1

(Převzato z http://tldp.org/HOWTO/Linux+IPv6-HOWTO/conf-ipv6-in-ipv4-point-to-point-tunnels.html)

Psaní aplikací kompatibilních s IPv6

Při vývoji aplikací pracujících s IPv6 se hodí funkce getaddrinfo.

Literatura