IPv6 Tunnel in VM hinter Endian

  • Moin,

    da meine Frage zu nativer IPv6 Unterstützung (siehe hier: IPv6 Uplink?) sich leider vorerst erledigt hat habe ich es nun mit einem IPv6 Tunnel probiert. Betrieben wird das ganze Setup auf einem ESXi (VM Ware) Host mit Endian als NAT/Router.


    Ich habe mir vor einiger Zeit bei Tunnelbroker.net einen (bislang kostenfreien) IPv6 Tunnel organisiert und als Eth-Interface auf dem VM-Gast (Linux) eingerichtet. Dies hat auch einwandfrei funktioniert - solange ich eine der Public-IPs direkt auf dem VM-Gast konfiguriert hatte. Aus praktikablen gründen und da es kompliziert wurde mit mehreren Gateway/Routes (Public IP vs. Endian GW mit 2 Subnetzen) habe ich nun die Public-IP ebenfalls auf Endian umkonfiguriert mit Port-Forwarding für die notwendigen Dienste.


    Leider habe ich nunmehr festgestellt, dass der bislang einwandfrei funktionierende IPv6 Tunnel hierbei leider auf der Strecke liegen bleibt, da dieser keine Verbindung mehr bekommt.


    /etc/network/interfaces.d/he-ipv6-tunnel



    Ich habe nun gedacht es würde reichen ein Protokoll oder einen Port in Endian per Forwarding auf die Gast-VM zu aktivieren, damit der Tunnel wieder funktioniert. Leider scheint das ganze aber nun doch nicht so trivial zu sein.


    Belesen habe ich mich u.a. hier dazu:
    https://www.endpoint.com/blog/…-with-debianubuntu-behind

    Quote

    If you’re router supports configuration of forwarding more than just TCP/UDP, you’ll want to forward protocol 41 (aka IPv6) (NOT PORT 41), which is responsible for IPv6 tunneling over IPv4, to your static address.


    Soweit so gut. Leider finde ich aber keine Möglichkeit dieses Protokoll in Endian für Forwarding einzurichten?! Weiß da jemand Rat?

  • Ich habe mich nun einmal selbst dran probiert nach dieser Anleitung wie man eigene rc-scripte in Endian einbaut. Das ganze ist nicht wirklich ideal, da man damit in das Endian-System eingreift und "hinten herum" firewall-regeln anlegt.


    https://forums.he.net/index.php?topic=2199.0


    Über ein selbst erstelltes Skript mit dem Namen /var/efw/inithooks/rc.firewall.local habe ich nun probiert nach der Anleitung (mit start/stop befehl) die Firewall-Regeln anzulegen bzw. zu löschen. Die Variablen $WanIp bzw. $vmIP werden natürlich in meinem Skript entsprechend vorbelegt.


    Code
    1. # Allow IPv6 Tunnel Protocol
    2. iptables -A INPUT -p 41 -d $WanIp -j ACCEPT
    3. iptables -t nat -A PREROUTING -p 41 -d $WanIp -j DNAT --to $vmIP
    4. iptables -A FORWARD -p 41 -j ACCEPT
    5. (optional zu testen iptables -A FORWARD -p 41 -d 91.210.226.196 -j ACCEPT)


    Die entsprechenden Löschen-Befehle sind die selben, wobei "-A" durch "-D" ersetzt werden muss!


    Zwischenzeitlich hat das ganze nach ein wenig gefriemel funktioniert. Nach einem Neustart von Endian wollte ich die Probe auf's Exampel machen, ob es auch nach einem Neustart mit Start des Skript auf Anhieb klappt. Hier hakt es leider - obwohl die Firewall-Regeln erneut angelegt werden (was ich überprüft habe).


    Wieso das ganze nach ein wenig geteste mit Neu-Anlegen/Löschen der Regeln irgendwann plötzlich klappt ist mir ein Rätsel. VM-Seitig habe ich das Netzwerk ebenfalls ein paar mal neu gestartet bzw. probiert nur das Tunnel-Interface mit folgenden Befehlen manuell neu zu starten:


    Code
    1. ifdown he-ipv6ip tun del he-ipv6
    2. ifup he-ipv6


    Falls jemand eine bessere Idee hat gerne her damit. So richtig funktionieren will das ganze ja noch nicht. Leider lässt sich das IPv6 Tunnel-Protokoll ("Protokoll 41") nicht direkt über Endian auswählen für Forwarding/Nat o.ä.