====== 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