Dodanie tunelu IPv6 do routera z OpenWRT

Operatorzy w Wielkiej Brytanii są bardzo zacofani, jeżeli chodzi o najnowsze rozwiązania technologiczne. Patrząc na zachowanie Brytyjczyków, których zapał do nowych technologii jest nieco flegmatyczny, nie ma co się dziwić, że dostawcy usług internetowych nadal tkwią w epoce kamienia łupanego (IPv4), mimo że kamienie (pula adresów IPv4) już się skończyły. O ile mam szczęście, że dysponuje zewnętrznym adresem IP w wersji 4, to mogę zapomnieć o adresie w wersji 6 (kciuki w dół dla Virgin Media).

Na szczęście istnieje na to rozwiązanie i to w dodatku darmowe!

Mowa tutaj o tunelu IPv6 przy pomocy rozwiązania 6 przez 4 (6-over-4 Tunnel).

Jeżeli dysponujemy routerem z OpenWRT, dodanie obsługi IPv6 to nic trudnego i już opisuje jak to zrobić.

W moim przypadku dodanie tunelu IPv6 robię w ramach ciekawostki, gdyż nie będę mógł go używać na co dzień. Dlaczego? Przeczytasz na końcu wpisu.

W pierwszej kolejności musimy dodać obsługę protokołu IPv6-in-IPv4, instalując odpowiedni pakiet z poziomu panelu administracyjnego przez przeglądarkę internetową (System > Software) lub z terminala, za pomocą komendy:

opkg update
opkg install 6in4 luci-proto-ipv6

Drobna uwaga. W systemie dostępny jest pakiet 6in4 oraz 6to4. Nazwy i zastosowanie jest podobne, ale to nie jest to samo. W tym wpisie wykorzystam 6in4 (IPv6-over-IPv4 (RFC4213)), a nie 6to4 (IPv6-over-IPv4 (6to4)).

Pakiet luci-proto-ipv6 możemy już mieć zainstalowany, jeżeli w interfejsach (Network > Interfaces) widzimy już ustawiony WAN6 z domyślną opcją DHCPv6 client.

Jeżeli nie jesteś pewien, czy twój dostawca internetu oferuje IPv6, możesz to sprawdzić właśnie tutaj. W interfejsie WAN6 powinieneś mieć przypisany adres IPv6 (Tak jak w WAN mamy IPv4). Jeżeli takiego nie widzisz, wówczas kontynuuj, w celu jego ustawienia. Jeżeli natomiast twój usługodawca dostarcza rozwiązanie IPv6, nie musisz nic więcej robić. 

Na tym etapie zalecam uruchomienie ponowne naszego routera (System > Reboot), gdyż w momencie, gdy będziemy edytować nasze ustawienie WAN6, możemy nie mieć dostępnej opcji IPv6-in-IPv4 (RFC4213) w polu protokołu (Protocol).

reboot

Po ponownym uruchomieniu routera przechodzimy do ustawienia naszego interfejsu (Network > Interfaces). 

Ewentualnie z poziomu terminala:

/etc/init.d/network restart

Nim zaczniemy wprowadzać jakiekolwiek dane, potrzebujemy założyć konto u usługodawcy, który będzie oferował nam usługę tunelu IPv6. W tym przypadku wybieramy Hurricane Electric Free IPv6 Tunnel Broker.

Po założeniu i potwierdzeniu konta logujemy się i z lewej strony (User Functions) wybieramy otworzenie regularnego tunelu (Create Regular Tunnel).

HE main page

W następnym kroku wstawiamy zewnętrzny adres IP naszego routera (IPv4 Endpoint) oraz wybieramy, z którym serwerem na świecie będziemy się łączyć, aby utworzyć tunel (Available Tunnel Servers). W moim przypadku wybrałem Londyn, ale w przypadku polski mamy również dostępną Warszawę.

HE Create new tunnel 1

HE Create new tunnel 2

Na końcu otrzymamy adresy, które będziemy wprowadzać po stronie naszego routera.

HE Tunnel details


A więc przechodząc do routera (Network > Interfaces) edytujemy (Edit) nasz interfejs WAN6.

Z domyślnej opcji protokołu (Protocol) wybieramy IPv6-in-IPv4 (RFC4213), potwierdzamy wszystko przyciskiem Switch protocol.

wan6 default dhcpv6 client

wan6 ipv6 in ipv4 rfc4213

W następnym kroku, w zakładce ustawień ogólnych (General Settings), pozostawiamy lokalny adresem IPv4 (Local IPv4 address) pusty, gdyż będzie on automatycznie odczytywany z połączenia WAN. 

W polu - zdalny adres IPv4 (Remote IPv4 address) - wprowadzamy adres ze strony HE, sekcja IPv6 Tunnel Endpoints > Server IPv4 Address.

W polu - lokalny adres IPv6 (Local IPv6 address) - wprowadzamy adres ze strony HE, sekcja IPv6 Tunnel Endpoints > Client IPv6 Address. Jest to adres kończony się z reguły ::2/64 jak podświetlono w formularzu konfiguracji.

W polu IPv6 routed prefix mamy do wyboru wprowadzenie z sekcji Routed IPv6 Prefixes. Do wyboru mamy Routed /64 lub Routed /48.

/64 używać będzie pojedynczej sieci IPv6, gdy /48 używać będzie większą pulę adresów w sieci IPv6. Z reguły dla klienta końcowego (użytkownika prywatnego) zaleca się /64, gdzie /48 dla rozległego klienta biznesowego.

W skrócie, w puli adresowej /64, router ma jedną podsieć w IPv6, i w ramach tej podsieci przyznawane są adresy IPv6. Jest to podobne rozwiązanie do standardowego LAN, gdzie router jest 192.168.0.1 (maska …0) a użytkownicy mają adresy .0.2, .0.3 i tak dalej. W przypadku /48, puli adresowych i podsieci może być więcej. Tak jak w przypadku IPv4, możesz mieć użytkownika 192.168.1.12 w jednej podsieci i użytkownika 192.168.2.12 w drugiej podsieci.

W zależności od zaawansowania konfiguracji i liczby użytkowników należy podjąć decyzję, co jest najlepsze dla nas. Osobiście zalecam pozostawienie /64.

A więc kopiujemy wartość z Routed /64 do IPv6 routed prefix i klikamy przycisk (+).

Jeżeli nasz zewnętrzny adres IP ulega zmianie, wówczas zalecane jest również dodanie automatyczne odświeżenie adresu IP (endpoint) (ten krok możemy pominąć w przypadku stałego adresu IP).

wan6 ipv6-in-ipv4 rfc4213 dynamic tunnel

Zaznaczmy Dynamic tunnel i wypełniamy kolejne pola. 

W Tunnel ID wprowadzamy wartość ze strony HE. Jest to pierwsza wartość w szczegółach tunelu (Tunnel Details), którą otrzymaliśmy po jego założeniu.

W HE.net username wprowadzamy naszą nazwę użytkownika, którą używamy do logowania się na stronie tunnelbroker.net.

HE tunnel details advanced

W HE.net password musimy podać wygenerowany klucz, który służy do aktualizacji adresu IP. W związku z tym udajemy się na stronę HE i w zakładce Zaawansowane (Advanced) naszego tunelu kopiujemy wartość z pola Update Key i wklejamy po stronie routera.

Przed-ostatnim krokiem jest zapisanie naszej konfiguracji (Save) i potwierdzenie przez Zapisz i Zastosuj (Save & Apply) a następnym ekranie.


Teoretycznie wszystko powinno już działać, ale w praktyce nie zawsze tak jest.

Mimo że dodaliśmy konfigurację sieciową, po zapisaniu i zastosowaniu zmian, tylko konfiguracja sieci ulega odświeżeniu, a nie koniecznie Firewall.

W związku z tym musimy przejść do terminala i wykonać jedną komendę:

/etc/init.d/firewall restart

Lub uruchomić router ponownie i gotowe.

Po stronie routera, w zakładce Zaawansowanych Ustawień (Advanced Settings) naszego interfejsu WAN6, w ramach optymalizacji prędkości możemy zmienić domyślne ustawienia dla Use TTL on tunnel interface na .(z 64) oraz Use MTU on tunnel interface na 1480 (z 1280).

MTU ustawiamy wg. MTU naszego połączenia sieciowego pomniejszonego o 20. Jeżeli nasze połączenie internetowe używa MTU 1500, wówczas ustawiamy 1480. Nasze MTU dla poszczególnych interfejsów sprawdzimy komendą ifconfig z poziomu terminala.


Sprawdzenie

Jeżeli wszystko wykonaliśmy prawidłowo, nasz router powinien zyskać połączenie IPv6.

Aby to sprawdzić, z poziomu terminala wykonujemy ping

ping ipv6.google.com

Z komputera w sieci domowej wchodzimy na stronę https://ipv6test.google.com lub https://ipv6.google.com

Zarówno ping, jak i strony internetowe powinny być dostępne.

Ostatnim krokiem jest przejście na stronę https://test-ipv6.com w celu potwierdzenia, że wszystko działa.

Powinniśmy otrzymać wynik 10/10.


Jeżeli na naszym routerze ustawiliśmy również Bezpieczny DNS wg mojego opisu, z obsługą IPv6, wówczas, przechodząc na stronę https://1.1.1.1/help zobaczymy w Connectivity to Resolver IP Addresses odpowiedź z naszego DNS po adresie IP w formie IPv6 .6:4700:4700::1111 oraz.6:4700:4700::1001).

CloudFlare 1111 help page


Jeżeli ustawialiście swój serwer VPN na routerze z wykorzystaniem WireGuard wg mojego opisu oraz dodaliście domenę do waszego adresu IP routera, również wg mojego opisu, wówczas warto dodać rekord AAAA wskazujący na wasz adres IPv6 (ten z ::2). Dzięki czemu, w teorii, połączenie z VPN możecie wykonywać zarówno przez IPv4, jak i IPv6.


Teraz to już naprawdę wszystko.

Dzięki temu zabiegowi, mamy dodaną obsługę IPv6 po stronie naszego routera, mimo że nasz usługodawca dał ciała i wspiera tylko IPv4.

Negatywną stroną tego rozwiązania jest to, że usługodawcy internetowi mogą robić wszystko, aby przeciwdziałać używaniu tuneli IPv6 w ich sieci. Tak jest na przykład z Virgin Media w UK, które, mimo, że pozwala ustanowić tunel, to jego wydajność jest na poziomie 10%. Przy łączu 100/10Mbps osiągamy prędkości max. 6-10/3-6Mbps.

Ten sam tunel postawiony na łączu innego usługodawcy (CityFibre 100/100) działa z pełną jego prędkością.

Więcej możesz przeczytać tutaj.

Aktualizacja 31/05/2020

Jeżeli z jakiegoś powodu nie chcecie użyć rozwiązania od Hurricane Electric (USA), istnieje też tego samego typu rozwiązanie oferowane przez firmę mieszczącą się w Europie, a mianowicie Securebit AG (Szwajcaria).

Securebit AG oferuje 3 tunele IPv6 z podsiecią /64 za darmo.

Mimo że domyślna konfiguracja 6in4 w OpenWRT zorientowana jest właśnie na HE, w opcji automatycznego odświeżania adresu IPv4 (Dynamic tunnel) możemy analogicznie użyć danych z nowej usługi, gdyż wykorzystuje ona ten sam schemat.

Pozdrawiam.


Credits

Dołącz do dyskusji