
Ich habe versucht, einen Split Tunnel von meinem Ubuntu 18.04 Server (Client) zu einer Watchguard Firebox mit dem StrongSwan IKEv2-Protokoll einzurichten. Letztendlich soll dies eine Site-to-Site-Verbindung sein, aber ich beginne zunächst nur mit einer Seite.
Ich konnte mich erfolgreich mit Watchguard verbinden und habe eine IP-Adresse erhalten, aber ich möchte nicht, dass der gesamte Datenverkehr durch den Tunnel geleitet wird, sondern nur für bestimmte Subnetze. Ich habe die Routen über hinzugefügt ip route add
und während die Verbindung besteht, tcpdump
kann ich, wenn sie läuft, sehen, dass der Datenverkehr (192.168.1.0/24) durch die von mir eingerichtete Schnittstelle geht, aber ich erhalte keine Antwort. Für jede Hilfe wäre ich sehr dankbar.
Hier ist die Konfigurationsdatei für IPSec.
Ich habe die Serveradresse und den Benutzernamen herausgenommen. Wie gesagt, ich habe eine erfolgreiche Verbindung. Das rightsubnet
ist auskommentiert, da ich es über den ip route
Befehl definieren möchte. Wenn ich es auskommentiere und die Verbindung herstelle, kann ich jedes definierte Subnetz erfolgreich anpingen, aber dadurch wird der Datenverkehr nicht aufgeteilt, und irgendwann werde ich Regeln einrichten, um nur bestimmten Geräten den Zugriff auf das VPN zu erlauben.
conn dealers
right=xxxxxxxx
rightid="O=WatchGuard, OU=Fireware, CN=ike2muvpn Server"
#rightsubnet=192.168.1.0/24,192.168.20.0/24,192.168.40.0/24,192.168.3.0/24,192.168.5.0/24
rightauth=pubkey
leftsourceip=%config
leftid=xxxxxxxx
leftauth=eap-mschapv2
eap_identity=%identity
auto=add
Hier ist meine ip route
Tabelle
default via 192.168.2.1 dev eth0 proto dhcp src 192.168.2.196 metric 100
10.0.10.0/24 via 192.168.115.1 dev dealers_tunnel
192.168.1.0/24 via 192.168.115.1 dev dealers_tunnel
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.196
192.168.2.1 dev eth0 proto dhcp scope link src 192.168.2.196 metric 100
192.168.115.0/24 dev dealers_tunnel proto kernel scope link src 192.168.115.29
Ich habe ein Skript, das das VPN verbindet und dann die Schnittstelle einrichtet und die Routen hinzufügt. Zum Testen füge ich nur das Netzwerk 192.168.1.0/24 hinzu.
#!/bin/bash
#
#./ikev2-up.sh
#
/usr/sbin/ipsec up dealers
ip tunnel add dealers_tunnel local 10.0.10.1 remote 192.168.115.29 mode are til 255
ip link set dealers_tunnel up
ip addr add 192.168.115.29/24 dev dealers_tunnel
ip route add 192.168.115.0/24 dev dealers_tunnel
ip route add 10.0.10.0/24 via 192.168.115.1 dev dealers_tunnel
ip route add 192.168.1.0/24 via 192.168.115.1 dev dealers_tunnel
Ich habe noch keine Regeln eingerichtet iniptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Ich weiß, dass ich etwas übersehen habe, aber ich komme einfach nicht dahinter. Nochmals vielen Dank im Voraus für die Hilfe
Antwort1
Wenn Sie konfigurieren rightsubnet=0.0.0.0/0
(vorausgesetzt, der Peer lässt dies zu), benötigen Sie kein Tunnelgerät, wenn der Peer auch eine virtuelle IP-Adresse zuweist (vom Client über angefordert leftsourceip=%config
).
Deaktivieren Sie einfach die Routeninstallation durch strongSwan über charon.install_routes
instrongswan.confund installieren Sie dann Ihre eigenen Routen über benutzerdefinierteUpdown-Skriptkonfiguriert in leftupdown
. Die Verwendung eines Updown-Skripts ist wichtig, da die virtuelle IP-Adresse dem Client im Voraus nicht bekannt ist. Nur Pakete von dieser virtuellen IP entsprechen den IPsec-Richtlinien und werden getunnelt. Daher ist es wichtig, dies über Quellrouten durchzusetzen.
Um beispielsweise den Datenverkehr zu tunneln, 192.168.115.0/24
verwenden Sie etwa das folgende Skript (standardmäßig installiert strongSwan Routen in Tabelle 220, um Konflikte mit Routen in der Haupttabelle zu vermeiden, deshalb verwende ich hier dasselbe):
#!/bin/bash
set -o nounset
set -o errexit
case "${PLUTO_VERB}" in
up-client)
ip route add 192.168.115.0/24 dev "${PLUTO_INTERFACE}" src "${PLUTO_MY_SOURCEIP}" table 220
;;
down-client)
ip route del 192.168.115.0/24 table 220
;;
esac