Pakete gehen beim Routing von IPSec nach Wireguard verloren (Route-Based-VPNs)
Hallöchen, ich schon wieder,
kaum hat man das eine Problem gelöst, schon geht das nächste los...
Mein Setup ist folgendes:
Fortigate ===Route-Based-IPSec-Tunnel=== Debian-Server (strongswan, frr) ===Route-Based-Wireguard=== Site2 (Opnsense)
Sowohl der IPSec (local_ts und remote_ts = 0.0.0.0/0) als auch wireguard (allowedIPs = 0.0.0.0/0) sind route based und haben von mir eine /30er Interface-IP bekommen. Über FRR werden BGP-Routen ausgetauscht und sind auch überall korrekt bekannt.
Ein Ping geht vom Debian Server aus in alle Richtungen mit Antwort. Vom Wireguard-Netz aus kommt man auch ins IPSec-Netz und dort ins LAN (tcpdump als auch die Forti-Logs beweisen das). Antworten aus dem IPSec-Netz in Richtung Debian-Server, die dann weiter ins Wireguard sollen bleiben aber scheinbar auf dem Debian Server irgendwo hängen. Ein tcpdump zeigte auch hier, dass die Pakete über den IPSec-Tunnel reinkommen aber auf keinem anderen Interface tauchen sie auf. nftables hab ich schon ausgeschlossen als Fehlerquelle (Policy accept in INPUT und FORWARD chains). MTU kam mir dann noch aber dann würden ja die Pakete überhaupt nicht fließen oder irre ich mich da? Die MTU ist zwar verschieden (WG 1412, IPSec 1480) aber nachdem vom Wireguard in Richtung IPSec was geht sollte das ja nicht das Problem sein (im Zweifel wird halt fragmentiert). Aber auch mit gleicher MTU (hab mal 1200 probiert) besteht das Problem. Es besteht auch bei Verbindungen zu anderen Wireguard-Netzen auf dem Debian-Server. Terminiert das Paket aber auf dem Debian-Server selbst (auch auf einem seiner anderen Wireguard-IPs), kommt eine Verbindung zustande.
Hab ich evtl. irgendwas in der sysctl vergessen (IP-Forwarding ist eingeschalten, sonst würden ja auch die WG Pakete nicht im IPSec Tunnel landen).
Danke schonmal für eure Antworten!
Grüße
Ketanest
kaum hat man das eine Problem gelöst, schon geht das nächste los...
Mein Setup ist folgendes:
Fortigate ===Route-Based-IPSec-Tunnel=== Debian-Server (strongswan, frr) ===Route-Based-Wireguard=== Site2 (Opnsense)
Sowohl der IPSec (local_ts und remote_ts = 0.0.0.0/0) als auch wireguard (allowedIPs = 0.0.0.0/0) sind route based und haben von mir eine /30er Interface-IP bekommen. Über FRR werden BGP-Routen ausgetauscht und sind auch überall korrekt bekannt.
Ein Ping geht vom Debian Server aus in alle Richtungen mit Antwort. Vom Wireguard-Netz aus kommt man auch ins IPSec-Netz und dort ins LAN (tcpdump als auch die Forti-Logs beweisen das). Antworten aus dem IPSec-Netz in Richtung Debian-Server, die dann weiter ins Wireguard sollen bleiben aber scheinbar auf dem Debian Server irgendwo hängen. Ein tcpdump zeigte auch hier, dass die Pakete über den IPSec-Tunnel reinkommen aber auf keinem anderen Interface tauchen sie auf. nftables hab ich schon ausgeschlossen als Fehlerquelle (Policy accept in INPUT und FORWARD chains). MTU kam mir dann noch aber dann würden ja die Pakete überhaupt nicht fließen oder irre ich mich da? Die MTU ist zwar verschieden (WG 1412, IPSec 1480) aber nachdem vom Wireguard in Richtung IPSec was geht sollte das ja nicht das Problem sein (im Zweifel wird halt fragmentiert). Aber auch mit gleicher MTU (hab mal 1200 probiert) besteht das Problem. Es besteht auch bei Verbindungen zu anderen Wireguard-Netzen auf dem Debian-Server. Terminiert das Paket aber auf dem Debian-Server selbst (auch auf einem seiner anderen Wireguard-IPs), kommt eine Verbindung zustande.
Hab ich evtl. irgendwas in der sysctl vergessen (IP-Forwarding ist eingeschalten, sonst würden ja auch die WG Pakete nicht im IPSec Tunnel landen).
Danke schonmal für eure Antworten!
Grüße
Ketanest
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 11414856666
Url: https://administrator.de/contentid/11414856666
Ausgedruckt am: 01.11.2024 um 04:11 Uhr
27 Kommentare
Neuester Kommentar
Hast du in der OPNsense das automatische Lernen der Wireguard Routen abgeschaltet, sprich den Haken gesetzt bei "Disable Routes"??
Bei der Aktivierung von dynamischem Routing mit OSPF oder BGP ist das Abschalten des Cryptokey Routings essentiell wichtig.
Was sagt die BGP Routing Tabelle und auch die globale Routing Tabelle auf dem Debian Server? "Sieht" der Server alle remoten IP Netze und das zu jeder Zeit?
2 unterschiedliche MTU Größen auf den Tunneln zu fahren ist natürlich kontraproduktiv und wenig intelligent. Wireguard nutzt im Default 1420. Warum man das dann überflüssigerweise noch auf 1412 anpasst ist dann mehr oder minder sinnfrei. Deutlich sinnvoller wäre es die Tunnel MTU homogen zu gestalten also auch z.B. IPsec auf 1420 anzupassen um eine Fragemntierung zwischen den Tunneln sicher zu vermeiden.
Bei der Aktivierung von dynamischem Routing mit OSPF oder BGP ist das Abschalten des Cryptokey Routings essentiell wichtig.
Was sagt die BGP Routing Tabelle und auch die globale Routing Tabelle auf dem Debian Server? "Sieht" der Server alle remoten IP Netze und das zu jeder Zeit?
2 unterschiedliche MTU Größen auf den Tunneln zu fahren ist natürlich kontraproduktiv und wenig intelligent. Wireguard nutzt im Default 1420. Warum man das dann überflüssigerweise noch auf 1412 anpasst ist dann mehr oder minder sinnfrei. Deutlich sinnvoller wäre es die Tunnel MTU homogen zu gestalten also auch z.B. IPsec auf 1420 anzupassen um eine Fragemntierung zwischen den Tunneln sicher zu vermeiden.
Hier rennt das fehlerlos auf einem Debian 12. Allerdings mit einem klassischen Setup.
Der Debian Server bedient unter Strongswan ne Handvoll Fritzboxen mit IKEv1 agressive und ist ein IKEv2 Dialin VPN Server für alle onboard Clients der bekannten OS und Smartphones.
Parallel dazu einige neue WG Fritzboxen und einige Android Clients mit WG.
Da kann erwartungsgemäß jeder mit jedem ohne irgendwelche relevanten Ausfälle.
Der Debian Server bedient unter Strongswan ne Handvoll Fritzboxen mit IKEv1 agressive und ist ein IKEv2 Dialin VPN Server für alle onboard Clients der bekannten OS und Smartphones.
Parallel dazu einige neue WG Fritzboxen und einige Android Clients mit WG.
Da kann erwartungsgemäß jeder mit jedem ohne irgendwelche relevanten Ausfälle.
Kann sein das je nachdem über welche Tools du den Wireguard Tunnel aufbaust die Firewall-Tags des VTI Tunnels hier zu einem Routing-Fehler führen.
Checke die Routing Rules
Nimm dann mal testweise statt einem VTI Tunnel einen simplen GRE Tunnel zwischen Forti und Debian über den IPSec Tunnel.
https://docs.fortinet.com/document/fortigate/6.4.2/sd-wan-deployment-wit ...
Hier klappt das im Test problemlos sowohl via VTI als auch GRE zu einem Strongswan mittels IKEv2 VPN und von dort aus über einen Wireguard-Tunnel zu routen.
Immer schön drauf achten das alle Stellen auch wieder korrekte Routen zur Absenderadresse besitzen, das vergisst man schnell mal was.
Gruß Strods
Checke die Routing Rules
ip rule show
und die Tabellen ip route show table all
Nimm dann mal testweise statt einem VTI Tunnel einen simplen GRE Tunnel zwischen Forti und Debian über den IPSec Tunnel.
https://docs.fortinet.com/document/fortigate/6.4.2/sd-wan-deployment-wit ...
Hier klappt das im Test problemlos sowohl via VTI als auch GRE zu einem Strongswan mittels IKEv2 VPN und von dort aus über einen Wireguard-Tunnel zu routen.
Immer schön drauf achten das alle Stellen auch wieder korrekte Routen zur Absenderadresse besitzen, das vergisst man schnell mal was.
Gruß Strods
Zitat von @aqui:
Jepp, aber wie immer gilt Vertrauen ist gut Kontrolle ist besser.das alle Stellen auch wieder korrekte Routen zur Absenderadresse besitzen
Wenn er beim BGP nicht geschlampert hat sollte das ja eigentlich der Fall sein. 😉Mal sehen obs was bringt.
Erst mal mit einem kühlen Blonden in den Garten setzen, dann löst sich das Brett vorm Kopp meist wie von selbst . Good Luck 👍. Eine Runde für alle 🍺Zitat von @ketanest112:
Das mit dem GRE Tunnel hab ich nicht verstanden, wie das gehen soll. Ich baue den IPSec Tunnel nicht um und lege statt dem vti einen GRE Tunnel an? Also:
Und auf den Konfigurier ich dann die IPs analog zum vti?
Das mit dem GRE Tunnel hab ich nicht verstanden, wie das gehen soll. Ich baue den IPSec Tunnel nicht um und lege statt dem vti einen GRE Tunnel an? Also:
ip tunnel add NAME local x.x.x.x remote y.y.y.y mode gre key 42
Nein. IPSec Tunnel auf der Fort mit einer Phase2 Policy SRC = [WAN-IP-Forti]/32 DST = [WAN-IP-DEBIAN]/32
Dann an der Forti einen neuen GRE-Tunnel anlegen mit LOCAL = [WAN-IP-Forti] und REMOTE = [WAN-IP-DEBIAN]
Dem GRE Tunnel Interface auf der Forti eine Transfernetz IP geben z.B.
10.7.7.1/30
Auf dem Debian ein neues GRE Interface anlegen
ip tunnel add name gre-forti type gre local [WAN-IP-DEBIAN] remote [WAN-IP-Forti]
ip address add dev gre-forti 10.7.7.2/30
ip link set gre-forti up
Dann lässt sich wie gewohnt über das GRE Transfernetz routen.
Zitat von @ketanest112:
Also mit GRE Tunnel geht überhaupt nix. Egal ob v4 oder v6. Musste v6 auch mal testen weil v4 hinter CGNAT liegt (Forti Seite).
Klappt hier wie erwartet aber ebenso einwandfrei, ergo machst du immer noch einen Fehler den wir nicht sehen können. Und bei IPv6 musst du natürlich logischerweise einen ip6gre Tunnel nehmen keinen gre.Also mit GRE Tunnel geht überhaupt nix. Egal ob v4 oder v6. Musste v6 auch mal testen weil v4 hinter CGNAT liegt (Forti Seite).
Der Tunnel wird mit wg-quick aufgebaut
Geht auch mit systemctl restart wg-quick@wg0.serviceDas mit dem GRE Tunnel hab ich nicht verstanden
Grob anhand Praxis Beispielen wird das u.a. HIER erklärt.So überleben die Tunnel dann auch nen Reboot.
Jein! Nur dann wenn du auch ein systemctl enable wg-quick@wg0.service ausgeführt hast! Genau das meinte ich ja.
Hast du aber dann zumindest leider missverständlich und doppeldeutig ausgedrückt. Kann auch bedeuten das du wg-quick down wg0 bzw. das Pendant wg-quick up wg0 übers CLI benutzt. Aber egal... Zurück zum Thema!
Reservierte IANA Ports zu verwenden ist auch nicht gerade die feine englische Art.
Wenn dann solltest du als verantwortungsvoller Admin bei den WG Ports immer im Bereich der freien Ephemeral Ports bleiben!