O2 IPv6 prostřednictvím domácího linuxového routeru
Společnost O2 již delší dobu poskytuje v rámci běžných xDSL připojení IP protokol verze 6. Pokud si běžný domácí uživatel síť zapojí podle instrukcí dodávaných k modemu, nemívá s tím problémy a síť mu pracuje v dual stack režimu, tedy veřejná IPv6 adresa plus NATovaná IPv4.
Horší to ovšem je v situaci, kdy si chce za xDSL modem nainstalovat linuxový počítač se dvěma síťovými kartami sloužící jako router, firewall a třeba i jako univerzální malý serveřík.
V čem je problém? IPv6 protokol byl, jak známo, zaveden kvůli nedostatku adres v původním protokolu IPv4. Proto je adresový prostor následníka IPv4 128 bitový, a poskytuje tak naprosto neuvěřitelné množství adres (cca 340 sextiliónů). Nejmenší síť v IPv6 má takzvaný prefix /64, což znamená, že prvních 64 bitů je určeno pro adresu sítě a zbylých 64 je určeno pro adresy jednotlivých stanic v té síti (jestli se vám to domů vejde, můžete jich tam mít až cca 1,8 x 10^19). Síť s prefixem větším než /64 vpodstatě nelze vytvořit, takže ji nemůžete rozdělit na podsítě.
A právě to je ve spojení s providerem O2 značný problém. Ačkoliv se to nedoporučuje, přiděluje O2 domácím uživatelům pouze IPv6 adresy s prefixem /64. To znamená, že sice můžete mít doma obrovskou síť, ale právě a pouze jednu jedinou síť. Jakmile si chcete za xDSL modem dát svůj vlastní router, potřebujete ovšem sítě nejméně dvě.
Kdyby se O2 chovalo normálně, přidělilo by Vám třeba prefix /60, který by umožňoval si doma zřídit až 16 sítí. Naštěstí, pokud je v roli routeru použit linuxový počítač, lze použít snadnou fintu, pomocí které dual stack provoz za firewallem rozdělíme (viz obrázek). IPv4 budeme normálně routovat (sítí s privátními adresami si můžeme zřídit, kolik se nám zachce). Ovšem IPv6 projde počítačem v režimu bridge, takže si s jedinou /64 sítí vystačíme před ním i za ním.
Postup instalace
Postup popisuji pro distribuci Debian, kterou na domácím routeru používám, ale je tak jednoduchý, že půjde snadno zreplikovat pro téměř kteroukoliv jinou linuxovou distribuci.
-
Ujistěte se, že máte nainstalované balíčky bridge-utils a ebtables, pokud ne, nainstalujte je příkazem
# apt-get install bridge-utils ebtables -
Pomocí příkazu brctl přidáme bridgovací interface a ifconfigem ho aktivujeme:
# brctl addbr br0
# ifconfig br0 up -
Přiřadíme mu fyzická rozhraní na kterých má fungovat:
# brctl addif br0 eth0
# brctl addif br0 eth1 -
Nakonec pomocí brtables (obdoba iptables pro režim bridge) přidáme jednoduché pravidlo, které bridgem dovolí projít jen paketům IPv6:
# ebtables -t broute -A BROUTING -p ! ipv6 -j DROP
A to je celé! Samozřejmě pokud vše bude fungovat tak jak má (z některého počítače ve vnitřní síti vyzkoušejte například ping ipv6.google.com), je vhodné si z těchto příkazů sestavit jednoduchý skriptík, který se spustí hned po startu routeru. Také je vhodné pomocí iptables pečlivě nastavit firewallová pravidla pro IP verze 6, ale o tom třeba někdy jindy v jiném článku...
- Pro psaní komentářů se musíte přihlásit
- 8827 x přečteno