
|


|
Servis |

|

|

|

|
Vaše náměty a připomínky
Máte k Linuxzone.cz nějaké připomínky nebo náměty? Našli jste na stránkách chybu? Dejte nám o tom vědět pomocí
formuláře nebo v diskuzi.
Komentářů: 30 |
|
Podpořte Linuxzone.cz
Chcete podpořit náš server umístěním odkazu nebo zveřejněním backendu? Zde najdete vše potřebné.
|
|
Pište pro Linuxzone.cz
Máte zájem podílet se na obsahu Linuxzone.cz ať už jako redaktoři nebo i jinak? Dejte nám o sobě vědět!
|

|

|

|

|

|
Aktuálně o software |

|

|

|

|
6.12.2005, 19:07 Potřebujete-li pod linuxem rozchodit bezdrát založený na čipsetech Broadcom 43xx, konečně existuje linuxový ovladač. (lz)
|

|
|
6.12.2005, 19:04 Byla uvolněna verze Xen 3.0.0 virtualizační technologie XEN. (lz)
|

|
|
6.12.2005, 18:59 Byla uvolněna verze X11R6.9/X11R7 RC 3 grafickérho rozhraní X Window System. (lz)
|

|
|
3.12.2005, 12:45 Co je nového okolo projektu Amanda (open source zálohovací software)? Více na osnews.com. (lz)
|

|
|
3.12.2005, 12:40 Jak to akuálně v linuxu vypadá s podporou SATA.. (lz)
|

|
další  |

|

|

|

|

|
Aktuálně z IT |

|

|

|

|
3.12.2005, 12:51 Novellu se daří prodej linuxových produktů, oproti loňskému roku se Novell dočkal výrazného nárůstu. (lz)
|

|
|
3.12.2005, 12:48 Třetí verzi licence GPL by měla být publikována během jara 2007. (lz)
|

|
|
23.10.2005, 13:20 V Peru nyní mají zákon, který umožňuje nasazení open source software ve vládní správě. (lz)
|

|
|
23.10.2005, 13:14 Proč se Microsoft bojí Google? (lz)
|

|
|
27.9.2005, 22:01 Peru má zákon podporující free software. (lz)
|

|
další  |

|

|

|

|

|
Linuxzone.cz - server o Linuxu pro programátory, administrátory a fanoušky.
Provozuje společnost Impossible.
ISSN: 1213-8738 |
|

|

|



IPv6 krok za krokem (2)
Z minulého dílu víte, jak vypadá IPv6 adresa a k čemu je ve světě IPv6 dobrý tunel. Pokud jste splnili zadání domácího úkolu, jste teď nejspíš registrovaní u některého tunnel brokera a možná už jste podle instrukcí na jeho stránkách rozchodili zálkadní IPv6 provoz. Dnes se blíže podíváme na konfiguraci tunelů, routování, firewall a další záležitosti reálného provozu.
Konfigurace tunelů
Tunely můžete konfigurovat buď "postaru" pomocí příkazů
ifconfig a route, nebo půjdete s dobou a použijete
víceúčelový program ip z balíčku iproute2. My samozřejmě
půjdeme s dobou, takže náš první příkaz bude
/sbin/ip tunnel add tunylek mode sit local 91.92.93.94 \
remote 44.55.66.77 ttl 64
/sbin/ip
To je jasný, to je název programu.
tunnel
Taky jasný, budeme se zabývat tunelem.
add tunylek
Chceme přidat nový tunel a pojmenujeme ho tunylek.
mode sit
Chceme vyrobit tunel pro IPv6-over-IPv4 provoz, takže zvolíme typ
sit. Další možné volby (ipip, gre) se používají
pro jiné typy tunelů a nesouvisí s IPv6, takže nás nezajímají.
local 91.92.93.94 a remote 44.55.66.77
Veřejné IPv4 adresy místního a vzdáleného konce tunelu.
ttl 64
Tahle volba je zajímavější, než se na první pohled zdá. Pokud
bychom jí neuvedli, bylo by to stejné, jako kdybychom zadali
ttl inherit, což by znamenalo, že vnější (IPv4) paket zdědí
TTL (Time To Live, životnost) vnitřního IPv6 paketu. Kupříkladu
traceroute6 nejdříve pošle IPv6 paket s TTL=1. Zabalený IPv4
paket tuto hodnotu zdědí a bude mít také TTL=1, což ovšem znamená, že
se nedostane dál, než k nejbližšímu IPv4 routeru. Tam jeho životnost vyprší
a bude zahozen. Jenže my chceme, aby nám traceroute6 na první řádce
ukázal že paket dorazil na bránu tunnel brokera, takže musíme zajistit, aby i
IPv6 provoz s TTL=1 došel třeba přes půl IPv4 internetu až na druhý
konec tunelu. No a k tomu nám poslouží volba ttl 64, díky
níž budou mít všechny vnější pakety nastaveno TTL=64 bez ohledu na TTL
paketu vnitřního a tudíž se vždy dostanou až na místo určení. Ještě
jednou zdůrazňuji, že tunel se z hlediska IPv6 paketů chová jako jeden
"hop" a naprosto nás nezajímá přes kolik IPv4 routerů zabalený paket
cestou ve skutečnosti projde.
Takže máme nakonfigurovaný tunel. Zatím je shozený (down), abychom ho
mohli používat, musíme ho zaktivovat:
/sbin/ip link set tunylek up
Nyní by již tunylek měl být funkční. Můžeme ho vyzkoušet:
# ping6 -I tunylek fe80::44.55.66.77
PING fe80::44.55.66.77(fe80::2c37:424d) from ::1 tunylek: \
56 data bytes
64 bytes from fe80::2c37:424d: icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from fe80::2c37:424d: icmp_seq=2 ttl=64 time=0.090 ms
^C
Protože linkové IPv6 adresy obou konců tunelu jsou v Linuxu odvozeny
od příslušných IPv4 adres, můžeme je s výhodou zapisovat jako
fe80::44.55.66.77 a fe80::91.92.93.94, což je stejné jako kdybychom
"správněji" psali fe80::2c37:424d resp. fe80::5b5c:5d5e, ale bez
nutnosti konverze dekadických čísel na hexadecimální.
Mimochodem pokud vám výše uvedený ping nebude chodit, může být chyba
buď v konfiguraci vašeho tunelu, v nastavení firewallu, nebo v tom, že
druhá strana nepoužívá Linux, takže vzdálená linková adresa může být
tvořena jiným způsobem. Nevadí, čtěte dál, třeba se to časem
vyřeší :-)
Jestliže chceme spojení s celým IPv6 světem, tak se celkem hodí
nastavit routování:
/sbin/ip route add 2000::/3 dev tunylek
Možná se ptáte, proč přidáváme cestu pouze pro 2000::/3 a ne pro ::/0
nebo pro "default" nebo tak něco. Inu je to proto, že přestunylek
budeme posílat pouze pakety směřující na globální adresy (viz
první díl).
Taky se možná ptáte, kde je zapsána adresa routeru na druhém konci
tunelu. Jednoduše řečeno: není potřeba. Pokud kernel ví, že tunel je
dvoubodové spojení (point to point link) tak je jasné, že druhý konec
je zároveň oním žádaným routerem. Až bude potřeba odeslat paket,
který vyhovuje předchozímu routovacímu pravidlu, kernel ho zabalí do
IPv4 obálky a odešle na adresu 44.55.66.77, kde ho tam sedící router
vybalí a zpracuje nebo pošle dál. Je tedy vidět, že jeho IPv6 adresu
nepotřebujeme. Pokud chcete vědět víc, doporučuji
RFC 2491.
Než budeme moci začít komunikovat se světem, musíme si ještě nastavit
vlastní globální adresu, aby druhá strana věděla, kam má posílat
odpovědi. Řekněme, že jste od tunnel brokera dostali celý prefix
3ffe:ffff:1234::/48 a vašemu počítači chcete dát
3ffe:ffff:1234::1. Na lokální úrovni se obvykle používají subnety s
prefixem 64bitů, takže kýžený příkaz je:
/sbin/ip addr add 3ffe:ffff:1234::1/64 dev tunylek
Nyní byste měli být schopni pingat a traceroutovat po celém
IPv6 internetu (příkazy ping6 a traceroute6). Pokud vám
toto bude fungovat, můžete z Mozilly,
která je standardně IPv6-enabled, vyzkoušet nějaké weby (třeba
http://www.ipv6.logix.cz, nebo
http://www.kame.net), na kterých
rovnou poznáte, zda jste připojeni přes IPv6 nebo přes IPv4 (předem si
však vypněte případnou proxy). Pokud vám všechno chodí, máte
nakonfigurovaného IPv6 klienta, gratuluji :-)
Mimochodem, jestliže používáte SuSE Linux verze 8.1 a nižší, budete muset
explicitně povolit překlad doménových jmen na IPv6 adresy v souboru
/etc/nsswitch.conf změnou volby dns na dns6 v
řádcích hosts a networks. Pokud to neuděláte, bude
resolver vracet vždy pouze IPv4 adresy.
Firewall
Pro přenos IPv4 paketů obsahujících zabalená IPv6 data se používá IPv4
protokol číslo 41, v /etc/protocols překvapivě označený jako
ipv6. Pokud na svém počítači používáte paketový filtr, což je
celkem rozumné, musíte tomuto protokolu uvolnit cestu:
/sbin/iptables -I INPUT -p ipv6 -j ACCEPT
Tím povolíte provoz samotného tunelu, takže IPv4 paket se dostane až
do kernelu a tam z něj bude vybalen originální IPv6 paket. Protože
dbáte na bezpečnost a víte, že zlí hoši se mohou vyskytovat i na
6bone, je celkem rozumné nastavit filtrování příchozího IPv6
provozu. Jednoduchý příklad může vypadat třeba takto:
/sbin/ip6tables -F INPUT
/sbin/ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
/sbin/ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/ip6tables -A INPUT -p tcp -j LOG
/sbin/ip6tables -A INPUT -p tcp -j DROP
Samozřejmě je to jen ukázka. Konkrétní pravida si jistě každý odladí
podle svých potřeb. Doporučuji někde ke konci nechat logování
zahazovaných paketů, abyste věděli o co přicházíte a mohli se
rozhodnout, zda by nebylo lepší něco z toho přece jenom akceptovat.
Lokální síť
Jeden počítač tedy máme připojen. Nyní předpokládejme, že do IPv6
Internetu chceme připojit celou síť. V tom případě musíme tunel
nakonfigurovat na routeru, avšak globální adresu nenastavovat na
interface tunylek, nýbrž na náš vnitřní interface (řekněme, že
je to eth1). Nebojte se, že byste pak nemohli komunikovat
přímo z routeru - výběr odchozí adresy v Linuxu probíhá tak, že se
kernel nejprve podívá, jestli rozhraní, přes které bude paket odcházet
(v našem případě tunylek) má přiřazenu adresu odpovídajícího
typu (v našem případě globální). Pokud má, použije ji. V našem případě
nemá, takže se podívá, jestli některý z ostatních interfaců nemá
vhodnou adresu. Pokud ano, použije tu. V našem případě tedy pro
odchozí pakety bude použita globální adresa z eth1.
Dále na routeru budete muset povolit forwardování IPv6 paketů:
/sbin/sysctl -w net.ipv6.conf.all.forwarding=1
a případně nastavit firewall podle vašich bezpečnostních požadavků.
Autokonfigurace
Router máme nakonfigurován, ale co stanice? Můžeme jednu po druhé
obejít a na každé nastavit vše ručně:
/sbin/ip addr add 3ffe:ffff:1234::abcd/64 dev eth0
/sbin/ip route add 2000::/3 via 3ffe:ffff:1234::1
Ale to není taková legrace. Lepší je využít bezestavové
autokonfigurace adres (Stateless address autoconfiguration)
popsané v
RFC 2462, která
nám může ušetřit spoustu práce. Princip je takový, že router jednou za
čas (obvykle po desítkách vteřin) pošle všem stanicím zprávu: "Ahoj,
já jsem router a mám linkovou adresu fe80::200:ff:fe00:1. Tahle síť používá
prefix 3ffe:ffff:1234::/64. Račte si nasvatit své adresy."
Zprávě se učeně říká Router advertisement message (RA) - oznámení routeru.
Stanice, která tuhle zprávu zachytí, vezme svou ethernetovou adresu,
třeba 00:01:02:03:04:05 a oznámený prefix a složí z nich svou globální
adresu 3ffe:ffff:1234:0:201:2ff:fe03:506.
Proč dané MAC adrese odpovídá zrovna tato IPv6 adresa se dozvíte v
RFC 2464
(Transmission of IPv6 Packets over Ethernet Networks) a
RFC 2373
(IPv6 Addressing Architecture - kapitola "2.5.1 Interface
Identifiers").
Dále si příjemce poznamená linkovou adresu routeru a nastaví si jí
jako výchozí bránu pro všechny pakety, pro které nebude znát lepší
cestu.
Je to jednoduché a elegantní řešení, které však není zcela
dokonalé. Jednak k nově vytvořené adrese nebude existovat dopředný ani
reverzní DNS záznam, ale protože tímto způsobem budeme většinou
konfigurovat klientské stanice a nikoliv servery, nemuselo by nám to
tolik vadit. Další problém je, že oznámení routeru narozdíl od DHCP
odpovědi neobsahuje informaci o DNS serverech. Sice existují způsoby,
jak tuto záležitost vyřešit, ale prozatím jsou vesměs ve stádiu úvah.
Ale předpokládejme, že stanice jsou už nakonfigurovány pro IPv4 provoz
a tudíž mají i povědomí o DNS serverech přístupných přes IPv4
protokol. Nic nám nebrání tyto servery využít i pro překlad IPv6
adres.
Pár poznámek k tomuto tématu:
radvd
V Linuxu najdete program radvd (Router
ADVertisement Daemon), který pro posílání oznámení použijeme.
Konfigurační soubor /etc/radvd.conf může vypadat třeba takhle:
# Posíláme do vnitřní sítě
interface eth1
{
# Povolíme odesílání
AdvSendAdvert on;
# Nastavíme prefix
prefix 3ffe:ffff:1234::/64
{
# Platnost adresy bude 1 hodina
AdvValidLifetime 3600;
};
};
Voleb samozřejmě existuje mnohem víc a manuálová stránka je všechny
podrobně popisuje.
Nyní stačí spustit program radvd a všechny počítače v lokální
síti by se měly nakonfigurovat. Pokud chcete vidět, jaké informace jim
router posílá, spusťte na některém z nich program radvdump,
který každé oznámení routeru přehledně vypíše.
A je to. Vaše síť by nyní měla mít funkční IPv6 konektivitu. V
dalším díle se dostaneme ke konfiguraci DNS
a některých aplikací. Do té doby můžete směle experimentovat s tím, co
jsme zatím dokázali.
Další části seriálu:
|

|
Přispějte nám |

|

|

|

Líbil se Vám tento článek? Můžete ho ocenit zavoláním na tel. číslo 906 460 134. Cena hovoru za 1 minutu je 46 Kč.

|

|

|

|

|
Hodnocení článku |

|

|

|

Článek hodnotím jako: [1] výborný [2] dobrý [3] průměr [4] špatný [5] hrůza

|

|

|

|

|

|

|