cs:bsd

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

Odkazy

Poslední úprava:: 24.09.2019 12:21