cs:linux

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čí 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 Debian a z něj odvozené distribuce, jakou je třeba populární 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:

  1. 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í.
  2. 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 GNOME se v poslední době konfigurace síťových rozhraní namísto tradičních souborů v /etc svěřuje programu 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 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. pTRTd implementuje Transport Relay Translator, 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::

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

Poslední úprava:: 24.09.2019 12:23