Moin,
ich habe einen VPN Tunnel ( policy-based / IKEv2 ) aufgebaut.
ipsec status
no files found matching '/usr/local/etc/strongswan.opnsense.d/*.conf'
Security Associations (1 up, 0 connecting):
con1[18]: ESTABLISHED 4 minutes ago, 92.5x.xx.xx[92.5x.xx.xx]...128.14x.xx.xx[128.14x.xx.xx]
con1{15}: INSTALLED, TUNNEL, reqid 1, ESP SPIs: c55ef6d7_i c820e783_o
con1{15}: 10.20.150.0/24 === 10.40.0.0/28
OpnSense1
öff. IP 92.5x.xx.xx
lokale IP 10.20.150.135
OpnSense2
öff. IP 128.14x.xx.xx
lokale IP 10.40.0.2
Der Tunnel wird aufgebaut und arbeitet einwandfrei:
Netz 10.20.150.0/24 auf Netz 10.40.0.0/28 ok
Netz 10.20.150.0/24 auf OpnSense 10.40.0.2 ok
OpnSense 10.40.0.2 auf Netz 10.20.150.0/24 nein
Netz 10.40.0.0/28 auf Netz 10.20.150.0/24 ok
Netz 10.40.0.0/28 auf OpnSene 10.20.150.135 ok
OpnSene 10.20.150.135 auf Netz 10.40.0.0/28 nein
Die beiden Opnsense können nicht auf das jeweilige remote-Netz zugreifen.
Die Pakete werden nicht in den Tunnel hineingeroutet, sondern über das WAN-Interface ins Internet
Beispiel:
LAN (em0) -> v4: 10.20.150.135/24
WAN (re0) -> v4: 92.5x.xx.xx/29
ping 10.40.0.3
PING 10.40.0.3 (10.40.0.3): 56 data bytes
tcpdump -ni re0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on re0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:55:14.611085 IP 92.5x.xx.xx > 10.40.0.3: ICMP echo request, id 36898, seq 1169, length 64
11:55:15.671079 IP 92.5x.xx.xx > 10.40.0.3: ICMP echo request, id 36898, seq 1170, length 64
11:55:16.731061 IP 92.5x.xx.xx > 10.40.0.3: ICMP echo request, id 36898, seq 1171, length 64
Meine Vermutung: beim Ping auf das remote-Netz 10.40.0.3 nimmt die Opnsense als Quell-Adresse die öff. Adresse und routet somit die Pakte folgerichtig ins Internet. Wie teile ich der OpnSense mit, dass für einen Zugriff auf das Remote-Netz die lokale IP-Adresse der Opnsense benutzt werden soll. Mit diversen Routing-Regeln habe ich schon experimentiert, leider ergebnislos.
Hat jemand eine Idee dazu?
Grüße Detlev.
Die Pakete müssen doch in das Internet geroutet werden.
Der Ping kommt z.B. am LAN Interface an, dort muss es eine Firewall Regel geben die den Ping erlaubt. Das "Raw" IP Paket wird dann in das virtuelle "enc(4)" IPsec Interface gesendet. Sobald es dieses verlässt und in das Internet geroutet wird, wird es in ESP eingepackt und bekommt als Zieladdresse die externe IP Addresse der IPsec Gegenstelle, und als Quell IP Adresse die Öffentliche IP des WAN Interfaces.
Auf der Gegenseite wird das ESP Paket ausgepackt, und das originale "Raw" IP Paket kommt wieder zum vorschein, und es wird dann zu dem Gerät geschickt, was auf den Ping antworten soll.
Mit der Antwort läuft es genauso ab. Die wird am WAN interface der OPNsense ankommen, in ESP eingepackt. Daraufhin wird sie auf das "enc(4)" geschickt, um ausgepackt zu werden. Das "Raw" IP Paket wird dann auf das LAN interface gesendet, um von dort an das anfragende Gerät als ICMP Echo Reply anzukommen.
Sichergestellt werden muss:
- Firewall Regeln auf dem LAN (Ankommendes Interface der ICMP Echo Request) muss es auf das Remote Netz zulassen.
- Firewall Regeln auf dem enc(4) (Heißt IPsec in der GUI) Anfragen aus dem anderen Netzwerk zulassen.
- Da die Firewall Stateful ist, wird schon die LAN Regel reichen um eine ICMP Echo Reply zu bekommen.
- Die andere Firewall muss auch zulassen, dass der Traffic erlaubt ist.
Troubleshooting:
Schneide mit tcpdump am besten mal das enc0 interface mit, da kannst du die RAW IP Pakete sehen, bevor sie mit ESP ein und ausgepackt werden.