Opnsense dual wan mit ipv6

Ich habe schon mal im Forum geschaut aber zu meinem Anliegen nichts passendes gefunden: ich nutze opnsense seit ein paar Wochen und mit ipv4 funktioniert alles (firewall, loadbalancing usw.) Ich balance einen 1&1 DSL Anschluss mit zwischengeschalteter Fritzbox und einen Vodafone Kabelanschluss ebenfalls mit zwischengeschalteter Fritzbox. Ich möchte jetzt die v6 adressen genau so balancen wie im v4 netz. Mit track interface scheint das nicht zu funktionieren, da man da ja überdies nur einen WAN port tracken kann. Ich habe SLAAC, DHCP und Static probiert, wobei ich bei Static überdies noch das problem habe, dass ich dann ja bei jedem wechsel der ip diese manuell oder via script nachziehen müsste. Hat da jmd. hier Erfahrungen, wie man das lösen kann?

Moin!

Also: So ganz einfach wird das nichts, denn in IPv6 hast du ja Prefixe, die providerspezifisch sind, aus denen deine Clients wiederrum Addressen bekommen. Das heißt: Du könntest höchstens ein Interface der OPNsense über einen Provider schicken und ein zweites über den anderen.
Sonst stimmen die ganzen Prefixe ja nicht mehr und du kriegst Routing-Probleme…

Ich weiß ja nicht, wie du es bei IPv4 genau machst?

Also Track-Interface geht nur immer über ein WAN-interface.

Was du machen könntest, weiss aber nicht ob es geht, das du dir ein Script bastelst, welche die IP-Adressen der WAN-Interface abfragt, zwischenspeicher und dann bei Änderungen per Update-URL diese bei ipv64 updatet.

Das hab ich ne Zeitlang auch so gemacht, das Script kannst von mir haben, ist aber auch nur aus dem Netz zusammen geklaut :slight_smile:
Muss du dir dann entsprechend anpassen und auf zwei Interface erweitern und dann per cronjob z.b. alle 5min laufen lassen.

Problem ist nur, hast du an der OPNSense den die öffentlichen WAN-Adressen der Anschlüsse ?
Bei Kabel mit einer Fritzbox im BridgeMode geht das ja noch, aber bei DSL. Sonst bringt das nichts.

Alternativ könntest du mal testen, ob das AddOn “IP-check” dir da weiterhelfen kann, weil das erkennt die externen IP-Adressen, ich weiss nur nicht, ob das mit zwei WAN-Verbindungen geht.

Bei ipv4 ist es vergleichsweise leicht: ich habe den die beiden fritzboxen habe jeweils ein eigenes netz und das geht auf die wan anschlüsse der opnsense und dann habe ich dadurch eine ipv4 die für den lan anschluss statisch abgreife und per dhcp in ein neues internes netz übergebe. So entsteht ein gateway in dem neuen netz, das dem LAN Anschluss als einziges bekannt ist

Das ist genau der Punkt: wenn ich nur ein Interface nutze, klappt das, das hat sogar schon in meiner TPlink ER605 funktioniert (Omada). Ich wollte aber dual wan nutzen, habe es mit NATv6 probiert. Die lösung für das ipv4 funktioniert ja auch nur über ein dual NAT, die Fritzboxen sind übrigens im ganz normalen Routermodus, die Verluste nehme ich in Kauf, weil ich den Modem- bzw. Bridgemode entweder nicht aktiviert kriege oder der Administrationsaufwand ziemlich hoch ist

mein Fehler, ich habe wohl das Antworten noch nicht so ganz verinnerlicht (die Funktion), deshalb hier nochmal

das mit dem script ist ein tolles angebot, vllt. hilft das ja wirklich. Ich würde das gerne versuchen

Das bringt dir aber höchstens für das Updaten der IPs etwas und nicht um auf IPv6 wirklich Loadbalancing zu machen…
Das geht nunmal mit providerspezifischen Prefixen nicht, weil wenn du jetzt etwas von einem Host im Provider-A-Netz an den Provider-Router von B schickst, wird er das ablehnen…
Das geht also nicht.
Dafür bräuchtest du eigene IPv6-Prefixe, die du dann bspw. per BGP an verschiedene Transit-Provider hängen kannst und da kannst du dann ein Loadbalancing basteln…

Ja, ich habe es auch schon erfolglos mit NPTv6 probiert. Irgendwie scheitere ich da immer wieder, Ich wäre ja mittlerweile schon mehr als zufrieden, wenn ich für eine Session eine feste leitung hätte und die andere nur den Failsafe darstellt. Meine Intention ist sowieso, dass ich für’s Homeoffice ausfallgeschützt bin, alles weitere wäre einfach für mich nur ein Nice to have. Ich bin halt bei der dual wan lösung auf beiden leitungen, solange das mit ipv6 nicht nahtlos funktioniert auf Dualstacks angewiesen und das kann ja möglicherweise irgendwann vorbei sein.

  1. Das wird so schnell nicht vorbei sein​:sweat_smile:
  2. Auch Failover wird ohne Scriptgebastel nichts werden, weil du ja trotzdem das provider-spezifische Prefix bekommst
  3. NPTv6 auf welches Prefix denn? Das geht ja auch nur jeweils auf eins der beiden​:sweat_smile:

Hier mal das Script was ich genutzt habe.

Es fragt per ipconfig die IP-Adresse des WAN-interfaces ab und filter die IP da raus, legt dir in einer Textdatei an. Bei jedem Lauf wird die aktuelle IP mit der abgespeichert geändert, ist die gleich, passiert nichts, bei Änderung laufen die Updates durch, bei mir für 3 Domain je IPv4 und IPv6.

Aber wenn du an der OPNSense die WAN-IP nicht hast, bringt dir das nichts, dann könntest du das genausogut mit dem DynDNS-Addon machen, darin kann man das interface auswählen, welches gemonitored werden soll.

Im Kopf stehen die Einträge für einen Cronjob mit 15min Intervall

#!/bin/sh
#
# cronjob:
# Update DynDNS by IPV64.net
# */15     *     *       *       *       root    /root/scripts/ipv64.sh > /dev/null 2>&1

# Variablen setzen
WAN_INTERFACE="igb0"
IPV4_FILE="ipv4.txt"
IPV6_FILE="ipv6.txt"
IPV6NET_FILE="ipv6net.txt"
OLD_IPV4=$(cat $IPV4_FILE)
OLD_IPV6=$(cat $IPV6_FILE)
OLD_IPV6NET=$(cat $IPV6NET_FILE)

# Abfrage aktuellen WAN-IP-Adressen
CURRENT_IPV4=$(ifconfig $WAN_INTERFACE | grep "netmask" | grep '' | awk -F " " '{gsub("/[0-9]*",""); print $2}')
CURRENT_IPV6=$(ifconfig $WAN_INTERFACE | grep "prefixlen 128" | grep '2a02' | awk -F " " '{gsub("/[0-9]*",""); print $2}')
CURRENT_IPV6NET=$(ifconfig $WAN_INTERFACE | grep "prefixlen 64 autoconf" | grep '2a02' | awk -F " " '{gsub("/[0-9]*",""); print $2}')

# Ausgabe aktuelle WAN-IP-Adressen
echo "aktuelle IPv4-Adresse: "$CURRENT_IPV4
echo "aktuelle IPv6-Adresse: "$CURRENT_IPV6
echo "aktuelles IPv6-Netz:   "$CURRENT_IPV6NET

# Falls IPv4-Adresse geändert, Update DynDNS-Dienst
if [ "$OLD_IPV4" != "$CURRENT_IPV4" ]; then
        /usr/local/bin/curl --interface $CURRENT_IPV4 -sSL "https://ipv64.net/......."
        sleep 3
        /usr/local/bin/curl --interface $CURRENT_IPV4 -sSL "https://ipv64.net/......."
        sleep 3
        /usr/local/bin/curl --interface $CURRENT_IPV4 -sSL "https://ipv64.net/......."
        sleep 3 && clear
        echo "$CURRENT_IPV4" > "$IPV4_FILE"
        logger "updated IP: $OLD_IPV4 -> $CURRENT_IPV4"
fi

# Falls IPv6-Adresse geändert, Update DynDNS-Dienst
if [ "$OLD_IPV6" != "$CURRENT_IPV6" ]; then
        /usr/local/bin/curl --interface $CURRENT_IPV6 -sSL "https://ipv64.net/......."
        sleep 3
        /usr/local/bin/curl --interface $CURRENT_IPV6 -sSL "https://ipv64.net/......."
        sleep 3
        /usr/local/bin/curl --interface $CURRENT_IPV6 -sSL "https://ipv64.net/........."
        sleep 3 && clear
        echo "$CURRENT_IPV6" > "$IPV6_FILE"
        logger "updated IP: $OLD_IPV6 -> $CURRENT_IPV6"
fi

# Abspeichern aktuelle IPv6NET-Adresse
echo "$CURRENT_IPV6NET" > "$IPV6NET_FILE"
logger "updated IP: $OLD_IPV6NET -> $CURRENT_IPV6NET"

exit

  1. wollen wir es hoffen, die Provider scheinen ja gar nicht so begeistert von dual stack zu sein und versuchen es immer wieder mit dem DSlite.
  2. das das ohne Script nicht funktionieren wird, ist leider eine Tatsache, da ja egal wie, die jeweils zu nutzende “static” IP nicht feststeht, sondern sich jederzeit ändern kann.
  3. wollte ich für jedes Prefix eine eigene Regel für das NPTv6 erstellen um eine ULA zu übersetzen. Der Client sollte ausschliesslich die ULA sehen und nutzen. Das habe ich nicht als laufen gekriegt.

Danke, das werde ich entsprechend anpassen und dann mal testen. Schauen wir mal. Kann wohl etwas dauern. Wenn Dir sonst noch was einfällt, freue ich mich über jeden Input

Was klar ist, es gibt keine öffentlichen IPv4 Adressen mehr, ergo versuchen die welchen an allen Ecken und Enden einzusparen.

Der letzte Punkt ist recht einfach, aber auch da macht er ja kein dynamisches LB. Und dann kannst du es auch gleich sein lassen mit den ULAs

Ja, das mit den ULAs war wohl wirklich eine Sackgasse, nach all dem rumprobieren, habe ich die Hoffnung verloren, dass das irgendwie nutzen kann. Ich dachte, dass ich die IPs der beiden Provider bündeln kann. War wohl ein Fehler in meiner Logik. Wenn das funktionieren würde, könnte ich ja auch gleich die beiden IPs auf den Client delegieren und der sucht sich dann die IP aus, die er nutzen will. Das gibt aber dann auch wieder durcheinander, weil alle Pakete, die mit der IP der einen Leitung über die alternative Leitung gehen, sofort gedropt werden.