IPv6

Ondřej Zloský, xzlosky@fi.muni.cz


Obsah


Motivace k IPv6

Hlavním důvodem pro vznik nového IP protokolu bylo odstranit nedostatky, které obsahuje IPv4. Problém, který u staré verze nastal byl v omezenosti adresovatelného prostoru. V poslední letech se začalo adresami velmi šetřit, přestaly se rozdávat celé třídy adres a zavedl se překlad (NAT) pro připojení celé lokální sítě přes jedinou adresu. IPv6 tento problém řeší rozšířením velikosti adresy z 32 bitů na 128. Je tak možno využít téměř nevyčerpatelné množství IP adres (cca 3*10^38).

IPv4 ale obsahuje i další věci, které pro dnešní velikost a bezpečnost internetu nestačí. IPv6 proto zavádí další nové vlastnosti přímo do protokolu. Mezi nimi:


Typy IPv6 adres

Pro IPv6 jsou navrženy tyto druhy adres:
Unicast (individuální)
adresa jednoho rozhraní nebo mobilního zařízení
Multicast (skupinové)
adresa celé skupiny. Pakety s unicastovou adresou putují na všechna zařízení ve skupině. Využitelné hlavně pro video a audio streaming (paket putuje pouze jednou)
Anycast (výběrové)
podobné multicastové adresy, ale paket se dopraví pouze na jedno zařízení ze skupiny. Využitelné pro služby, kdy se spokojíme např. s prvním dosažitelným serverem. Odešleme paket s obecnou adresou a dále komunikujeme se serverem, který první odpoví.
Global unicast (globální individuální adresa)
odpovídá dnešním IP adresám, celosvětově jednoznačně identifikují rozhraní
Link-local (lokální linkové)
speciální adresy, které jsou platné pouze na lince rozhraní. Paket s lokální linkovou adresou nikdy neprojde routerem. Využitelné pro zjišťování okolních zařízení na stejné lince nebo hledání např. routeru.
Site-local (místní lokální)
podobné dnešních lokálním adresám na IPv4. Rozsahem odpovídají 10.0.0.0/8.

IPv6 adresa

Zápis adresy

Adresa se zapisuje v šestnáctkové soustavě po čtyřech znacích oddělených dvojtečkami:

2001:0718:56E7:12B1:0000:0000:00E1:6212

Vzhledem k tomu, že zápis je značně nepřehledný, jsou navrženy způsoby zkráceného zápisu, pro snadnější čitelnost. Je možné vynechat první nuly, tedy např.:

2001:718:56E7:12B1:0000:0000:E1:6212

Dále je možné vynechat řadu nul za sebou a nahradit ji dvěmi dvojtečkami. Kvůli jednoznačnosti je to však možné udělat pouze jednou, tedy dále je možno krátit na:

2001:718:56E7:12B1::E1:6212

Nicméně ani to není úplně optimální a počítá se především s využitím DNS.

Protože se výrazně zvětšil adresovatelný prostor, zvýšily se i nároky na směrování paketů. Aby se zamezilo obrovskému nárůstu velikosti routovacích tabulek, dbá se při rozdělování adresových prostor na hiearchickou strukturu. IPv6 adresa je logicky rozdělena na části. Prvních 48 bitů tvoří prefix sítě, dalších 16 bitů adresu podsítě a posledních 64 bitů jednoznačně identifikuje koncové rozhraní. Celé sítě jsou adresovatelné jediným prefixem. Prefix CESNETu je 2001:718::/32 a každá síť k němu připojená tímto prefixem musí začínat.

Struktura globální individuální adresy

    16    16    16    16          64 		bitů
  |-----|-----|-----|-----|------------------ |
  | RIR | TLA | NLA | SLA | rozhraní (EUI-64) |
  |-----|-----|-----|-----|-------------------|
RIR
prefix regionálního registrátora
TLA
Top level aggregation - prefix poskytovale
NLA
Next level aggregation - prefix zákazníka
SLA
Site level aggregation - prefix podsítě
EUI-64
jednoznačná identifikace koncového rozhraní

Speciální adresy

::/128 - nedefinová adresa
::1/128 - loopback
FF00::/8 - skupinové adresy
FE80::/10 - individuální lokální linkové adresy
FEC0::/10 - individuální lokální místní adresy

EUI-64

Posledních 64 bitů IPv6 adresy slouží pro identifikaci rozhraní. Pro získání adresy rozhraní se používá ethernetová adresa síťové karty. Ta může být buď 64 bitová nebo starší 48 bitová. Prvních 24 bitů identifikuje výrobce a zbývající jsou sériové číslo zařízení. Pokud je ethernetová adresa pouze 48 bitová vkládá se mezi identifikátor výrobce a sériové číslo výplň FFFE.
Příklad:
MAC adresa: 00:1F:45:21:80:3E
EUI-64 adresa: 001F:45FF:FE21:803E

IPv6 datagram

Podle rfc1883 vypadá formát hlavičky paketu následovně:
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version| Prio. |                   Flow Label                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Payload Length        |  Next Header  |   Hop Limit   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                         Source Address                        +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                      Destination Address                      +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Version
4-bity - verzi IP
Prio.
4-bity - priorita doručování
Flow Label
24-bitů - identifikátor toku. Označuje pakety, které vyžadují speciální zacházení jako QoS, real-time aplikace, ... Zatím jde spíše o experimentální vlastnost IPv6
Payload Length
16-bitů - velikost paketu v oktetech
Next Header
8-bitů - označuje, jestli a jaká hlavička bude následovat. Jedná se hlavně o rozšiřující hlavičky. Rozšiřující hlavičky obsahují informace o směrování, fragmentaci, šifrování a autentizaci, mobilitě a dalších.
Hop Limit
8-bitů - podobné jako TTL u IPv4. Označuje životnost paketu. Při každém průchodu routeru se sníží o jedničku, a pokud dojde na nulu, tak se paket zahodí
Source Address
128-bitů - zdrojová adresa
Destination Address
128-bitů - cílová adresa

Statické point-to-point tunelování mezi IPv4 a IPv6 - projekt 6bone

V současné době je po světě jen relativně málo čistě IPv6 sítí, proto se využívá stávajích IPv4 sítí a nad nimi se vytvářejí IPv6 tunely. Co je k tomu potřeba:

Vytvoření tunelu pomocí program iproute2

/sbin/ip tunnel add sit1 mode sit ttl 255 remote [ipv4 adresa druhého konce] local [ipv4 adresa lokálního routeru]
/sbin/ip link set dev sit1 up
/sbin/ip -6 route add [přidelený IPv6 prefix] dev sit1 metric 1

Zrušení tunelu pomocí program iproute2

/sbin/ip -6 route del dev sit1
/sbin/ip link set sit1 down
/sbin/ip tunnel del sit1

Konfigurace IPv6

Nastavení IPv6 na linuxu

Pro práci s IPv6 je potřeba mít podporu v jádře nebo zkompilovanou jako modul a pomocí příkazu /sbin/modprobe ipv6 jej aktivovat. Jestli máte podporu zapnutou zjistíte pomocí příkazu test -f /proc/net/if_inet6. Pokud tento soubor neexistuje, tak jste pravděpodobně bez podpory.

nastavení rozhraní
ifconfig [dev] add [adresa] up

routování
route -A inet6 add default gw [adresa brány]

nebo celé pomocí iproute2

ip addr add [adresa] dev [dev]
ip -6 route add [cíl] via [adresa brány)

Nastavení IPv6 na BSD

BSD má jednu z nejlepších podpor IPv6 vůbec. Zapíná se v /etc/rc.conf nastavením ipv6_enable="YES"

nastavení rozhraní
ifconfig xl0 inet6 [adresa]

routování
route add -inet6 default [adresa]

Nastavení DNS - BIND

Dopředné záznamy

Používají se AAAA záznamy namísto A záznamů v IPv4 a pracuje s nimi také velmi podobně. V zónovém souboru vypadá zápis následovně:
[jméno]			AAAA	[IPv6 adresa]
např.:
pocitac.nekde.dom	AAAA	1234:5678:90AB:CDEF:FEDC:BA09:8765:4321
nebo lze použít přehlednější řešení pomocí A6 záznamů, které dovolují definovat prefixy a tím zjednodušit zápis. Je to velmi výhodné u velkého množství počítačů, protože se ušetří spoustu práce. Vypadá to asi takto:
[jméno]		A6	[velikost adresy]	[adresa] 	[jméno prefixu]
a přidání prefixu
[jméno prefixu]	A6	[velikost prefix]	[prefix]
např.:
pocitac.nekde.dom	A6	64	::FEDC:BA09:8765:4321	ipv6_sit
pocitac2.nekde.dom	A6	64	::BA09:FEDC:4321:8765	ipv6_sit

ipv6_sit		A6	64	1234:5678:90AB:CDEF::

Reverzní záznamy

Při zápisu se nesmí vynechávat žádné nuly a adresa se zapisuje v obráceném pořadí. Tudíž pro adresu FAAB:1234:8544:CD95:EF6C:AB2D:9632:ACDE bude záznam v zónovém souboru vypadat následovně:
E.D.C.A.2.3.6.9.D.2.A.B.C.6.F.E.5.9.D.C.4.4.5.8.4.3.2.1.B.A.A.F	PTR	pocitac.nekde.dom

radvd - router advirtesement daemon

Jedná se o démona, který pravidelně ohlašuje do sítě informace o sobě. Toto ohlášení poslouchají ostatní směrovače na segmentu a konfigurují vlastní směrovací tabulky podle těchto informací.
Konfigurační soubor se nachází v /etc/radvd.conf.
radvd lze stáhnout na adrese
http://v6web.litech.org/radvd
interface jmeno{
	volby_rozhrani
	prefix prefix/delka{
		volby_prefixu
	};
	pripadne dalsi prefixy
};
Další informace viz. man radvd.conf

Odkazy

Linux IPv6 HOWTO
RFC 1883 - Internet Protocol, Version 6 (IPv6) Specification
RFC 1884 - IP Version 6 Addressing Architecture
České IPv6
6bone