25. října 2010

Nastavení preferované odchozí IPv6 adresy v Linuxu

Tenhle příspěvek je spíš takové připomínátko až to zas příště budu potřebovat. O co jde? Pokud máte na svém linuxovém stroji funkční IPv6 (ať už nativní či jakkoliv jinak tunelované) a máte na jednom zařízení více IPv6 adres, může se vám stát, že odchozí spojení budou vytvořena z jiné IP, než ze které byste chtěli. Naštěstí existuje velice snadný způsob, jak donutit systém používat přesně tu adresu, kterou chcete.

Co k tomu potřebujete?
- Balíček iproute2

A jak toho dosáhnout? Každá IPv6 adresa má v systému jakýsi příznak preferred_lft, po jehož významu jsem nijak výrazněji nepátral, nicméně nějak to ovlivňuje algoritmus, který vybírá odchozí adresu. Pokud tento příznak nastavíte u konkrétní adresy na 0, algoritmus tuto adresu při výběru nebude zohledňovat.
Pokud tedy chcete upřednostnit jednu konkrétní adresu před ostatními, nastavte všem ostatním tento příznak na 0 a jen té vaší zvolené ho nechte na 1.
Udělá se to jednoduše pomocí následujícího příkazu:

ip -6 addr change dev preferred_lft 0

Toť vše. Pokud toto provedete pro všechny nechtěné adresy a pouze u té jedné vámi zvolené necháte na 1, začne to fungovat.
Pokud používáte Debian a přiřazujete adresy v /etc/network/interfaces, můžete samozřejmě nastavení tohoto příznaku provést i tam. Upravte řádek, který momentálně vypadá nějak takhle:
up ip -6 addr add dev
na:
up ip -6 addr add dev preferred_lft 0

A to je pro dnešek vše :)

Zdroj: http://www.davidc.net/networking/ipv6-source-address-selection-linux