mali2008
Goto Top

OpenWRT IKEv2 Client mit Strongswan (routing)

Hallo zusammen,

ich habe leider im Forum und google nichts passendens gefunden, somit hier meine Frage zur Konfiguration bzw. Routing.

Ausgangslage:

- Fritzbox als Bridge mit statischer IP
- Mikrotik als Router
- OpenWRT Router hinter dem Mikrotik (als IKEv2 Test) in Standardkonfiguration und strongswan-full

Ziel ist es mit dem OpenWRT Router einen Verbindung als IKEv2 Client zu realisieren.

1. Wenn ich dies einrichte, dann habe ich keinen Zugriff mehr auf den Router und die Clients kommen auch nicht mehr ins Internet.
2. Wenn ich im rightsubnet nicht 0.0.0.0/0 eintrage, dann sehe ich auf der Konsole, dass die Verbindung erfolgreich war, bekomme jedoch keinen Datenverkehr durch den Tunnel

Wie es es möglich, den Tunnel aufzubauen und nur einige Domain über den Tunnel anzusteuern?

Über OpenVPN oder L2TP/IPSec im Mikrotik habe ich je ein Interface gehabt und mittels Iptable Mangel und iproute mir eine Routenregel zurecht gemacht. Das funktioniert hier nicht bzw. ich weiß nicht wie.

Ich hoffe, dass ich mich verständlich ausgedrückt habe.

Gruß - mali

Meine Konfiguration:

ipsec.conf:

conn test
keyexchange=ikev2
dpdaction=clear
dpddelay=300s
eap_identity=USERNAME
leftauth=eap-mschapv2
leftsourceip=%config
right=ip vom vpn provider
rightauth=pubkey
#rightsubnet=0.0.0.0/0
rightid=%any
type=tunnel
auto=add

strongswan.conf

# Configuration changes should be made in the included files

charon {
	load_modular = yes
	threads = 16
        dns1 = 192.168.1.1 
        nbns1 = 192.168.1.1
	plugins {
		include strongswan.d/charon/*.conf
	}
}

include strongswan.d/*.conf

Firewall im Standard, nur diese Einträge noch für IPSec hinzugefügt.

config rule
	option name 'Allow-IPSec-ESP'  
	option proto 'esp'  
	option target 'ACCEPT'  
	option src 'wan'  

config rule
	option name 'Allow-ISAKMP'  
	option src 'wan'  
	option dest_port '500'  
	option proto 'udp'  
	option target 'ACCEPT'  

config rule
	option name 'Allow-IPSec-NAT-T'  
	option src 'wan'  
	option dest_port '4500'  
	option proto 'udp'  
	option target 'ACCEPT'  

config rule
	option name 'Allow-IPSec-AH'  
	option src 'wan'  
	option proto 'ah'  
	option target 'ACCEPT'  

Content-Key: 424665

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

Printed on: April 25, 2024 at 00:04 o'clock

Member: aqui
aqui Mar 03, 2019 updated at 10:34:17 (UTC)
Goto Top
Hier findest du ein paar Infos zu dem Thema:
IPsec IKEv2 VPN für mobile Benutzer auf der pfSense oder OPNsense Firewall einrichten
Gilt zwar für die pfSense (FreeBSD Unterbau) dürfte aber bei OpenWRT identisch sein.
IKEv2 erfordert ein Zertifikat hast du daran gedacht ?
Sehr hilfreich wären hier auch mal die Logs von beiden Seiten. Leider fehlen diese face-sad
Anhand der Log Fehlermeldungen kannst du meistens sofort sehen wo das Problem ist.
Nebenbei: IPsec AH zu accepten ist überflüssig, denn das ist technisch gar nicht per NAT zu übertragen. Das kannst du dir also sparen. Nur ESP funktioniert mit NAT.

Im Zweifel nimmst du 2 Mikrotiks:
Cisco, Mikrotik, pfSense VPN Standort Vernetzung mit dynamischem Routing
Letztlich können die eh mehr als OpenWRT und preislich ists kein Unterschied.
Außerdem erspart es dir deine eigentlich überflüssige und kontraproduktive Router Kaskade !
Member: mali2008
mali2008 Mar 03, 2019 updated at 10:42:40 (UTC)
Goto Top
Danke für die Antwort:

Das Zertifikat liegt unter: /etc/ipsec.d/cacerts. Ohne dieses kommt eine Verbindung nicht zustande.

Die Logs der Gegenseite kann ich nicht posten, da es ein VPN Provider (VPN Unlimited) ist und ich nur den Dienst zum Testen nutze.

Deine Links schaue ich mir gleich an.

Mit Mikrotik ist die Verbindung nicht möglich, da ROS IKEv2 mit EAP nicht unterstützt.

Hier schon mal die Ausgabe mit rightsubnet 0.0.0.0/0:

initiating IKE_SA v1[1] to 178.162.216.7
generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
sending packet: from 192.168.14.60[500] to 178.162.216.7[500] (548 bytes)
received packet: from 178.162.216.7[500] to 192.168.14.60[500] (569 bytes)
parsed IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(FRAG_SUP) N(HASH_ALG) N(MULT_AUTH) V ]
received strongSwan vendor ID
selected proposal: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
local host is behind NAT, sending keep alives
received cert request for "C=US, ST=NY, O=Keepsolid Inc., CN=Keepsolid CA"  
received 3 cert requests for an unknown ca
sending cert request for "C=US, ST=NY, O=Keepsolid Inc., CN=Keepsolid CA"  
no IDi configured, fall back on IP address
establishing CHILD_SA v1{1}
generating IKE_AUTH request 1 [ IDi N(INIT_CONTACT) CERTREQ IDr CPRQ(ADDR DNS) SA TSi TSr N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_6_ADDR) N(MULT_AUTH) N(EAP_ONLY) N(MSG_ID_SYN_SUP) ]
sending packet: from 192.168.14.60[4500] to 178.162.216.7[4500] (400 bytes)
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (1236 bytes)
parsed IKE_AUTH response 1 [ EF(1/2) ]
received fragment #1 of 2, waiting for complete IKE message
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (340 bytes)
parsed IKE_AUTH response 1 [ EF(2/2) ]
received fragment #2 of 2, reassembled fragmented IKE message (1504 bytes)
parsed IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ]
received end entity cert "C=US, O=Keepsolid, CN=178.162.216.7"  
  using certificate "C=US, O=Keepsolid, CN=178.162.216.7"  
  using trusted ca certificate "C=US, ST=NY, O=Keepsolid Inc., CN=Keepsolid CA"  
checking certificate status of "C=US, O=Keepsolid, CN=178.162.216.7"  
certificate status is not available
  reached self-signed root ca with a path length of 0
authentication of '178.162.216.7' with RSA_EMSA_PKCS1_SHA2_256 successful  
server requested EAP_IDENTITY (id 0x00), sending 'KS1-2e5e44a7c21996180309aa9e2b2ebe49'  
generating IKE_AUTH request 2 [ EAP/RES/ID ]
sending packet: from 192.168.14.60[4500] to 178.162.216.7[4500] (144 bytes)
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (160 bytes)
parsed IKE_AUTH response 2 [ EAP/REQ/MSCHAPV2 ]
server requested EAP_MSCHAPV2 authentication (id 0x01)
generating IKE_AUTH request 3 [ EAP/RES/MSCHAPV2 ]
sending packet: from 192.168.14.60[4500] to 178.162.216.7[4500] (192 bytes)
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (128 bytes)
parsed IKE_AUTH response 3 [ EAP/REQ/MSCHAPV2 ]
EAP-MS-CHAPv2 succeeded: '(null)'  
generating IKE_AUTH request 4 [ EAP/RES/MSCHAPV2 ]
sending packet: from 192.168.14.60[4500] to 178.162.216.7[4500] (80 bytes)
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (80 bytes)
parsed IKE_AUTH response 4 [ EAP/SUCC ]
EAP method EAP_MSCHAPV2 succeeded, MSK established
authentication of '192.168.14.60' (myself) with EAP  
generating IKE_AUTH request 5 [ AUTH ]
sending packet: from 192.168.14.60[4500] to 178.162.216.7[4500] (112 bytes)
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (336 bytes)
parsed IKE_AUTH response 5 [ AUTH CPRP(ADDR DNS) SA TSi TSr N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) ]
authentication of '178.162.216.7' with EAP successful  
IKE_SA v1[1] established between 192.168.14.60[192.168.14.60]...178.162.216.7[178.162.216.7]
scheduling reauthentication in 3399s
maximum IKE_SA lifetime 3579s
installing DNS server 10.128.0.1 to /etc/resolv.conf
installing new virtual IP 10.128.42.255
selected proposal: ESP:AES_CBC_256/HMAC_SHA2_256_128/NO_EXT_SEQ

und ohne rightsubnet:

initiating IKE_SA v1[1] to 178.162.216.7
generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
sending packet: from 192.168.14.60[500] to 178.162.216.7[500] (548 bytes)
received packet: from 178.162.216.7[500] to 192.168.14.60[500] (569 bytes)
parsed IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(FRAG_SUP) N(HASH_ALG) N(MULT_AUTH) V ]
received strongSwan vendor ID
selected proposal: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
local host is behind NAT, sending keep alives
received cert request for "C=US, ST=NY, O=Keepsolid Inc., CN=Keepsolid CA"  
received 3 cert requests for an unknown ca
sending cert request for "C=US, ST=NY, O=Keepsolid Inc., CN=Keepsolid CA"  
no IDi configured, fall back on IP address
establishing CHILD_SA v1{1}
generating IKE_AUTH request 1 [ IDi N(INIT_CONTACT) CERTREQ IDr CPRQ(ADDR DNS) SA TSi TSr N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_6_ADDR) N(MULT_AUTH) N(EAP_ONLY) N(MSG_ID_SYN_SUP) ]
sending packet: from 192.168.14.60[4500] to 178.162.216.7[4500] (400 bytes)
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (1236 bytes)
parsed IKE_AUTH response 1 [ EF(1/2) ]
received fragment #1 of 2, waiting for complete IKE message
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (340 bytes)
parsed IKE_AUTH response 1 [ EF(2/2) ]
received fragment #2 of 2, reassembled fragmented IKE message (1504 bytes)
parsed IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ]
received end entity cert "C=US, O=Keepsolid, CN=178.162.216.7"  
  using certificate "C=US, O=Keepsolid, CN=178.162.216.7"  
  using trusted ca certificate "C=US, ST=NY, O=Keepsolid Inc., CN=Keepsolid CA"  
checking certificate status of "C=US, O=Keepsolid, CN=178.162.216.7"  
certificate status is not available
  reached self-signed root ca with a path length of 0
authentication of '178.162.216.7' with RSA_EMSA_PKCS1_SHA2_256 successful  
server requested EAP_IDENTITY (id 0x00), sending 'KS1-2e5e44a7c21996180309aa9e2b2ebe49'  
generating IKE_AUTH request 2 [ EAP/RES/ID ]
sending packet: from 192.168.14.60[4500] to 178.162.216.7[4500] (144 bytes)
retransmit 1 of request with message ID 2
sending packet: from 192.168.14.60[4500] to 178.162.216.7[4500] (144 bytes)
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (160 bytes)
parsed IKE_AUTH response 2 [ EAP/REQ/MSCHAPV2 ]
server requested EAP_MSCHAPV2 authentication (id 0x01)
generating IKE_AUTH request 3 [ EAP/RES/MSCHAPV2 ]
sending packet: from 192.168.14.60[4500] to 178.162.216.7[4500] (192 bytes)
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (128 bytes)
parsed IKE_AUTH response 3 [ EAP/REQ/MSCHAPV2 ]
EAP-MS-CHAPv2 succeeded: '(null)'  
generating IKE_AUTH request 4 [ EAP/RES/MSCHAPV2 ]
sending packet: from 192.168.14.60[4500] to 178.162.216.7[4500] (80 bytes)
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (80 bytes)
parsed IKE_AUTH response 4 [ EAP/SUCC ]
EAP method EAP_MSCHAPV2 succeeded, MSK established
authentication of '192.168.14.60' (myself) with EAP  
generating IKE_AUTH request 5 [ AUTH ]
sending packet: from 192.168.14.60[4500] to 178.162.216.7[4500] (112 bytes)
received packet: from 178.162.216.7[4500] to 192.168.14.60[4500] (336 bytes)
parsed IKE_AUTH response 5 [ AUTH CPRP(ADDR DNS) SA TSi TSr N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) ]
authentication of '178.162.216.7' with EAP successful  
IKE_SA v1[1] established between 192.168.14.60[192.168.14.60]...178.162.216.7[178.162.216.7]
scheduling reauthentication in 3280s
maximum IKE_SA lifetime 3460s
installing DNS server 10.128.0.1 to /etc/resolv.conf
installing new virtual IP 10.128.42.166
selected proposal: ESP:AES_CBC_256/HMAC_SHA2_256_128/NO_EXT_SEQ
CHILD_SA v1{1} established with SPIs ccac7b42_i c68c3c0f_o and TS 10.128.42.166/32 === 178.162.216.7/32
connection 'v1' established successfully  
Member: mali2008
mali2008 Mar 03, 2019 at 15:33:41 (UTC)
Goto Top
Hi aqui.

Ich habe mal den pfsense Artikel gelesen, aber hier wird nur pfsense als Server mit der Einrichtung von anderen Clients (windows, ...) genannt, aber nicht die pfsense als Client für einen anderen IKEv2 Server.

Was sagst du zu meinen Logs?
Die Verbindung ist doch hergestellt und nur das Routing ist mein Problem.
Hast Du noch eine andere Lösungsmöglichkeit oder eine Artikel?
Member: aqui
aqui Mar 04, 2019 at 09:06:50 (UTC)
Goto Top
aber nicht die pfsense als Client
Das geht natürlich aber auch ! Ist ja auch ein Standard Szenario.
Die Verbindung ist doch hergestellt
Ja, das ist richtig ! Der Tunnel wird fehlerfrei aufgebaut. Entweder stimmt also dei Routing nicht oder du hast eine Firewall Regel aktiv, die Traffic blockiert.
  • Was sagt die Routing Tabelle ?? Sind dort alle zu routenden Netze zu sehen ?
  • Kannst du die direkten Punkt zu Punkt Interfaces pingen ?
Member: mali2008
mali2008 Mar 05, 2019 at 18:03:02 (UTC)
Goto Top
Das geht natürlich aber auch ! Ist ja auch ein Standard Szenario.

Das ist mir auch klar, nur wie??? face-smile

* Was sagt die Routing Tabelle ?? Sind dort alle zu routenden Netze zu sehen ?
Hier dir routing tables (aber mit rightsubnet=leer, da sonst die Verbindung zu OpenWRT abbricht):
192.168.1.0/24 = OpenWRT Testrouter
192.168.14.0/24 = MikroTik Hauptrouter und Hauptnetz
root@OpenWrt:~# ip route
default via 192.168.14.1 dev wlan0 proto static src 192.168.14.60
192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.1
192.168.14.0/24 dev eth0.2 proto kernel scope link src 192.168.14.66
192.168.14.0/24 dev wlan0 proto kernel scope link src 192.168.14.60

Das ist die generische Routingtable vom IPSec:
root@OpenWrt:~# ip route show table 220
178.162.216.7 via 192.168.14.1 dev wlan0 proto static src 10.128.42.255

* Kannst du die direkten Punkt zu Punkt Interfaces pingen ?
Kenne leider nur die mir zugewiesen IP, welche leider /32 ist. Somit kann ich es nicht testen.

Hier die Policy:
root@OpenWrt:~# ip xfrm policy
src 10.128.42.255/32 dst 178.162.216.7/32
        dir out priority 367231
        tmpl src 192.168.14.60 dst 178.162.216.7
                proto esp spi 0xc91e4c6a reqid 1 mode tunnel
src 178.162.216.7/32 dst 10.128.42.255/32
        dir fwd priority 367231
        tmpl src 178.162.216.7 dst 192.168.14.60
                proto esp reqid 1 mode tunnel
src 178.162.216.7/32 dst 10.128.42.255/32
        dir in priority 367231
        tmpl src 178.162.216.7 dst 192.168.14.60
                proto esp reqid 1 mode tunnel
src 0.0.0.0/0 dst 0.0.0.0/0
        socket in priority 0
src 0.0.0.0/0 dst 0.0.0.0/0
        socket out priority 0
src 0.0.0.0/0 dst 0.0.0.0/0
        socket in priority 0
src 0.0.0.0/0 dst 0.0.0.0/0
        socket out priority 0
src ::/0 dst ::/0
        socket in priority 0
src ::/0 dst ::/0
        socket out priority 0
src ::/0 dst ::/0
        socket in priority 0
src ::/0 dst ::/0
        socket out priority 0
Member: aqui
aqui Mar 05, 2019 at 19:39:17 (UTC)
Goto Top
Das ist mir auch klar, nur wie???
OpenWRT nutzt ganz sicher auch den StrongSwan IPsec Client (charon) ?!
Das wird dann wie hier konfiguriert:
IPsec IKEv2 VPN für mobile Benutzer auf der pfSense oder OPNsense Firewall einrichten
Member: mali2008
mali2008 Mar 05, 2019 at 22:17:24 (UTC)
Goto Top
OpenWRT nutzt ganz sicher auch den StrongSwan IPsec Client (charon) ?!
Positiv!
Positiv, aber das hat mir bisher noch nicht weitergeholfen; aber bleibe dort am Ball; hat gute Ansätze; evtl. stehe ich an einer Stelle auf dem Schlauch?...

Generell ist das, was ich vorhabe
1. total trivial, ich aber blind oder
2. total kompliziert oder
3. für mainstream unrelevant

aber es gibt nichts, was einfach zu googlen ist.

Ich verzweifle langsam, mit OpenVPN gibt eine Milliarde Anleitungen; aber IKEv2.... nix!
OpenVPN mit meinem Vorhaben habe ich bereits locker realisiert und mit PPTP und L2TP/IPSec, aber nur weil ich hier Interfaces habe und Prerouting/Mangle + IPRoute2 einsetzte...

Naja, weiter forschen ist angesagt...face-smile
Member: aqui
aqui Mar 06, 2019 updated at 07:35:24 (UTC)
Goto Top
Wenn du einen IKEv2 Client mit StrongSwan machst, dann kannst du doch die o.a. Konfig direkt übernehmen.
OK, kommt ein bischen darauf an WIE dein Dialin Server konfiguriert ist ob du mit PSKs, mit EAP oder nur mit Zertifikaten arbeitest.
IKEv2 erfordert aber in jedem Falle immer ein Server Zertifikat wie du ja an der pfSense Anleitung sehen kannst.
Im Grunde ist die EAP Authentisierung ein simpler Klassiker und einfach aufzusetzen. Kannst du ja an der RasPi Konfig sehen, das sind nur ein paar Zeilen. Der StrongSwan Client macht viel selber und sein Logging helfen.
Man muss aber ein paar Rahmenbedingungen beachten damit es klappt.
Member: mali2008
mali2008 Mar 11, 2019 updated at 13:49:57 (UTC)
Goto Top
Versuche gerade das mit der pfSense umzusetzen.
Bei mir taucht aber in der Phase 1 nicht das EAP MSCHAPv2 auf, nur PSK und RSA (pfsense als ikev2 client!!! nicht server).
Installation ist frisch und das Image das aktuellste.
Bin ich blind oder muss ich noch etwas zusätzlich installieren?

Nachtrag: in einer frischen opnsense Installation ist es auch nicht auswählbar...
Member: aqui
aqui Mar 11, 2019 updated at 14:10:51 (UTC)
Goto Top
Bei mir taucht aber in der Phase 1 nicht das EAP MSCHAPv2 auf
Das Thema hatten wir hier gerade erst....
IPsec IKEv2 VPN für mobile Benutzer auf der pfSense oder OPNsense Firewall einrichten
Fazit: PEBKAC Problem !
Auch für dich gilt: In Ruhe lesen, genau hinsehen, Schritte genau nach Anleitung ausführen ! face-wink
Member: mali2008
mali2008 Mar 11, 2019 at 15:16:35 (UTC)
Goto Top
Zitat von @aqui:
Auch für dich gilt: In Ruhe lesen, genau hinsehen, Schritte genau nach Anleitung ausführen ! face-wink
Lustig, das wollte ich dir auch schreiben (nicht böse gemeint)
Ich will die pfsense als Client für ikev2 nutzen ( nicht als server mit mobile client, dort finde ich die Auswahl schon)
Member: aqui
aqui Mar 11, 2019 updated at 16:18:00 (UTC)
Goto Top
Das geht natürlich, aber logischerweise dann NICHT als Mobile Client mit MS-CHAP !!
Das geht dann nur als "normaler" IPsec Client mit PSK. Auch irgendwie logisch, denn eine Firewall ist ja per se niemals ein Mobile Client.