IPv6 i Linux
|
|
IPv6 i LinuxStrona została ostatnio znacznie uaktualniona, w szczególności jeśli chodzi o sposób konfiguracji tuneli za pomocą iproute. W niedługim czasie mam także nadzieję opisać konfigurację BGP4+. Należy podkreślić, że nie jest to HOWTO dla każdego - trochę wiadomości trzeba już mieć. Jeśli nie wiesz nic o IPv6, to zajrzyj najpierw na stronę Petera Bieringera. Spis treści
KernelObsługa IPv6 jest dostępna w Linuxach nowszych niż 2.1.8. W moim przypadku używam IPv6 od wersji 2.1.87, po obecne 2.1.128. Podczas konfiguracji kernela należy włączyć następujące opcje:
Wszystkie opcje wkompilowałem do kernela na stałe. Niektóre z nich nie chciały działać jako moduły, w szczególności tunneling. OprogramowanieW tej sekcji zaszły najbardziej znaczące zmiany od poprzedniej wersji tego tekstu, gdzie opierałem się głownie na net-tools. Obecnie wspólnymi siłami polskiego 6bone udało sie opracować nową technikę stawiania tuneli IPv6, IMHO znacznie lepszą od poprzedniej. Przypomnijmy, że stara metoda polegała na konfigurowaniu tuneli za pomocą "ifconfig sit0 tunnel aaa.bbb.ccc.ddd" i wymagała jedynie zainstalowani w miarę nowego pakietu net-tools. W nowej metodzie wszystkie operacje na tunelach i tablicy routingu wykonujemy za pomocą programu iproute Aleksieja N. Kuźniecowa (ANK). Podsumowując, należy zainstalować:
Instalowanie glibc-2.1 (obecnie w wersjach pre - 2.0.103 itp) nie jest chyba konieczne. Co więcej inet6-apps w wersjach wcześniejszych niż 0.34 nie kompiluje się pod glibc bez poprawek, a iproute wymaga patcha by skompilować się pod glibc. Niemniej większośc polskich Linuxów z IPv6 chodzi pod glibc-2.0.xx. Jeśli chodzi o RedHata, to dzięki ekipie PLD wszystkie w/w pakiety włącznie z glibc są dostępne jako RPMy. Można je znaleźć pod adresem ftp://magellan.shadow.eu.org/pub/PLD-devel/ lub na mirrorach.
net-toolsPakiet net-tools zawiera programy ifconfig, route itp. uzupełnione o obsługę IPv6 oraz tuneli. Najnowszą wersję można ściągnąć z ftp://ftp.cs-ipv6.lancs.ac.uk/pub/Code/Linux/Net_Tools/. Jeśli kompilujesz net-tools ze źródeł, to włącz następujące opcje dotyczące IPv6:
inet6-appsPakiet inet6-apps zawiera bibliotekę wykorzystywaną przez inne programy IPv6 oraz podstawowe narzędzia, klienty i demony IPv6: ping, traceroute, inetd itp. Najnowszą wersję można ściągnąć z ftp://ftp.inner.net/pub/ipv6/, Jeśli kompilujesz inet6-apps ze źródeł, w pliku GNUmakefile.config ustaw następujące opcje:
Przygotowanie systemu pod IPv6
/etc/hostsDo pliku /etc/hosts należy dodać:
/etc/protocolsDo pliku /etc/protocols należy dodać:
Konfiguracja interfejsówPrzed zrobieniem czegokolwiek z tej sekcji należy skontaktować się z Rafałem Maszkowskim <rzm@icm.edu.pl> i poprosić go o przydzielenie odpowiedniej puli adresów IPv6 oraz postawienie tunelu. Tunel można postawić również do kogokolwiek innego podpiętego do 6BONE, wystarczy napisać na listę 6bone-pl. Mając już pulę adresów można ostatecznie przystąpić do konfigurowania tunelu. Poniższy plik rezyduje u mnie jako /etc/rc.d/init.d/inet6 i jest podlinkowany do katalogu /etc/rc.d/rc3.d/. Nie jest to w pełni zgodne z filozofią RedHata, ale tak jest IMHO prościej. Adres mojego routera IPv6 to 3ffe:902:3::2/48, należy go zastąpić własnym. Routing defaultowy należy również uzyskać od Rafała, chociaż pewnie będzie taki sam.
Kilka słów komentarzaPowyższa konfiguracja robi następujące rzeczy:
Wyjaśnienia także wymaga kierowania routingu przez adres fe80::193.219.28.246", Jest to adres typu link-local dodawany automatycznie do interfejsu tunelu podczas jego tworzenia. Jak widać, zawiera on przedrostek fe80 oraz adres IPv4 drugiego końca tunelu. Adresy link-local bardzo upraszczają konfigurację tuneli. W stosowanej przez nas poprzednio metodzie każdemu końcowi tunelu należało przydzielić "prawdziwy" adres IPv6 z prefiksem /126 i na niego ustawiać routing. Jeśli chodzi o zamykanie tuneli, to w obecnej wersji IPv6 w kernelu nie jest zalecane usuwanie ich za pomocą "ip tunnel del". Według wyjaśnień ANK kasowanie interfejsów nie jest jeszcze dopracowane i nie należy z niego korzystać. TestyPo uruchomieniu powyższego skryptu adresy interfejsów oraz routing powinien być poprawnie skonfigurowany pod kątem IPv6. Wyniki działania następujących poleceń powinny zawierać adresy IPv6: Adresy interfejsu głównego
Routing
Adresy interfejsu tunelu
PingJeśli tunel z drugiej strony jest już skonfigurowany, to powinien również działać ping na adresy IPv6:
ResolverJeśli zainstalowany w systemie resolver obsługuje IPv6 (glibc-2.0.92 i nowsze), to można także używać nazw kanonicznych, np. "6bone-gw.6bone.pl", które powinno się rozwiązać na adres 3ffe:902::1. Należy zauważyć, że hosty mogą mieć równocześnie adres IPv4 oraz IPv6:
DNSAdresy IPv6 są przechowywane w rekordach AAAA (w odróżnieniu od rekordów A dla IPv4). Są one obsługiwane przez BIND 4.9.7 oraz 8.1.2. Dla potrzeb IPv6 warto stworzyć w swojej domenie poddomenę ipv6 (np. ipv6.ceti.com.pl) i w niej dodawać adresy maszyn podłączonych do 6BONE. Poniższe przykłady dotyczą BIND 8.1.2, przykłady dla wersji 4.9.7 można znaleźć na stronie http://www.visc.vt.edu/ipv6/doc/dns.html.
domena ipv6Wpis w /etc/named.conf:
Plik ipv6.hosts:
domena odwrotnaDo mapowania adresów IPv6 na nazwy kanoniczne służy domena IP6.INT, w której adres jest zapisywany od końca, cyferka po cyferce. Delegację domen w IP6.INT prowadzi węzeł od którego otrzymujemy podsieć, w naszym przypadku Rafał Maszkowski <rzm@icm.edu.pl>. Przykładowo, dla sieci 3ffe:0902:0003::/48 delegowana jest domena 3.0.0.0.2.0.9.0.e.f.f.3.ip6.int. Dla znajdującego się w tej sieci hosta 3ffe:902:3::2 należy stworzyć rekord:
Jak można się domyślić, po połączeniu łańcucha cyfr odpowiadającego adresowi hosta z łańcuchem odpowiadającym adresowi delegowanej sieci całość powinna mieć długość 32 cyferek. Przykładowe pliki dla BIND 8.1.1 znajdują się poniżej: Wpis w /etc/named.conf:
Plik /var/named/3ffe:902:3:
Po skonfigurowaniu DNSu i odwrotnego DNSu programy powinny prawidłowo rozwiązywać zarówno nazwy hostów w domenie ipv6. oraz adresy w domenie odwrotnej:
Zasoby
WWW
Pierwsze dwie strony są częsciowo nieaktualne (szczególnie w sekcjach dotyczących uzyskiwania adresów IPv6), ale zawierają wiele przydatnych informacji na temat oprogramowania IPv6 pod Linuxa.
Listy dyskusyjne
Podziękowania
Paweł Krawczyk <kravietz@ceti.com.pl>
|
Wyślij E-mail MMalinow@bigfoot.com z pytaniami lub
komentarzem.
|