Przejdź do głównej treści

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 utworzenie 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.1.1 a użytkownicy mają adresy .1.2, .1.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 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 (lub ping6)

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

Udostępnij na Threads
Udostępnij na Bluesky
Udostępnij na Linkedin
Udostępnij przez WhatsApp
Udostępnij przez Email

Komentarze i Reakcje

Kategorie