markustm
Goto Top

VPN (L2TP over IPSec) mit Zyxel USG40 und FritzBox 7590

Hallo liebes Administrator.de Forum,

nach ausgiebiger, vorheriger Suche in diesem und anderen Foren, habe ich leider (auch wenn der Titel meiner Frage es anders vermuten lässt) keine Lösung für mein Problem gefunden. Das Thema Zyxel USG Firewall ivm. FritzBox und VPN ist ja schon oft besprochen worden, aber dennoch erhalte ich einen Fehler, dessen Lösung mir nicht einfallen mag. Vielleicht hat jemand von euch eine zündende Idee! face-smile

Folgendes Szenario:

Internet --> FritzBox 7590 (192.168.178.1) --> exposed host Zyxel USG40 (192.168.178.2, DHCP Host) --> internes LAN (192.168.178.3 - 192.168.178.X)
Internet --> FritzBox 7590 (192.168.178.1) --> Gast WLAN (kein Zugriff auf das interne LAN)

Ziel: VPN Verbindung mittels iPad/iPhone/MAC/Win von extern auf internes LAN

Bisherige Schritte:

- FritzBox -
hat die lokale IP: 192.168.178.1/255.255.255.0
1. VPN in der FritzBox deaktiviert, d.h. keine Profile, etc. gespeichert, VPN Bereich ist leer und deaktiv
2. NAT in der FritzBox eingerichtet für ESP, UDP 4500 und UDP 500 auf Zyxel USG40
3. Zyxel USG40 als einziges Gerät in der Fritzbox und als exposed host (inkl. selbstständiger Portfreigabeerlaubnis)
4. ist mit einem DynDNS Account verknüpft, da keine statische IP

- Zyxel USG40 -
hat die loakel IP: 192.168.178.2/255.255.255.0
1. ist DHCP Host für alle angeschlossene Geräte am LAN Port
2. ist Gateway für alle angeschlossene Geräte

Wenn ich nun, z.B. von einem iPad über extern (UMTS) auf dem eine L2TP VPN Verbindung eingerichtet ist auf die Zyxel Box verbinden will, erhalte ich in der Zyxel folgendes Protokoll (siehe Bild):

vpn_log_zyxel

Mein Lösungsansatz:

Das Problem scheint "Phase 2 proposal mismatch" zu sein und daher in den Authentifizierungseinstellungen zu liegen.
Ich habe alle Phase 1 und Phase 2 Authentifizierungseinstellungen überprüft und zwischen Phase 1 und Phase 2 verglichen und finde hier keinen Unterschied, kann mir daher den Fehler nicht erklären und weiß nicht weiter:

IPSeC-VPN Einstellungen --> VPN-Verbindung:
aktiviert,
deaktiviert: Replay Detection aktivieren
deaktiviert: NetBIOS-Übertragung über IPSec aktivieren
VPN-Gateway Anwendungsszenario: Remote-Zugriff (Server)
Phase 2 Einstellung:
- SA Lebensdauer: 86400
- Protokoll: ESP
- Verkapselung: Transport
- Verschlüsselung: AES256, Authentifizierung: SHA256
- PFS: DH2

IPSeC-VPN Einstellungen --> VPN-Gateway:
aktiviert,
IKEv1
Meine Adresse: WAN1
Peer-Gateway Adresse: dynamische Adresse
PSK: XXX
Lokaler ID Typ: IPv4, 0.0.0.0
Peer-ID Typ: Any
Phase 1 Einstellung:
- SA Lebensdauer: 86400
- Negotiationsmodus: Main
- Verschlüsselung: AES256, Authentifizierung: SHA256
- Schlüsselgruppe: DH2
- NAT Traversal

L2TP VPN Einstellungen
Authentifizierungsmethode: default
Authentifizierungsserver-Zertifikat: default
Erster DNS Server: Custom defined, 192.168.178.2
Zweiter DNS Server: Custom definded, 192.168.178.2


Jemand eine Idee?

Content-Key: 349189

Url: https://administrator.de/contentid/349189

Printed on: April 16, 2024 at 19:04 o'clock

Member: aqui
Solution aqui Sep 15, 2017 updated at 09:22:10 (UTC)
Goto Top
Wenn du wirklich L2TP machst oder machen willst ist das aussichtslos !
Die FB supportet ausschliesslich native IPsec und de facto kein L2TP ! Steht auch ganz klar so auf der AVM VPN Portalseite.
Wenn also dein Zyxel auf L2TP konfiguriert ist muss das scheitern weil die FB L2TP eben nicht supportet. Deshalb auch der "Protocol Mismatch".
Stelle das beidseitig auf native IPsec um dann klappt das sofort. Siehe auch dieses Tutorial:
IPsec VPN Praxis mit Standort Vernetzung Cisco, Mikrotik, pfSense, FritzBox u.a

Für das Ziel: VPN Verbindung mittels iPad/iPhone/MAC/Win von extern auf internes LAN findest du auch hier noch entsprechende Grundlagen:
IPsec IKEv2 VPN für mobile Benutzer auf der pfSense oder OPNsense Firewall einrichten
Client VPN Dialin und LAN2LAN VPN für die FB hier:
https://avm.de/service/vpn/uebersicht/
Auch das basiert auf native IPsec mit IKE und nicht auf L2TP.
Member: Pjordorf
Solution Pjordorf Sep 15, 2017 at 11:18:32 (UTC)
Goto Top
Hallo,

Zitat von @markustm:
Internet --> FritzBox 7590 (192.168.178.1) --> exposed host Zyxel USG40 (192.168.178.2, DHCP Host) --> internes LAN (192.168.178.3 - 192.168.178.X)
Welche IP hat denn deine Zywall - die hat doch 2 oder?

- FritzBox -
Macht nur IPSec oder PPTP Passthrough. https://avm.de/service/fritzbox/fritzbox-7490/wissensdatenbank/publicati ...

Gruß,
Peter
Member: markustm
markustm Sep 15, 2017 at 12:00:33 (UTC)
Goto Top
Vielen Dank für die Antwort. Das habe ich leider nicht gesehen, dass die FB nur IPSec ohne L2TP bzw. nur PPTP unterstützt. Da kann ich ja ewig fummeln ;) Danke, ich werde es dann mit IPSec testen.
Member: markustm
markustm Sep 15, 2017 at 12:15:22 (UTC)
Goto Top
Achso, @aqui: Du meinst dies aber so, dass die FB sich nicht mittels L2TP an der Zyxel ins VPN verbinden kann oder? Denn die FB soll den Traffic ja nur an die Zyxel durchleiten und dort wird der VPN service gehostet. Also von extern via iPhone/etc. VPN-client soll die Verbindung direkt mit der Zyxel Box errichtet werden. Die FB routed den Traffic nur durch.

So meintest du deine Antwort auch, oder? Du meintest nicht Site2Site oder?
Member: Pjordorf
Pjordorf Sep 15, 2017 at 12:41:59 (UTC)
Goto Top
Hallo,

Zitat von @markustm:
Du meinst dies aber so
Eingehend oder ausgehend das ist hier die Frage. Passthrough kann beides bedeuten. Eingehend kann die Fritte kein L2TP, ausgehend hindert die aber nicht.....
Und die Fritte kennt nur ihr (AVM) IPSec (Eingehend).

Denn die FB soll den Traffic ja nur an die Zyxel durchleiten
Wird Passthru oder Passthrough oder Pass Thru genannt.

Du meintest nicht Site2Site oder?
Da kennt die nur ihr IPSec und dann geht auch ihr Passthrough nicht mehr.

Gruß,
Peter
Member: sk
sk Sep 15, 2017 updated at 17:24:55 (UTC)
Goto Top
Zitat von @markustm:
Das Problem scheint "Phase 2 proposal mismatch" zu sein und daher in den Authentifizierungseinstellungen zu liegen.
Ich habe alle Phase 1 und Phase 2 Authentifizierungseinstellungen überprüft und zwischen Phase 1 und Phase 2 verglichen und finde hier keinen Unterschied

Phase 1 und 2 müssen auch nicht die selben Settings haben, sondern die beiden VPN-Peers (hier USG und Client) müssen sich in beiden Phasen jeweils auf einen kleinsten gemeinsamen Nenner der jeweils unterstützten Settings einigen. Du musst die USG also so konfigurieren, dass das es einen solchen gemeinsamen Nenner gibt. Dies setzt natürlich voraus, dass Du weisst, was clientseitig unterstützt wird. Unter Umständen ist man hier möglicherweise auch gezwungen zu entscheiden, ob man aus Sicherheitsgründen technisch veraltete Clients ausschließt oder ob man auf dem VPN-Server auch Verschlüsselungs- und Hashing-Verfahren anbietet, die nicht mehr als sicher gelten. Das ist aber nicht Dein entscheidendes Problem.

Ich könnte jetzt einfach mit Verweis auf das Handbuch der USG den von mir vermuteten Konfigfehler direkt benennen, aber zur Selbstkontrolle meines eigenen Sachverstandes versuche ich mal, den technischen Hintergrund ein wenig zu beleuchten. Auch auf die Gefahr hin, mir evtl. eine Blöße zu geben und hier "geschlachtet" zu werden - aber gerade das schult ja ungemein... Ein paar Vereinfachungen sind zudem der Lesbarkeit und meiner Zeitökonomie geschuldet. face-wink

Ein Element der in Phase 2 zwischen den VPN-Peers ausgehandelten Sicherheitsvereinbarung ist, welcher Traffic verschlüsselt über die IPSec-Verbindung übertragen wird.
Bei einem Site-to-Site-Tunnel sind dies die jeweils auf beiden Seiten beteiligten IP-Netze. Diese sind deshalb in der Phase2-Konfiguration eines Site-to-Site-Tunnels normalerweise anzugeben. Gemäß grundlegendem IPSec-Standard wird beiderseits nur solcher Traffic verschlüsselt und durch den Tunnel geschickt, der diese Bedingungen erfüllt. Wenn es mehrere Kombinationen lokaler und entfernter Netze gibt, werden mehrere Phase2-SAs mit der selben Phase1-SA assoziiert (Soweit das ursprüngliche Grundprinzip - da dies freilich nicht sonderlich gut skaliert, bieten mittlerweile alle Hersteller die Möglichkeit, Traffic in den IPSec-Tunnel zu routen, obwohl er gar nicht in der Phase2-SA vereinbart ist. Bei der USG geht das auch. Ob dies allerdings [später] RFC-konform [wurde] oder einfach eine proprietäre aber industrietypische Implementierung ist, vermag ich nicht zu sagen).
Bei einem Client-to-Site-Tunnel ist die IP-Adresse des Clients häufig vorab nicht bekannt. Aus diesem Grunde wird diese in der Phase2-Konfiguration des VPN-Servers idR nicht fest hinterlegt, sondern erst bei der Einwahl dynamisch zwischen Server und Client vereinbart.
Den vorgenannten Szenarien Site-to-Site und Client-to-Site ist gemein, dass es nicht nur um die direkte Kopplung zweier Hosts geht, sondern sich zumindest auf einer Seite mehrere Hosts hinter dem eigentlichen Tunnelendpunkt befinden. Aus diesem Grunde werden komplette IP-Pakete (also Payload und IP-Header) verschlüsselt und als Payload in ein komplett neues IP-Paket (mit abweichenden Quell- und Ziel-IPs) eingepackt und dieses dann mittels weiterer kryptographischer Verfahren gegen Manipulation abgesichert. Je nach gewähltem Protokoll (ESP vs. AH) variiert der Umfang des Manipulationsschutzes.
Auch L2TPoverIPSec ermöglicht im Endergebnis ein Client-to-Site-Szenario. Das Element "Site-Zugriff" wird hier aber bei genauer Betrachtung nicht über den IPSec-Tunnel realisiert, sondern nachgelagert mittels L2TP. IPSec dient hier lediglich dazu, die L2TP Verbindung zwischen zwischen dem VPN-Gateway und dem Client zusätzlich abzusichern. Die IPSec-Verbindung ist also eine reine Host-zu-Host-Kommunikation. Anders als bei den o.g. Szenarien sind (ausschließlich) beide Endpunkte selbst Quelle und Ziel der kryptografisch gesicherten Kommunikation. Bei der Konfiguration des IPSec-Tunnels macht sich dies insofern bemerkt, als dass in Phase2 nicht mehr der Tunnel-Modus, sondern der Transport-Modus zu wählen und das IPSec-Gateway selbst mit seiner Outside-IP als "local IP" zu definieren ist, denn der L2TPoverIPSec-Client wird ebenfalls diesen Modus wählen und erwarten, dass er bei der Aushandlung der Phase2-Parameter von der Gegenstelle diese IP-Adresse als Vorschlag präsentiert bekommt - schließlich ist diese das gewünschte Ziel seiner (verschlüsselten) Kommunikation.

Da der Einrichtungsassistent der USG sowie die meisten Konfigurationsanleitungen davon ausgehen, dass die USG mit ihrem WAN-Interface direkt im Internet steht, sehen diese als "local IP" in den Phase2-Settings die IP des WAN-Interfaces vor. Diese ist in Deinem Szenario jedoch eine aus dem Internet nicht erreichbare private IP-Adresse. Die öffentliche IP-Adresse hat in Deinem Fall die Fritzbox. Demzufolge müsstest Du in den Phase2-Settings der USG die WAN-IP-Adresse der Fritzbox angeben. Ich nehme an, dass Du dies nicht beachtet hast (die Information hast Du leider ausgespart oder ich habs übersehen).
Dies steht auch so im Handbich der USG: https://www.manualslib.com/manual/961698/Zyxel-Communications-Zywall-110 ...
In einem erst kürzlich erschienenen Anleitungsvideo werden zudem eine zusätzliche NAT- und eine korrespondierende Firewallregel eingerichtet: https://www.youtube.com/watch?v=vfbPFaifpbY
Das Ziel dahinter erschließt sich mir noch nicht so ganz. Das macht eigentlich nur dann Sinn, wenn auch bei IPSec-Traffic im Transportmodus im verschlüsselten Payload nochmal der ursprüngliche (dann nicht von der Fritzbox genattete) IP-Header steckt und dieser von der USG nach der Entschlüsselung beachtet wird. Dass dies so ist, legt diese Lektüre nahe: https://howdoesinternetwork.com/2014/ipsec-tunnel-transport-mode
Bislang bin ich jedoch immer davon ausgegangen, dass im Transport-Mode nur der eigentliche Payload der Verbindung verschlüsselt wird. So wird es jedenfalls an vielen Stellen erläutert. Siehe z.B. https://security.stackexchange.com/questions/76308/when-do-i-use-ipsec-t ...

Wie auch immer - am Ende des Tages sehe ich ein Problem: Egal welche Anleitung letztlich funktioniert, sofern Du an der Fritzbox eine wechselnde öffentliche IP-Adresse haben solltest, erscheint das Ganze unpraktikabel, weil die WAN-IP der Fritzbox auf der USG fest hinterlegt wird und die USG keinen Mechanismus kennt, der diese Konfigurationseinstellung erforderlichenfalls automatisch anpasst. Hier müsste man auf einem Device hinter der USG einen Cronjob laufen lassen, der dies per CLI oder SNMP automatisiert.

Gruß
sk
Member: markustm
markustm Sep 19, 2017 updated at 11:56:22 (UTC)
Goto Top
So, nach ein paar Tagen Fummelei habe ich mir folgende Lösung überlegt:

Ich umgehe das VPN L2TP over IPSEC FritzBox Problem und nutze das IPSEC VPN der Fritzbox only.

Internet --> FritzBox (192.168.20.1) --> Zyxel USG 40 (WAN 1: 192.168.20.3 // LAN 1: 192.168.178.2) --> LAN 1 Netz mit 192.168.178.X

Ich verbinde mich via iPhone/iPad/etc. per IPSec VPN (gehosted von der FritzBox) mit der Fritzbox und habe dann am Remote-Client eine IP von 192.168.178.201.

Ich komme nun mit dem Remote Client auf die FB (192.168.20.1) und die USG (192.168.20.3).

Meine Frage:
Wie kann ich nun sicherstellen, dass ich mit dem Remote Client auf die Geräte im LAN 1 (192.168.178.X) zugreifen kann?
--> statische Route in der Fritz Box?

Will nicht so recht klappen, eine Idee?
Member: aqui
aqui Sep 19, 2017 updated at 12:41:44 (UTC)
Goto Top
mit der Fritzbox und habe dann am Remote-Client eine IP von 192.168.178.201.
Nein ! Das kann nicht gehen. Ist ja auch logisch.
Wie soll die FB bitte eine IP aus dem .178.0er Netz vergeben was sie gar nicht kennt und nicht direkt an sie angeschlossen ist ? Dazu müsste sie magische Fähigkeiten haben was natürlich Quatsch ist...weisst du selber.
Einem IPsec Client ist nur das .20.0er Netz bekannt...jedenfalls erstmal.

Wenn du die FritzBox allerdings richtig customized und ihr beibringst das es 2 IP Netze hinter ihr gibt dann wird auch aller Traffic vom Client in das .178.0er Netz in den Tunnel geroutet:
https://avm.de/service/vpn/praxis-tipps/mit-fritzfernzugang-auf-mehrere- ...
Wichtig also in der Konfig:
acesslist =
"permit ip any 192.168.20.0 255.255.255.0",
"permit ip any 192.168.178.0 255.255.255.0";

Und die FritzBox braucht zwingend eine statische Route:
Zielnetz: 192.168.178.0, Maske: 255.255.255.0, Gateway: 192.168.20.3

Den Erfolg kannst du dir ansehen wenn du auf dem VPN Client bei aktivem VPN mal ein route print (Winblows) eingibst. Dann siehst du das .20er und .178er Traffic in den Tunnel geht. So einfach ist das !
Dem kaskadierten Router bzw. der UTM Firewall musst du dann noch erlauben das die vom Outbound Netz (.20) eingehenden .20.x VPN Client IP Adressen die Firewall nach intern passieren dürfen sonst ist natürlich Nada mit dem VPN...logisch !

Der Konfig Aufwand ist ungleich höher und birgt das erhöhte Sicherheits Risiko das du damit versehentlich ein Loch in die Firewall bohrst wenn du ein Fehler machst.
Da du jetzt ja so oder so auf native IPsec gehst fragt man sich ernsthaft warum du das VPN denn nicht auf der UTM selber terminierst wie es technsich am besten wäre.
Das wäre zum einen sicherer, die Konfig einfacher und erspart dir ne Menge Konfig Schritte.
Die UTM Gurke supportet mit an Sicherheit grenzender Wahrscheinlichkeit auch native IPsec als VPN Protokoll, oder ? Sonst taugt sie eh nix.
Kommt man eigentlich auch von selber drauf wenn man mal ganz in Ruhe drüber nachdenkt...?! face-wink