====== Linux ======
Implementace se jako první objevila v jádře 2.1.8 v roce 1998, experimentální statut však opustila až v roce 2005 v jádře 2.6.12. Velký podíl na její současné kvalitě má japonský projekt USAGI založený v roce 2000, který nahradil stagnující první generaci IPv6 kódu v oficiálním jádře.
===== Distribuce a jádro =====
Aktuální distribuce zpravidla podporují IPv6. Jako jednoduchý test poslouží příkaz
ifconfig
Pokud vypíše IPv6 adresy rozhraní (například u smyčky ''lo'' by měla být adresa ::1), protokol je podporován. Chybí-li, možná bude stačit vloži modul. Vyzkoušejte
modprobe ipv6
Pokud skončíte s chybovým hlášením, není IPv6 v jádře podporováno a budete muset získat či přeložit jádro s jeho podporou. Aktuální verze jádra obsahují IPv6 kód a implicitně je vše zapnuté. Stačí tedy upravit vlastnosti specifické pro váš systém a přeložit. Prvky související s IPv6 najdete při konfiguraci v částech //Networking / Networking options ///
The IPv6 protocol// a //Networking / Network packet filtering framework (Netfilter) / IPv6: Netfilter Configuration//.//
====== Konfigurace síťových parametrů ======
K nastavení síťových parametrů lze použít tradiční příkazy //ifconfig// a //route// nebo komplexní //ip//. Ve spojení s tunely otevírá první dvojice některá rizika, proto je vhodnější používat //ip//.
Pokud má Linux sloužit jako běžná pracovní stanice, pravděpodobně nemusíte nic nastavovat. Obvykle se práce chopí automatické konfigurační mechanismy a nastaví vše potřebné. Chcete-li definovat **adresu rozhraní** ručně, použijte
ip -6 addr add IPv6 //adresa/délka_prefixu// dev //rozhraní//
například
ip -6 addr add 2001:db8:1:1:204:76ff:fe47:c/64 dev eth0
Do **směrovací tabulky** automaticky přidá cestu pro příslušnou podsíť. Její aktuální stav zobrazí příkaz
ip -6 route show
nebo
route -A inet6
Pro ruční úpravy směrování lze použít //ip -6 route add//. Například implicitní cestu na směrovač 2001:db8:1:1::1 nastavíte pomocí
ip -6 route add default via 2001:db8:1:1::1
**Výběr adresy** z několika kandidátů lze ovlivňovat konfiguračním souborem ///etc/gai.conf// (od glibc verze 2.4). Obsahuje samostatné příkazy pro stanovení priorit a značek:
precedence //prefix/délka priorita//
label //prefix/délka značka//
a v jeho manuálové stránce najdete příklad, jak jeho prostřednictvím definovat implicitní politku podle RFC 3484. To nicméně dělat nemusíte, pokud konfigurační soubor ve vašem systému chybí, používá se implicitní politika.
Pro **tunely** se v Linuxu používají speciální rozhraní, obvykle pojmenovaná ''sit''//číslo// (Simple Interface Transition). Vytvoříte je příkazy
ip tunnel add sit1 mode sit remote //protější_IPv4//
ip link set sit1 up
Následně je pak můžete používat jako běžná rozhraní, například
ip -6 address add 2001:db8:1:1::baac/64 dev sit1
ip -6 route add default dev sit1
Přehled existujících tunelů poskytne
ip tunnel show
===== Konfigurace parametrů ve startovacích skriptech =====
V nejběžnější situaci, kdy nám stačí [[automaticka_konfigurace|automatická konfigurace]], není třeba dělat nic - adresu i implicitní směrovací cestu získáme z ohlášení směrovače. Složitější je to ale v případě, že potřebujeme nastavit statickou adresu.
==== Nastavení statické adresy ====
Většina moderních distribucí Linuxu umožňuje nastavit základní parametry IPv6 v konfiguračních souborech, které pak po spuštění operačního systému načítají startovací skripty. Tyto konfigurační soubory obvykle najdeme v adresáři ///etc//, jejich syntaxe se ale pro různé distribuce liší.
=== Debian, Ubuntu ===
Pro [[http://www.debian.org|Debian]] a z něj odvozené distribuce, jakou je třeba populární [[http://www.ubuntu.com|Ubuntu]], je takovým konfiguračním souborem ///etc/network/interfaces//. Statickou adresu 2001:718:1:101::6 zkonfigurujeme na síťovém rozhraní ''eth0'' přidáním těchto řádků:
iface eth0 inet6 static
address 2001:718:1:101::6
netmask 64
==== Vypnutí autokonfigurace ====
I když je v principu možné ponechat na síťovém rozhraní jak statickou, tak i autokonfigurovanou adresu, obvykle se tomu z bezpečnostních důvodů raději vyhneme. Jak se tedy autokonfigurované adresy zbavíme? Bezstavová autokonfigurace je funkcí modulu ''ipv6'' v jádru Linuxu a vypnout ji lze dvěma způsoby:
- Modul ''ipv6'' má počínaje verzí jádra 2.6.31 pro tento účel speciální parametr //autoconf//. Nastavíme-li jej na nulu, autokonfigurace se vypne pro všechna rozhraní.
- V souborovém systému ///proc// najdeme pro tento účel vhodné parametry v adresáři ///proc/sys/net/ipv6/conf///. Autokonfiguraci můžeme vypnout buď najednou pro všechna rozhraní (v podadresáři //all//) anebo zvlášť pro jednotlivé rozhraní (v podadresáři se jménem tohoto rozhraní).
=== Debian, Ubuntu ===
Použití první z výše uvedených metod se liší podle toho, je-li modul ''ipv6'' integrální součástí jádra anebo je připojován jako samostatně. V prvním případě upravíme konfiguraci zavaděče GRUB v souboru ///etc/default/grub//:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.autoconf=0"
a spustíme ''sudo update-grub''.
Pro samostatný modul nastavíme parametr //autoconf// v souboru ///etc/modprobe.d/options// přidáním řádku
options ipv6 autoconf=0
Parametr v ///proc// lze nastavit za běhu systému pomocí příkazu **sysctl(8)**. Následující nastavení v souboru ///etc/sysctl.conf// funguje po restartu v případě, že modul ''ipv6'' je přímo v jádře:
net.ipv6.conf.all.autoconf=0
Pokud se modul ''ipv6'' připojuje samostatně, musíme do konfigurace rozhraní v souboru ///etc/network/interfaces// přidat poněkud nepěkný "háček", například
iface eth0 inet6 static
address 2001:718:1:101::6
netmask 64
pre-up sysctl -w net.ipv6.conf.eth0.autoconf=0 > /dev/null || true
==== Používání adres chránících soukromí ====
Má-li systém používat náhodné adresy chránící soukromí podle RFC 4941, je třeba zapnout parametr jádra ''net.ipv6.conf.''//rozhraní//''.use_tempaddr''. Lze to provést jednorázově příkazem //sysctl//, nebo nastavit permanentně v souboru ///etc/sysctl.conf//.
===== NetworkManager =====
V systémech z grafickým rozhraním [[http://www.gnome.org|GNOME]] se v poslední době konfigurace síťových rozhraní namísto tradičních souborů v ///etc// svěřuje programu [[http://projects.gnome.org/NetworkManager/|NetworkManager]]. Jakkoli nám mnohdy jdou takové praktiky proti srsti, je tomuto programu třeba přiznat některá pozitiva, především výrazné ulehčení života kočujících uživatelů.
Necháme-li se však v konfiguračním okně tohoto programu zlákat záložkou "Nastavení IPv6", brzy hořce zapláčeme. Pokud třeba vybereme metodu "Ruční" a do panelu "Adresy" nastavíme statickou adresu a délku prefixu, nejenže se nic takového nenastaví, ale dokonce se rozhraní kompletně vypne i pro IPv4!
===== DNS =====
Konfiguraci místních DNS serverů pro řešení IPv6 dotazů zajistí standardní soubor ///etc/resolv.conf//, v němž uvedete IPv6 adresy serverů. Například
nameserver 2001:db8:1:16::aa
====== Testování ======
K ověření funkčnosti IPv6 poslouží obvyklé nástroje ve verzi pro IPv6. Tedy //ping6// a //traceroute6//. DNS lze otestovat programem //dig//, jemuž lze parametrem //-t AAAA// sdělit, že máte zájem o záznamy typu AAAA, a pomocí //@IPv6_adresa// se zeptat určitého konkrétního serveru protokolem IPv6.
===== Přechodové mechanismy =====
**[[6to4]]** se uvede do chodu v podstatě stejně jako běžný tunel. Nastavení stroje s veřejnou IPv4 adresou 10.2.3.4 jako směrovače pro 6to4, který používá IPv6 adresu 2002:a02:304::1 na rozhraní pro automatické tunelování a 2002:a02:304:1::baba na rozhraní do vnitřní sítě by zajistila následující sekvence příkazů:
ip tunnel add sit1 mode sit remote any
ip link set sit1 up
ip -6 address add 2002:a02:304::1/16 dev sit1
ip -6 address add 2002:a02:304:1::baba/64 dev eth0
ip -6 route add default via 2002:c058:6301::1 dev sit1
u posledního příkazu pro implicitní směrování na výběrovou adresu 6to4 zprostředkovatelů podle některých zdrojů je třeba zadat tuto adresu ve tvaru pro IPv4
ip -6 route add default via ::192.88.99.1 dev sit1
podle jiných je vhodnější výše uvedená varianta. Vyzkoušejte, která z nich bude ta pravá ve vašem případě.
**[[isatap]]** byl od verze 2.6.25 zařazen do standardního linuxového jádra, nicméně velmi obtížně se o něm hledají informace. Klient s adresou 10.1.2.3 by se konfiguroval následujícími příkazy:
ip tunnel add is0 mode isatap local 10.1.2.3 ttl 64
ip link set is0 up
ip addr add 2001:db8:1:1::5efe:a01:203/64 dev is0
Směrovač si dohledá prostřednictvím DNS, do domény je proto třeba pod jménem //isatap// zavést adresu místního ISATAP směrovače.
**[[teredo]]** není standardně podporováno, lze však použít [[http://www.remlab.net/miredo/|Miredo]]. Program se jednoduše přeloží a spustí. Vytvoří nové rozhraní ''teredo'', přiřadí mu adresu standardním způsobem a nastaví směrování. Adresu používaného Teredo serveru lze zadat v konfiguračním souboru //miredo.conf//.
**Překlad datagramů** mezi IPv6 a IPv4 dokáže zajistit dvojice programů //pTRTd// a //totd//. //[[http://www.litech.org/ptrtd/|pTRTd]]// implementuje [[trt]], tedy překlad v transportní vrstvě. Jediným jeho konfiguračním parametrem je IPv6 prefix, který má používat pro mapování IPv4 adres. Zadává se spouštěnému programu parametrem ''-p ''//prefix//, například
ptrtd -p 2001:db8:1:eeee::
[[http://www.vermicelli.pasta.cs.uit.no/software/totd.html|//Trick-or-treat daemon (totd)//]] má na starosti úpravy DNS. Převádí dotazy na záznamy typu AAAA zdejších strojů na typ A a odpovědi pak mapuje na IPv6 adresy ze speciálního vyhrazeného prefixu (v našich příkladech používáme 2001:db8:1:eeee::/64). //totd// není plnohodnotným DNS serverem, potřebuje spolupracovat se skutečným serverem, jehož prostřednictvím bude řešit dotazy. V konfiguračním souboru //totd.conf// mu zadáte adresu tohoto serveru (např. 2001:db8:1:1::aa) a prefix, který má používat pro mapování IPv4 adres:
forwarder 2001:db8:1:1::aa
prefix 2001:db8:1:eeee::
===== Odkazy =====
* [[http://tldp.org/HOWTO/Linux+IPv6-HOWTO/|Linux IPv6 HOWTO]]
* [[http://www.linux-ipv6.org/|Projekt USAGI]] - implementace IPv6 pro Linux
* [[http://www.howtoforge.com/using-ipv6-on-debian-etch|IPv6 a Debian Etch]] - návod