Przesiadka z IPv4 na IPv6

ITpedia

Proces zastępowania protokołu IPv4 protokołem IPv6 powinien być przeprowadzany w sposób ewolucyjny, bezkonfliktowy i połączony z edukacją o nowym protokole. Musi zapewniać ochronę inwestycji poczynionych w infrastrukturę IPv4 i być niezauważalny dla kofcowych użytkowników. Mechanizmy zapewniające stopniowe przejście ze świata IPv4 do IPv6 określane są mianem SIT (Simple Internet Transition). Prawie każde dostępne obecnie urządzenie sieciowe potrafi obsługiwać zarówno IPv4, jak i IPv6. Wsparcie IPv6 zapewniają także aktualne systemy operacyjne. Proces wdrażania nowego protokołu powinien być przeprowadzany tak, aby implementacja IPv6 na jednym z ruterów bądś hostów zapewniała ciągłość pracy sieci i nie wymuszała zmiany wszystkich komunikujących się z nim urządzef. Zaleca się, aby IPv6 umieszczać początkowo w węzłach brzegowych (tworząc tzw. Wyspy IPv6), a dopiero póśniej w szkielecie sieci.

Do wyboru są następujące metody:

  • implementacja podwójnego stosu (Dual Stack), zwana także podwójną warstwą IP;
  • tunelowanie IPv6 w IPv4;
  • translacja protokołu;
  • stosowanie łączy dedykowanych;
  • tunelowanie IPv6 w szkielecie sieci MPLS (Multiprotocol Label Switching).

Spis treści

Podwójny stos IPv4 i IPv6

Metoda ta pozwala na użytkowanie przez dane urządzenie zarówno stosu protokołu IPv6, jak i IPv4. W takim węźle są zaimplementowane obie wersje protokołów IP. Dotychczasowe aplikacje obsługujące IPv4 komunikują się poprzez ten protokół, natomiast programy z wbudowaną obsługą obu stosów IP mogą używać IPv6 lub IPv4. Aplikacja podejmuje decyzję na podstawie informacji uzyskanych z serwera DNS, z jakiego protokołu w danej chwili chce skorzystać. Wysyła ona zapytanie o wszystkie możliwe adresy hosta docelowego. Jeżeli tylko jest to możliwe, otrzymuje odpowiedś zawierającą adres IPv6 i IPv4. Wymiana aplikacji na obsługujące IPv6 jest dokonywana stopniowo wraz z instalacją nowszych wersji oprogramowania.

Podczas wdrożenia tej metody w szkielecie sieci jest wymagane, aby oba protokoły były obsługiwane przez wszystkie rutery i urządzenia brzegowe. Pakiety IPv4 są przekazywane przy użyciu odpowiednich dla nich protokołów rutingu i zgodnie z tablicami rutingu stworzonymi dla IPv4. Podobnie pakiety IPv6 korzystają z dedykowanych im protokołów i tablic rutingu. Przykładowo, węzły z podwójnym stosem mogą uzyskiwać adres IPv4 z serwera DHCP, a IPv6 w wyniku konfiguracji automatycznej typu stateless.

Wadą tego rozwiązania jest konieczność konfiguracji obydwu stosów IP, odpowiadających im protokołów rutingu, dwóch schematów adresowania oraz utrzymywania podwójnych tablic rutingu (zwiększenie rozmiaru zajętej pamięci).

Tunelowanie IPv6 w IPv4

Technika ta jest wykorzystywana głównie do komunikacji między odizolowanymi sieciami IPv6 poprzez infrastrukturę IPv4 lub podczas zdalnego łączenia się do sieci IPv6, takich jak 6BONE czy Moonv6 . Pakiety IPv6 są opakowywane w nagłówki IPv4 tak jak segmenty z warstwy wyższej (np… TCP, UDP). Dla ruterów występujących po drodze tak utworzonego pakietu ruch IPv6 jest przezroczysty. Metoda tunelowania jest podstawowym sposobem zapewnienia koegzystencji obu protokołów, do czasu powszechnego przejścia na IPv6. Ponieważ IPv6 powinno być wdrażane od ruterów brzegowych w kierunku szkieletu, dlatego najczęściej tuneluje się ruch IPv6 w pakietach IPv4, a nie odwrotnie. Pole „protokół” w IPv4 ma wartość 41, co wskazuje na opakowany pakiet IPv6. Węzły znajdujące się na kofcach tunelu muszą obsługiwać obie wersje protokołów IP - podwójny stos IP. Wymagane jest również, aby serwer DNS obsługujący daną domenę udostępniał obydwa adresy IP. Żaden z węzłów pośrednich nie powinien przeprowadzać translacji adresów NAT (Network Address Translation). Ponieważ pakiet IPv6 może być większy od MTU dla danej ścieżki będzie musiał zostać sfragmentowany. Dlatego przenoszące go pakiety IPv4 muszą mieć znacznik „nie fragmentować” (Don’t Fragment) ustawiony na 0.

Tunele można zestawiać na różne sposoby (RFC 2893). Do najbardziej popularnych należy:

  • ręczne konfigurowanie tunelu IPv6;
  • uogólnione tunelowanie IPv6 przez IPv4 - GRE;
  • tunel automatyczny, kompatybilny z IPv4;
  • tunel automatyczny 6to4 (RFC3056);
  • tunelowanie ISATAP i Teredo,

Ręcznie skonfigurowany tunel IPv6 zapewnia statyczne, trwałe i bezpieczne połączenie pomiędzy zakofczeniami tunelu: dwoma ruterami brzegowymi, hostem a ruterem lub połączenie do odległej sieci IPv6. Węzły kofcowe są jawnie zdefiniowane. Wymagana jest ręczna konfiguracja interfejsu tunelu, adresów IPv4 oraz IPv6 węzłów (śródłowych i docelowych). Dla każdych dwóch punktów kofcowych należy utworzyć oddzielny tunel.

Uogólnione tunelowanie IPv6 przez IPv4 - GRE wykorzystuje technikę GRE (Generic Routing Encapsulation), służącą do tunelowania dowolnych protokołów w komunikacji punkt-punkt. Nie mogą natomiast być wykorzystywane alternatywne protokoły tunelujące, np… IPSec, PPTP, L2TP. Pakiety IPv6 są opakowywane nagłówkiem GRE. Podobnie jak przy konfiguracji ręcznej dla każdych dwóch punktów kofcowych musi być ustanowiony oddzielny tunel. Przy użyciu adresów IPv4 należy określić węzły początkowe i kofcowe tunelu.

Tunele automatyczne, kompatybilne z IPv4 są zestawiane na bieżąco, w chwili zaistnienia takiej potrzeby. Utrzymywane są tylko na czas trwania połączenia. Ten mechanizm tunelowania wykorzystuje adresy IPv6 kompatybilne z IPv4. Tunel taki jest tworzony poprzez wypełnienie pierwszych 96 bitów adresu IPv6 zerami, a przeznaczenie ostatnich 32 bitów na zapis adresu IPv4, np… Z adresu IPv4 194.69.207.149 jest tworzony adres IPv6 ::194.69.207.149. Przeważnie jest on stosowany do ustanawiania tuneli pomiędzy ruterami. Adresy węzłów kofcowych tunelu są określane na podstawie adresów IPv4. Metoda ta nie sprawdza się w dużych sieciach, ponieważ adresacja hostów ogranicza się do przestrzeni adresowej przydzielonej w IPv4. Skalowalność natomiast zapewnia tunel automatyczny „6to4”.

Tunel automatyczny 6to4 (RFC 3056) umożliwia wzajemne połączenie wielu sieci IPv6, mających dostęp do wspólnej infrastruktury IPv4 - Internetu lub sieci lokalnej. Jest jednym z najczęściej stosowanych mechanizmów, dostępnym we wszystkich systemach operacyjnych i wielu urządzeniach sieciowych.

Sieć IPv4 pełni tutaj funkcję wirtualnego nierozgłoszeniowego łącza, wykorzystywanego przez tunele 6to4. Adresy IPv4 wbudowane w IPv6 są stosowane do znajdowania zakofczenia tunelu 6to4. Podstawowym wymogiem jest, aby każda lokalizacja posiadała własny adres IPv6 w formacie 6to4, przypisany zewnętrznemu interfejsowi rutera, oraz co najmniej jeden adres IPv4. Na podstawie adresu 6to4 jest tworzony unikalny prefiks rutingu IPv6.

Sieci 6to4 wykorzystują prefiks adresu globalnego: 2002:AB:CD::/48, gdzie AB:CD jest zapisanym szesnastkowo adresem IPv4 A.B.C.D, przypisanym danemu interfejsowi. Prefiksy te służą do adresowania podsieci.

Węzły brzegowe muszą obsługiwać obie wersje stosów IP. Wewnątrz sieci IPv6 funkcjonuje protokół rutingu właściwy dla IPv6 (np… RIP next generation), ruting zewnętrzny natomiast jest przeprowadzany przez protokoły obsługujące IPv4.

Rutery brzegowe 6to4 umożliwiają przesyłanie pakietów jedynie do adresatów w sieciach 6to4, czyli mających prefiks 2002::/16. Pozostałe adresy IPv6 są nieosiągalne dla tuneli 6to4. Przekazywanie ruchu do sieci IPv6 wykonuje ruter brzegowy 6to4 pracujący jako „przekaśnik” (6to4 Relay Routers). Umożliwia on komunikację i prowadzenie rutingu pomiędzy sieciami ze standardowymi, powszechnymi adresami IPv6 a sieciami z adresacją 6to4. Są mu przypisane zarówno adresy 6to4 IPv6, jak i zwykłe adresy IPv6. Do komunikacji między wieloma sieciami IPv6 a 6to4 wystarcza pojedynczy ruter w trybie relay.

W obrębie sieci rutery lokalne rozgłaszają prefiksy 2002:AB:CD:[ID podsieci: ID hosta]::/64, tak aby hosty mogły tworzyć automatycznie adresy 6to4. Adresy te są używane do wymiany ruchu między hostami 6to4 w ramach danej podsieci. Ruch IPv6 niezgodny z 64-bitowym prefiksem jest przekazywany do rutera brzegowego 6to4. Ruter ten wykorzystuje prefiks 2002::/16 do wymiany ruchu z innymi sieciami 6to4 poprzez tunele w sieci IPv4.

Metody komunikacji hostów 6to4:

  • host może samodzielnie komunikować się z innym urządzeniem w obrębie tej samej sieci 6to4 (prefiks 2002:AB:CD:[ID podsieci]::/64);
  • host komunikuje się z innym poprzez infrastrukturę IPv4 za pośrednictwem rutera brzegowego, zestawiającego tunel do odległej sieci 6to4 (prefiks 2002::/16). Pakiety o adresie spoza sieci lokalnej są opakowywane w nagłówki IPv4 i przekazywane przez sieć IPv4 do rutera brzegowego docelowej sieci 6to4;
  • host może się komunikować z hostem w sieci IPv6 za pośrednictwem rutera typu relay.

Tunelowanie ISATAP (Intra-Site Automatic Tunnel Addressing Protocol) wykorzystuje infrastrukturę IPv4 jako wielodostępną, nierozgłoszeniową warstwą łącza - podobnie jak to czynią sieci 6to4. Może być wykorzystywane w sieciach kampusowych lub między sieciami lokalnymi. Protokół ten wspiera ruting IPv6 zarówno wewnątrz danej sieci, jak i w sieci globalnej IPv6. Automatycznie zestawia tunele prowadzące przez sieci nieobsługujące IPv6. Węzły ISATAP muszą obsługiwać obydwie wersje IP.

Pierwsze 64 bity adresu są wykorzystywane jako prefiks sieci, pozostałe identyfikują dany interfejs - powstają z połączenia 0000:5EFE z adresem IP. Przykładowy adres ISATAP ma postać 34:0:A132:827C:0:5EFE:194.69.207.149, czyli 34:0:A132:827C:0:5EFE:C245:CF95.

Ze względu na to, że tunelowanie to funkcjonuje w granicach danej lokalizacji, wewnętrzne adresy IPv4 - umieszczane w adresach IPv6, nie muszą być unikatowe globalnie. Mechanizm ISATAP nie funkcjonuje dla węzła znajdującego się w sieci prywatnej za serwerem NAT, nieobsługującym adresów IPv6. W takim przypadku należy wykorzystać tunel „Teredo”. Wykorzystuje on mechanizm znany z sieci IPSec (NAT traversal), polegający na przesyłaniu datagramów UDP przez NAT.

DNS (Domain Name System)

W środowisku IPv6 szczególną rolę odgrywa serwer DNS. Nowa jego wersja (RFC 3596) zawiera dodatkowy rekord, którego wartość oznacza wersję zwracanego adresu IP:

  • A, wyłącznie adres IPv4. Adres zgodny z IPv6 można otrzymać poprzez wypełnienie pierwszych 96 bitów zerami (prefiks 0:0:0:0:0:0);
  • węzły potrafiące obsługiwać obydwa protokoły mają wartość A6 lub AAAA dla adresu IPv6 oraz A dla adresu IPv4;
  • węzły obsługujące wyłącznie IPv6 mają pole z zapisem A6 lub AAAA.

Pole AAAA w nowszych wersjach oprogramowania zostało zastąpione polem A6.

Przykładowo, zadając pytanie o adres [www.networld.pl], otrzymalibyśmy w odpowiedzi adres IPv4 [194.69.207.149] oraz IPv6 [0034:0000:A132:827C:0000:0000:19AA:2837].

W przypadku IPv6 odwzorowanie odwrotne, zgodne ze specyfikacją ARPA dla adresu 0034:0000:A132:827C:0000:0000:19AA:2837, ma postać:

7.3.8.2.A.A.9.1.0.0.0.0.0.0.0.0.C.7.2.8.2.3.1.A.0.0.0.0.4.3.0.0.IP6.ARPA.

Wprowadzenie protokołu IPv6 wymaga również instalacji nowszych wersji popularnych polecef ifconfig, netstat, snoop, ping czy traceroute. Wiele mechanizmów IPv6 jest jeszcze obecnie w fazie testów.

Mechanizmy translacji protokołu

Translacja protokołu jest przeprowadzana w sytuacjach, gdy dany węzeł obsługuje wyłącznie jedną wersję IP (brak podwójnego stosu). Jest stosowany algorytm bezstanowego translatora IP/ICMP (Stateless IP/ICMP Translator).

IETF określiło kilka mechanizmów translacji:

  • translacja adresu - protokołu NAT-PT (Network Address Translation-
  • Protocol Translation) - RFC 2766;
  • mechanizm translacji podwójnego stosu DSTM (Dual Stack Transition Mechanism);
  • TCP-UDP Relay;
  • Bump-in-the-Stack (BIS);
  • brama oparta na dowiązaniach (SOCKS-Based Gateway).

Zobacz też

-
-