6to4

Z Polskie Wiki IPv6

Mechanizm automatycznych tuneli 6to4 pozwala podłączyć się do sieci IPv6 każdemu kto dysponuje choćby jednym publicznym adresem IPv4. Przy uruchamianiu tunelu nie są konieczne żadne formalności. Ważne jest jednak by poprzez sieć usługodawcy osiągalny był adres 192.88.99.1 oraz możliwa była transmisja pakietów IPv4 oznaczonych protokołem 41 (dziesiętnie). Dokładny opis zawarty jest w RFC 3056.

Spis treści

Zasada działania

Mechanizm 6to4 polega na pakowaniu (tunelowaniu) pakietów IPv6 w pakiety IPv4. Pole protokołu w nagłówku otrzymuje wartość 41. Tak utworzone pakiety wysyłane są do komputera stanowiącego bramę pomiędzy siecią opartą o IPv4 a "prawdziwą" siecią IPv6. Komputerów taki może być w całym internecie dowolna ilość lecz w celu uproszczenia konfiguracji po stronie użytkownika wszystkim im powinien zgodnie z RFC 3068 być przypisany adres 192.88.99.1. Następnie od konfiguracji routingu IPv4 zależy który konkretnie komputer stanowi domyślną bramę dla wybranego użytkownika internetu. Przy poprawnej konfiguracji zawsze jest to komputer najbliższy a zatem zapewniający najszybsze połączenie. Pakiety powracać mogą całkiem inną drogą i nosić praktycznie dowolny adres IPv4 nadawcy. Trzeba to wziąć pod uwagę przy konfiguracji zapór sieciowych.

Trochę inaczej traktowane są pakiety przeznaczone do innych komputerów podłączonych z użyciem 6to4. Z ich adresu skonstruowanego tak jak to opisano poniżej odczytywany jest adres IPv4, pod który dane są wysyłane bezpośrednio z pominięciem bramy. Wygląda to tak jakby wszyscy użytkownicy 6to4 podłączeni byli do jednej sieci o przedrostku 2002:/16.

Adresy IPv6

Użytkownik dysponujący co najmniej jednym publicznym adresem IPv4 (dalej oznaczanym jako V4ADDR) korzystający z 6to4 dostaje do dyspozycji 48 bitowy przedrostek (prefix) skonstruowany według następujących zasad:

  • FP: 2
  • TLA: 0x0002
  • NLA: V4ADDR
     | 3 |  13  |    32     |   16   |          64 bits               |
     +---+------+-----------+--------+--------------------------------+
     |FP | TLA  | V4ADDR    | SLA ID |         Interface ID           |
     |001|0x0002|           |        |                                |
     +---+------+-----------+--------+--------------------------------+

V4ADDR to adres, który pozwoli na dostarczenie tunelowanych pakietów do komputera stanowiącego bramę pomiędzy tunelem a siecią użytkownika korzystającą z naturalnego IPv6. W większości przypadków będzie to router tej sieci. Np. adres 150.254.166.146 (www.pl.ipv6tf.org) da w efekcie przedrostek 2002:96fe:a692:. Posiadając zatem jeden adres IPv4 użytkownik zyskuje możliwość podłączenia praktycznie nieograniczonej liczby komputerów do sieci IPv6. W przypadku adresów przydzielanych dynamicznie konieczna jest oczywiście rekonfiguracja za każdą zmianą adresu IPv4.

Zastosowania

6to4 jest bardzo wygodnym mechanizmem i łatwo się go konfiguruje dla większości systemów operacyjnych. Obsługę zapewniają FreeBSD, NetBSD, Linux, Solaris oraz Windows. Najprostszym jest rozwiązanie jeżeli router 6to4 oraz router IPv4 dla danej sieci to ta sama maszyna.


        IPv6-w-IPv4      IPv6
     <==============...........> 
                          +--| K1
         \                |
Internet  |--| router |---+--| K2
         /
     <------------------------>
              IPv4

Istnieje jednak możliwość żeby rolę router-a 6to4 pełniła maszyna wewnątrz sieci nawet jeśli znajduje się za NAT. Wówczas należy tak skonfigurować NAT by wszystkie pakiety IPv4 z protokołem 41 trafiały do wybranego komputera wewnątrz sieci pełniącego rolę router-a 6to4. Z taką konfiguracją źle radzi sobie FreeBSD.

              IPv6-w-IPv4
                   +=============
                  ||  ...........
                  ||  .   +--| 6to4 router
                  ||  .   |
    <==============+  ..> +--| K1
         \                |
Internet  |--| router |---+--| K2
         /
     <------------------------>
              IPv4

Dokładny sposób konfiguracji jest bardzo mocno zależny od systemu operacyjnego i po szczegóły należy sięgnąć do jego konfiguracji należy sięgnąć do odpowiedniej dokumentacji.

  • Windows opis znajduje się w pomocy dostarczonej z systemem.
  • Linux, Linux+IPv6-HOWTO.
  • FreeBSD, strona stf(4) podręcznika systemowego.

Przykłady

Jakie polecenia wydać by skonfigurować końcówkę tunelu 6to4.

Linux

Wariant współczesny za pomocą iproute(8).

# /sbin/ip tunnel del tun6to4                     # na wszelki wypadek
# /sbin/ip tunnel add tun6to4 mode sit ttl 64 remote any local <lokalny-adres-ipv4>
# /sbin/ip link set dev tun6to4 up
# /sbin/ip -6 addr add <prefix-6to4>::/16 dev tun6to4
# /sbin/ip -6 route add default via ::192.88.99.1 dev tun6to4 metric 1

Wersja bardziej tradycyjna przy użyciu programów ifconfig(8) oraz route(8).

# /sbin/ifconfig sit0 down                        # na wszelki wypadek
# /sbin/ifconfig sit0 up <lokalny-adres-ipv4> netmask 0xffffffff
# /sbin/ifconfig sit0 add <prefix-6to4>::/16
# /sbin/route -A inet6 add default gw ::192.88.99.1
<prefix-6to4> 
Obliczony na podstawie publicznego adresu IPv4 za pomocą którego będziemy komunikować się ze światem. Gdy stosujemy NAT (patrz Zastosowania, rys. 2)jest to adres zewnętrzny routera
<lokalny-adres-ipv4> 
Adres IPv4 interfejsu sieciowego na komputerze stanowiącym zakończenie tunelu. W przypadku bezpośredniego połączenia do internetu (patrz Zastosowania rys. 1)jest to ten sam adres od którego pochodzi <prefix-6to4>. Gdy zaś router 6to4 znajduje się za NAT jest to, najczęściej prywatny, adres IPv4 przypisany do karty sieciowej.

Bezpieczeństwo

6to4 może stwarzać pewne problemy na polu bezpieczeństwa. Większość z do tej pory rozpoznanych stanowią ataki typu DoS wykorzystujące możliwość łatwego podszywania się pod przekaźnik 6to4.

Lista publicznych routerów 6to4