IPv6/Tunnel
topic - Beschreibung
Beschreibung
Ein Tunnelbroker ist im Bereich der Computernetzwerke ein Dienst, der Tunnel bereitstellt, die zum Beispiel dazu genutzt werden können, Verkehr gesichert (Virtual Private Network) oder verkapselt zu transportieren, um z. B. IPv6 über ein IPv4-Netzwerk zu transportieren
Obwohl es mehrere Arten von Tunnelbrokern gibt, werden damit meist Broker bezeichnet, die Tunnel bereitstellen, die es ermöglichen, IPv6-Pakete über alte IPv4-Infrastruktur zu routen (RFC 3053), allerdings kann es auch IPv4-Tunnelbroker geben, die IPv4-Pakete über IPv6-Infrastruktur leiten
- Um IPv6 über IPv4 zu leiten, werden verschiedene Methoden wie 6in4, 6over4, 6to4 oder 6rd verwendet
- Heutzutage wird häufig Dual-Stack verwendet, bei dem sowohl IPv4 und IPv6 unabhängig voneinander verwendet werden
Automatische Konfiguration
Normalerweise werden IPv6-Tunnel über das Tunnel Setup Protocol oder Tunnel-Information-Control-Protokoll konfiguriert und erstellt
- Oft wird ein Tunnel jedoch manuell konfiguriert
Probleme mit Network Address Translation und Routern
- Protokoll-41-Tunnel, wobei IPv6 direkt in IPv4 verpackt wird, funktionieren hinter NATs eventuell nicht mehr zuverlässig
- Mit vielen modernen Routern gibt es allerdings keine Probleme
- Umgehen kann man auftretende Probleme, indem man den Endpunkt entweder in eine Demilitarisierte Zone legt oder gleich auf das NAT-Gerät; moderne Router für den Heimeinsatz, die IPv6-fähig sind, unterstützen dies inzwischen
- Ebenfalls möglich ist der Gebrauch von AYIYA oder TSP (Tunnel Setup Protocol), die IPv6-Pakete in UDP-Pakete verpacken
- Diese können die meisten Firewalls problemlos passieren (vorausgesetzt, es gibt keine verbietende Regel)
- Ein Problem, das immer noch auftreten kann, ist, dass eine NAT-Regel aus der Tabelle entfernt wird, obwohl die Verbindung noch besteht
- Falls dann von außen Pakete für den Tunnel ankommen, kann der Router diese nicht mehr weiterleiten und verwirft sie
- Das unterbricht die Tunnelverbindung, bis der Nutzer wieder ein Paket durch den Tunnel sendet
- Ältere (Heim-)Router routen teilweise generell keine Protokoll-41-Pakete
Dynamische Endpunkte
Falls der Client-Endpunkt des Tunnels eine dynamische IP-Adresse besitzt (wie bei Privatkunden-Breitbandanschlüssen), dann muss der Kunde den Tunnelbroker immer bei einer Änderung über die neue IP-Adresse informieren
- Das geschieht entweder manuell über die Website des Tunnelbrokers oder über ein automatisches Protokoll wie TSP oder Heartbeat
Andere Tunnelbroker erlauben eine komfortable webbasierte Lösung, bei der eine vorgegebene URL aufgerufen wird, in der Nutzername, Passwort und der Hostname oder die ID des Tunnels enthalten sind. Über die IP des Aufrufers (der Server für diese Lösung ist über IPv4 angebunden) kann der Endpunkt aktualisiert werden
tunnelbroker.net
Hurricane Electric bietet einen kostenlosen tunnel broker Dienst an, der unter Arch relativ einfach zu benutzen ist, wenn Sie einem IPv4-Host IPv6-Konnektivität hinzufügen möchten
Registrierung für einen Tunnel
Gehen Sie auf die Tunnelbroker-Site und füllen Sie die Registrierung aus
Einrichten des Hurricane Electric-Tunnels
- Erstellen Sie die folgende systemd-Unit und ersetzen Sie den fettgedruckten Text durch die IP-Adressen, die Sie von HE erhalten haben
- Hinweis
- Wenn Sie sich hinter einem NAT befinden (typische Heimrouter-Einrichtung), verwenden Sie Ihre lokale IPv4-Adresse für client_IPv4_address, z.B. 192.168.0.2
- /etc/systemd/system/he-ipv6.service
[Einheit] Beschreibung=he.net IPv6-Tunnel Nach=network.target
[Service] Typ=oneshot RemainAfterExit=yes ExecStart=/usr/bin/ip tunnel add he-ipv6 mode sit remote server_IPv4_address local client_IPv4_address ttl 255 ExecStart=/usr/bin/ip link set he-ipv6 up mtu 1480 ExecStart=/usr/bin/ip addr add client_IPv6_address dev he-ipv6 ExecStart=/usr/bin/ip -6 route add ::/0 dev he-ipv6 ExecStop=/usr/bin/ip -6 route del ::/0 dev he-ipv6 ExecStop=/usr/bin/ip link set he-ipv6 down ExecStop=/usr/bin/ip tunnel del he-ipv6
[Install] WantedBy=multi-user.target
- Dann start/enable he-ipv6.service
systemd-networkd
- Wenn systemd-networkd Ihre Netzwerkverbindungen verwaltet, ist es wahrscheinlich eine bessere Idee, ihn auch den Tunnelbroker verwalten zu lassen (anstatt eine .service-Datei zu verwenden)
- /etc/systemd/network/he-tunnel.netdev
[Match]
[NetDev] Name=he-ipv6 Kind=sit MTUBytes=1480
[Tunnel] Lokal=<lokale IPv4> Entfernt=<Tunnel-Endpunkt> TTL=255
- /etc/systemd/network/he-tunnel.network
[Match] Name=he-ipv6
[Netzwerk] Adresse=<lokale IPv6> Gateway=<IPv6-Gateway> DNS=2001:4860:4860::8888 DNS=2001:4860:4860::8844
Und fügen Sie diese Zeile in den Abschnitt "[Network]</nowiki>" Ihrer Standard-Internetverbindungsdatei "'.network" ein
Tunnel=he-ipv6
Verwendung des Tunneling mit dynamischer IPv4 IP
Aktualisierung über Cronjob
- Der einfachste Weg, das Tunneln mit einer dynamischen IPv4-IP zu nutzen, besteht darin, einen Cronjob einzurichten, der Ihre aktuelle Adresse regelmäßig aktualisiert
- Die Beispiel-URL und einen Update Key finden Sie auf der Registerkarte Advanced der Seite Tunnel Details
- Um zu überprüfen, ob die Aktualisierung funktioniert, führen Sie den folgenden Befehl aus (ersetzen Sie USERNAME, UPDATEKEY und TUNNELID durch die Angaben zu Ihrem Konto und Ihrem Tunnel)
wget -O - https://USERNAME:UPDATEKEY@ipv4.tunnelbroker.net/nic/update?hostname=TUNNELID
- Wenn es funktioniert, erstellen Sie einen Cronjob, indem Sie crontab -e öffnen und eine neue Zeile hinzufügen
*/10 * * * * wget -q -O /dev/null https://USERNAME:UPDATEKEY@ipv4.tunnelbroker.net/nic/update?hostname=TUNNELID
Aktualisieren über ddclient
- Alternativ kann dies auch durch die Installation von ddclient und die Konfiguration von /etc/ddclient.conf konfiguriert werden
protocol=dyndns2 use=web web=checkip.dns.he.net server=ipv4.tunnelbroker.net ssl=ja anmeldung=BENUTZERNAME passwort=UPDATEKEY TUNNELID
Und schließlich start/enable ddclient.service
Setting up a tunnelbroker.net IPv6 tunnel on Debian
Things you need to find out first
The IP address you plan to use the tunnel from (e.g. your current IP, or the IP of the server you want to set this up on) - $yourip
Getting a tunnelbroker account
- Hit the registration page and sign up
- Wait for the confirmation email, then login
- From the (left-hand-side) “User Functions” menu click “Create Regular Tunnel”
- Enter the IP you want to use the tunnel from
- Pick a host near the machine with that IP - the closer it is, the shorter the path your IPv6 packets will have to take to hit the IPv6 Internet
Configure your machine to use the tunnel
Pick a name for the tunnel - it is just used as the interface name on Linux. Let’s say sit1
. Now click on the your new tunnel, and you’ll be on the “Tunnel details” page
Open up /etc/network/interfaces:
auto sit1
iface sit1 inet6 v4tunnel
address $address
netmask 64
local $yourip
endpoint $endpoint
up ip route add 2000::0/3 via $theirip dev sit1
Where:
$address
is the value of “Client IPv6 address”
$yourip
is the local IP address
$endpoint
is the value of “Server IPv4 address”
$theirip
is the value of “Server IPv6 address”, with the /64 removed
Test
Ping
Make sure iputils-ping
is installed (sudo aptitude install iputils-ping
, if it isn’t), then try ping6 www.kame.net
in a terminal::
PING www.kame.net(orange.kame.net) 56 data bytes
64 bytes from orange.kame.net: icmp_seq=1 ttl=54 time=126 ms
Web
If you are setting this up on your desktop, visit Kame using your browser. If this is on a server, use ssh -D1027 yourserver
(via ipv4, of course) on your local machine to create a SOCKS proxy, tell your browser to use localhost:1027
as a SOCKS proxy, then visit Kame in your browser. If the tortoise is dancing, you’re done
IPv6 Tunnel unter Debian mit Tunnelbroker.net
Da es ja bald (TM) nur noch IPv6 Adressen gibt, wollte ich damit schon mal frühzeitig etwas herumspielen
Die Frage war nur wie, den natives IPv6 bekommt man nicht von jedem Provider, und als privater DSL Nutzer schon mal garnicht
- Aber eine Lösung gibt es dennoch, sie heißt IPv6 Tunnel
- Dabei wird der komplett IPv6 Traffic in IPv4 Pakete verpackt und zu einem Tunnelserver geschickt, der das ganze Entpackt und ins IPv6 Internet weiterleitet
- Insgesamt eine schöne Sache, und es gibt kostenlose Dienste die einen solchen Service anbieten
- Einer ist tunnelbroker.net, hier kann man sich Registrieren und bekommt dann Ipv6 Adressen und die Daten zu einem Tunnel Server
Einrichtung Debian
/etc/network/interfaces folgenden Eintrag hinzugefügt:
#IPv6 TUNNEL auto 6in4 iface 6in4 inet6 v4tunnel address 2001:470:1f0a:cf7::2 #Zugewiesene Addresse des eigenen Endpunkts netmask 64 endpoint 216.66.80.30 #IPv4 Adresse des Tunnelservers auf der anderen Seite gateway 2001:470:1f0a:cf7::1 # IPv6 Adresse des Tunnelservers der anderen Seite up ip route add ::/0 dev 6in4
Dann speichern und man kann danach mit
ifup 6in4 #Tunnel anfahren ifdown 6in4 #Tunnel herrunterfahren