Caspar mainziman m_ueberall KB19
"SIT" oder SIIT (Stateless IP/ICMP Translation, RFC 7915)?
Simple Internet Transition
Das Problem ist eher, dynamische Endpunkte zu aktualisieren. Wie hast Du das bei Dir gelöst? Oder hast Du eine statische IPv4-Adresse?
Gar nicht, ich habe eine statische IP Adresse. Das liegt einfach daran, dass mein Provider mich andernfalls in ein CGNAT stecken würde und da bringt dann auch keine Aktualisierung des Endpunktes was. Da hätte ich dann quasi final verloren.
Aber ich denke, dass man sich hier bestimmt über irgendwelche Scripts (z.B. per SSH) ohne größeren Aufwand eine automatische Aktualisierung bauen könnte.
Ansonsten funktioniert das ganze wie folgt:
Wir haben einen kleinen VPS mit einem eigenen /64 Netz - das lautet jetzt mal 2001:2002:2003:2004::/64. Da wir für unser Heimnetz (oder whatever) ein eigenes /64 brauchen, müssen wir das vom ISP dazu kaufen. Das sei jetzt mal als 2001:2002:2003:2005::/64 gegeben.
Unser Heimanschluss hat die statische IP 1.2.3.4 und unser VPS die 5.6.7.8
Wir legen uns ein Script an, was den Tunnel erstellen und löschen kann - der Inhalt ist eigentlich schon die halbe Miete. Wichtiger Hinweis noch: das Script geht davon aus, dass euer Interface am VPS eth0 heißt. Wenn es anders heißt, müsst ihr das ändern. Statt 6in41 kann für das Tunnel-Interface auch ein anderer Name gewählt werden - das muss dann halt im Script geändert werden.
#!/bin/bash
action=$1
case $action in
add)
ip tunnel add 6in41 mode sit remote 1.2.3.4 local 5.6.7.8 ttl 255 dev eth0
ip link set 6in41 up mtu 1480
ip addr add "2001:2002:2003:2004::1/64" dev 6in41
ip route add "2001:2002:2003:2005::/64" dev 6in41
;;
delete)
ip tunnel del 6in41
;;
*)
echo "Invalid action!"
;;
esac
Alles anzeigen
Das Script gehört im Optimalfall root:root und hat 700er Rechte.
Das ganz bastelt man sich dann noch in seine Netzwerkconfig rein...
auto eth0
iface eth0 inet static
address 5.6.7.8
netmask 255.255.255.255
pointopoint 172.31.1.1
gateway 172.31.1.1
iface eth0 inet6 static
address 2001:2002:2003:2004::1
netmask 64
gateway fe80::1
pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra
post-up /opt/scripts/sit.sh add
pre-down /opt/scripts/sit.sh delete
Alles anzeigen
Und, sofern man eine iptables Firewall auf dem VPS hat, bindet man für IPv4 das hier ein:
/sbin/iptables -A INPUT -i eth0 -s 1.2.3.4 -d 5.6.7.8 -p 41 -j ACCEPT
Und für IPv6 das hier:
/sbin/ip6tables -A FORWARD -i eth0 -o 6in41 -d 2001:2002:2003:2005::/64,2001:2002:2003:2004::2 -j ACCEPT
/sbin/ip6tables -A FORWARD -i 6in41 -o eth0 -s 2001:2002:2003:2005::/64,2001:2002:2003:2004::2 -j ACCEPT
Wenn man das will kann man hier theoretisch gleich Firewalling fürs Heimnetz betreiben. In der Form wird aber einfach stupide alles weitergeleitet.
Die Konfiguration in der FritzBox sieht dann so aus:
Bildschirmfoto von 2020-11-15 14-35-27.png
Wo ich mir nicht sicher bin, weil es auf meinem Server per Default an ist (da VPN Gateway), sind die Forwarding Optionen vom Kernel des VPS. Ich vermute mal stark, dass man noch net.ipv6.conf.all.forwarding=1 setzen muss. IPv4 Forwarding sollte eigentlich nicht benötigt werden.
Bei mir läuft das in der Form so alles unter Alpine Linux 3.12 in der H-Cloud - aber das sollte eigentlich unter jeder Distro bei nahezu jedem Provider klappen, würde ich zumindest aus dem Bauch heraus sagen.