IPv6 Nowa wersja Protokołu Internetowego Tomasz Luchowski <zuntum@netbsd.org> www.luchowski.com 25 kwietnia 2003
Spis treści 1. Dlaczego potrzebna jest nowa wersja protokołu IP?...3 2. IPv6 następca obecnie używanego IPv4...3 3. Adresowanie IPv6...4 3.1.Typy adresów...5 4. Zapisywanie adresów IPv6 w URL...5 5. Jak zaistnieć w sieci IPv6?...5 6. DNS...5 6.1 Przykładowa konfiguracja odwrotnego DNSu dla BIND...6 6.2 Przykładowa konfiguracja odwrotnego DNSu dla djbdns...6 7. Bibliografia...7 2
1. Dlaczego potrzebna jest nowa wersja protokołu IP? Obecnie stosowana wersja protokołu IP została bardzo dobrze zaprojektowana świadczy o tym fakt, że już od ponad 20 lat jest najczęściej oraz najchętniej stosowanym protokołem komunikacji używanym w sieciach, zarówno rozległych jak i lokalnych. Istnieje jednak wiele powodów, dla których zapoczątkowano prace nad następcą IPv4. Podstawowym czynnikiem wymuszającym zmiany jest niewątpliwie niemal wykładniczy wzrost liczby hostów w sieci Internet. W czasach, gdy powstawało IP, 32-bitowa przestrzeń adresowa wydawała się w zupełności wystarczająca. Dynamiczny rozwój Internetu powoduje jednak, że już niedługo może zabraknąć wolnych adresów. Pomimo tego, że 32-bitowa przestrzeń adresowa wydaje się być bardzo duża, tak naprawdę jesteśmy w stanie podłączyć znacznie mniej hostów duże straty wynikają zarówno ze sposobu, w jaki adresy są przydzielane (rozdysponowanie dostępnej puli), jak i z konieczności tworzenia podsieci. 1 Istotną wadą jest także brak wsparcia dla jakichkolwiek mechanizmów bezpiecznej komunikacji czy ochrony prywatności. 2. IPv6 następca obecnie używanego IPv4 Już w 1992 roku zdawano sobie sprawę z ograniczeń związanych ze stosowaniem IPv4; wtedy też IETF zapoczątkowało prace nad następną wersją protokołu. Pierwsze RFC dotyczące IP następnej generacji zostało opublikowane w grudniu 1993. Grupy projektantów działające w ramach IETF starały się opracować uniwersalny i otwarty standard, zaproszono więc do współpracy wszystkie zainteresowane środowiska badaczy, producentów komputerów oraz osprzętu sieciowego, administratorów; każdy mógł zgłaszać swoje propozycje oraz komentować proponowane rozwiązania. Ustalono najważniejsze wymagania odnośnie nowej wersji protokołu internetowego. W 1995 roku wybrano jeden z projektów jako ostateczną wersję protokołu internetowego nowej generacji. Główne cechy IPv6: dużo większa przestrzeń adresowa. Nie są już konieczne oszczędności przy rozdzielaniu adresów IP każdy może dysponować taką liczbą numerów jaką potrzebuje. Nie trzeba już stosować NAT ani żadnej innej, podobnej metody. Likwiduje to niezliczone problemy powstające przy translacji adresów oraz otwiera drogę do całkiem nowych zastosowań liczba dostępnych adresów jest tak duża, że podłączyć do sieci można zupełnie wszystko, bez obawy o wyczerpanie adresów. 2 1 Przy tworzeniu kolejnej podsieci marnowane są przynajmniej 2 numery na adres sieci oraz broadcast 2 Liczba adresów IPv6 jest tak duża, że każda osoba na planecie mogłaby dysponować tyloma adresami IPv6, ile wynosi obecnie liczba wszystkich adresów IPv4 3
bardzo wygodne oraz użyteczne mechanizmy autokonfiguracji. Dzięki możliwości uruchomienia na routerze programu rozgłaszającego ustawienia, zwykłe hosty konfigurują się praktycznie automatycznie (istnieje kilka różnych implementacji autokonfiguracji). uproszczony format nagłówków. Pewne pola zostały usunięte lub stały się opcjonalne, w celu zwiększenia wydajności oraz zredukowania ilości danych, które muszą być przesyłane, a nie niosą żadnych, istotnych z punktu widzenia użytkownika bądź aplikacji, danych. ulepszone wsparcie dla opcji oraz rozszerzeń. Zmiany w sposobie kodowania danych w nagłówku umożliwiają bardziej efektywne przekazywanie pakietów, oraz pozwalają na dodawanie w przyszłości nowych opcji w bardzo elastyczny sposób. możliwość etykietowania ruchu (Flow Labeling). Umożliwia to skategoryzowanie połączeń oraz przypisanie ich do róźnych kategorii - umożliwia to na przykład nadanie większego priorytetu danym przesyłanym przez aplikacje real-time, wymagające zapewnienia stałego poziomu transferu oraz opóźnienia (QoS). ulepszona prywatność oraz bezpieczeństwo. IPv6 obsługuje rozszerzenia pozwalające na autoryzację oraz sprawdzanie integralności danych (mamy gwarancję możliwości skorzystania z rozwiązania typu IPsec, jeśli potrzebujemy nawiązać bezpieczne połączenie ze zdalnym hostem). doskonale przemyślana współpraca z IPv4. Od począŧku brano pod uwagę konieczność współdziałania (przynajmniej przez jakiś czas) z obecną wersją protokołu IP, dostępnych jest więc dużo metod pozwalających na wzajemne komunikowanie się między tymi sieciami. 3 3. Adresowanie IPv6 Niezwykle szeroka przestrzeń adresowa IPv6 (wykorzystywanie aż 128 bitów) rozwiązuje problem wyczerpywalności adresów, jednak problematyczne staje się operowanie na tak długich ciągach liczb. Jeżeli dla adresów IPv6 zastosowalibyśmy analogiczny sposób zapisu jak dla IPv4, otrzymalibyśmy aż 16 członów rozdzielonych kropkami jest to zdecydowanie zbyt długa oraz zbyt niewygodna metoda. Do zapisu adresów IPv6 standardowo używamy notacji szesnastkowej 4 128-bitowy adres dzieli się na 16-bitowe członów oraz rozdziela dwukropkami otrzymujemy więc 8 członów 5. Przykładowe adresy IPv6 zapisane w w notacji szesnastkowej z dwukropkami (jak widać możemy opuścić nieznaczące zera): 3FFE:0B00:C180:1111:6723:B0:CCCC:1222 2001:0:0:0:0:0:0:1 Dowolną ilość zerowych członów możemy zastąpić poprzez parę dwukropków, jednak aby taki zapis nie powodował niejednoznaczności, operatora tego możemy użyć najwyżej jeden raz 6. 3 W szczególności różnego rodzaju tunele IPv6/IPv4, mające zasadnicze znaczenie dla dzisiejszej, wciąż jeszcze bazującej fizycznie na IPv4, testowej sieci opartej na IPv6 6BONE 4 Proponowane też były alternatywne sposoby kodowania adresów IPv6 np. kodowanie BASE85 [RFC1924], jednak należy brać pod uwagę datę wydania tego RFC 1 kwietnia 1996... 5 Dzięki wstawianiu separatorów co 16 bitów (zamiast 8 jak w przypadku IPv4), dwukrotnie zmniejszamy ich ilość oszczędność miejsca przy zapisie 6 Ponieważ długość adresu IPv6 jest ściśle ustalona, możliwe jest wyliczenie, ile członów zostało zastąpionych przez :: ; w przypadku wielokrotnego zastosowania tego operatora nie byłoby to możliwe. 4
3.1.Typy adresów Adres IPv6 jest 128-bitowym identyfikatorem interfejsu bądź grupy interfejsów. Wyróżniamy 3 typy adresów IPv6: unicast. Identyfikuje pojedynczy interfejs. Pakiet wysłany pod ten adres zostanie dostarczony do interfejsu skojarzonego z tym adresem. anycast. Identyfikuje grupę interfejsów. Pakiet wysłany pod ten adres zostanie dostarczony do jednego z interfejsów skojarzonych z tym adresem (zazwyczaj najbliższego bądź najszybciej osiągalnego). multicast. Identyfikuje grupę interfejsów. Pakiet wysłany pod ten adres zostanie dostarczony do każdego z interfejsów skojarzonych z tym adresem. W IPv6 nie istnieją adresy broadcastowe z związku z wprowadzeniem adresów multicast stały się zbędne. 4. Zapisywanie adresów IPv6 w URL Aby użyć adresu IPv6 w URL 7, wystarczy zapisać go w standardowej postaci (szesnastkowej, oddzielając człony dwukropkami), natomiast całość zamknąć w nawiasach kwadratowych, np.: http://[fedc:ba98:7654:3210:fedc:ba98:7654:3210]/index.html http://[1080::8:800:200c:417a]:8080/ipv6/ Jak widać, dwukropek służyć może zarówno do zapisu adresu IPv6 jak i wskazania portu. 5. Jak zaistnieć w sieci IPv6? Obecnie najpopularniejszym sposobem na podłączenie do 6BONE (testowej sieci opartej na protokole IPv6) jest uzyskanie tunelu od kogoś już wpiętego do tej sieci. Aby umożliwić skonfigurowanie tunelu, wystarczy podać jedynie nasz adres IPv4 wszystkie do konfiguracji dane otrzymymy od administratora drugiego końca tunelu - adres zdalnego końca IPv4 tunelu, adres IPv6 naszego oraz zdalnego końca tunelu oraz jaką dysponujemy siecią (w szczególności długość prefixu). Szczegóły konfiguracji zależą od używanego systemu operacyjnego opis dotyczący systemów BSD można znależć w [6], natomiast linki do przewodników konfiguracji innych systemów operacyjnych znajdują się w [7]. 6. DNS Zarówno BIND, jak i djbdns umożliwiają bezproblemowe dodawanie rekordów dla hostów IPv6. Różnica w stosunku do rekordów IPv4 polega na konieczności zastosowania wpisu AAAA zamiast zwykłego A, np: host.domena.pl. IN AAAA 3ffe:8010:ff::2 Jeśli używamy djbdns, przykładowy wpis może wyglądać następująco: 6host.domena.pl:3ffe801000ff00000000000000000002:86400 7 Oczywiście możemy także użyć istniejącego wpisu AAAA w DNSie, zamiast ręcznie podawać adres w URL 5
6.1 Przykładowa konfiguracja odwrotnego DNSu dla BIND Fragment pliku named.conf: zone f.f.0.0.0.1.0.8.e.f.f.3.ip6.int { type master; file IPv6-mydomain-rev ; }; Fragment pliku IPv6-mydomain-rev : 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR host.domena.pl. 6.2 Przykładowa konfiguracja odwrotnego DNSu dla djbdns Zf.f.0.0.0.1.0.8.e.f.f.3.ip6.int:ns.mydomain.pl.:root. mydomain.pl.:2000111700:14400:3600:1209600:86400:3600 &f.f.0.0.0.1.0.8.e.f.f.3.ip6.int::ns.mydomain.pl.:3600 &f.f.0.0.0.1.0.8.e.f.f.3.ip6.int::ns2.mydomain.pl.:3600 ^2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.f.0.0.0.1.0.8.e.f. f.3.ip6.int:host.mydomain.pl:3600 6
7. Bibliografia [1] Hinden, Deering, Internet Protocol Version 6 (IPv6) Addressing Architecture, RFC 3513, April 2003 [2] Deering, Hinden, Internet Protocol, Version 6 (IPv6) Specification, RFC 2460, December 1998 [3] Hinden, Carpenter, Masinter, Format for Literal IPv6 Addresses in URL's, RFC 2732, December 1999 [4] IETF, IP Version 6 Working Group, http://www.ietf.org/html.charters/ipv6-charter.html [5] The NetBSD Project, NetBSD IPv6 Networking FAQ, http://www.netbsd.org/documentation/network/ipv6/ [6] T. Luchowski, NetBSD IPv6 Howto, http://www.luchowski.com/#papers [7] 6BONE-PL, Konfiguracja IPv6 w różnych systemach http://www.6bone.pl/konfiguracja.html 7