BSD
Systémy řady BSD se dlouhodobě pyšnily podporou IPv6, jejíž kvalitu jim ostatní implementace mohly jen závidět. Bylo to především zásluhou japonského projektu KAME, jehož implementace se prosadila do jádra všech odrůd BSD: FreeBSD od verze 4.0, OpenBSD od verze 2.7 a NetBSD od verze 1.5.
Máte-li aktuální instalaci, s velkou pravděpodobností IPv6 podporuje. Snadno se přesvědčíte, když si příkazem
ifconfig -a
necháte vypsat parametry všech rozhraní. Pokud se mezi nimi objeví IPv6 adresy, protokol je zjevně podporován.
IPv6 v jádře
Pokud podpora IPv6 chybí, budete muset přeložit nové jádro. Postup byste se měli dočíst v dokumentaci svého systému. Je potřeba zapnout volbu
INET6
a pro plnohodnotnou podpou IPSEC přidat ještě
IPSEC IPCES_ESP
Konfigurace rozhraní
Parametry rozhraní lze samozřejmě nastavovat příkazem ifconfig, nicméně pro konfiguraci rozhraní při startu systému je třeba upravit soubor /etc/rc.conf.
Pro automatickou bezstavovou konfiguraci by měl obsahovat
ip6mode="autohost" rtsol="YES" rtsol flags="//rozhraní//"
kde rozhraní je identifikátor příslušného rozhraní.
Dáváte-li přednost manuální konfiguraci, která se používá především u směrovačů, použijte
ip6mode="router" rtsol="NO" rtadvd="YES" rtadvd_flags="//rozhraní//"
Poslední řádek v ní zapne ohlašování směrovače. Adresu pak doplňte příkazem ifconfig, například
ifconfig fxp0 inet6 2001:db8:1:1:2c0:9fff:fe04:848f prefixlen 64
Tunel se chová jako běžné rozhraní s identifikátorem gif
číslo. V některých verzích jej musíte nejprve vytvořit, pak jej prohlásíte za tunel a uvedete IPv4 adresu zdejšího a protějšího konce. Oba kroky realizujete příkazem ifconfig:
ifconfig gif0 create ifconfig gif0 tunnel //zdejší_IPv4// //protější_IPv4// ifconfig gif0 inet6 2001:db8:1:ff::1 prefixlen 64
Směrování
Aktuální směrovací tabulku vám zobrazí příkaz
route show
nebo
netstat -rn
Jejich formát se poněkud liší, první je kompaktnější, druhý obsahuje více informací.
Vložení nové položky do tabulky zajistí příkaz
route add -inet6 //cíl// //kudy//%//rozhraní//
Nejbližší směrovač po cestě (kudy) se zadává lokální linkovou adresou, proto je třeba zadat i rozhraní, kterým má bý datagram odeslán. K odstranění existující položky z tabulky slouží route delete
se stejnými parametry.
DNS
Pokud stroj nezíská adresu místního DNS serveru automaticky (například prostřednictvím DHCP), lze ji nastavit ručně obvyklým způsobem, tedy prostřednictvím souboru /etc/dns nebo /etc/resolv.conf, který by měl obsahovat
nameserver //IPv6_adresa_DNS_serveru//
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 je v BSD realizováno pseudorozhraními stf
číslo. Pokud je systém odmítne vytvořit, budete je muset povolit v jádře:
pseudo-device stf
Je-li stf
podporováno, můžete mu přiřadit adresu obvyklým způsobem a nastavit implicitní IPv6 cestu na výběrovou adresu 6to4 zprostředkovatelů:
ifconfig stf0 inet6 2002:93e6:1058:1::1 prefixlen 16 route add -inet6 default 2002:c058:6301::
ISATAP tunely používají identifikátor ist
číslo. Pravděpodobně je budete muset povolit v jádře:
pseudo-device ist
a následně jim přidělit adresu odvozenou z IPv4 adresy (řekněme 10.1.2.3):
ifconfig ist0 inet6 2001:db8:1:1::5efe:10.1.2.3 prefixlen 64
Příkazem ifconfig lze nastavit i pevnou adresu ISATAP směrovače (např. 10.1.2.100):
ifconfig ist0 isataprtr 10.1.2.100
BSD systémy nemají vestavěny mechanismy pro nalezení adresy ISATAP směrovače pomocí DNS. Lze to zařídit skriptem popsaným v článku o ISATAP. Do rozhraní je třeba opakovaně posílat výzvy směrovači, což zajistí příkaz
rtsold ist0
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ů faithd a totd. faithd implementuje Transport Relay Translator, tedy překlad v transportní vrstvě. Používá pseudorozhraní faith
, jež bude opět nutné povolit v jádře systému:
pseudo-device faith
Aktivace TRT je pak poměrně komplikovaná. Musíte je povolit příkazem sysctl, následně aktivovat pseudorozhraní faith
a spustit démona pro každou službu, kterou má překládat. Jedná-li se o službu běžící jinde, stačí zadat
faithd //služba//
Pokud ale server služby běží na tomto stroji, bude faithd podobně jako inetd spouštět démona dané služby a musíte mu proto sdělit, jak jej zavolat. Příklad konfigurace, která překládá protokol HTTP pro jiný server a FTP pro server běžící zde, by vypadal takto:
sysctl -w net.inet6.ip6.keepfaith=1 ifconfig faith0 up route add -inet6 2001:db8:1:eeee:: -prefixlen 64 ::1 -ifp faith0 faithd http faithd ftp /usr/libexec/ftpd ftpd -l
//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::