Im Rahmen eines private Cloud Projekts musste ich eine Umgebung in einem abgesetzten Datacenter mit der Zentrale per Site2Site VPN Kopplung anbinden.
Das VPN Gateway der abgesetzten Struktur läuft in diesem Fall als kleine Linux VM auf einem ESXi Verbund.
Als erstes an der PFsense checken, ob nicht bereits ein Tunnel existiert an dessen Ende das gleiche Subnet genutzt wird!
Strongswan installieren: apt install strongswan -y
/etc/ipsec.conf anpassen. Muster:
# basic configuration config setup # conn definition for HQ # charondebug="cfg 2, chd 2, esp 2, ike 2, knl 2, lib 2, net 2, tls 2" conn HQ authby = secret #forceencaps=yes auto = route # dpdaction = clear dpdaction = restart dpddelay = 30 dpdtimeout = 120 esp = aes256-sha2_256! ike = aes256-sha2_256-modp1024! ikelifetime = 1h keyexchange = ikev2 keyingtries = 0 lifetime = 8h type = tunnel left = 8.9.10.11 #<- Externe IP des VPN Gateways im Stack right = 12.13.14.15 #<- Externe IP HQ leftsourceip = 10.20.0.5 #<- Interne IP des VPN Gateways rightsourceip = 192.168.200.1 #<- Interne IP des zuständigen Gateways im HQ leftsubnet = 10.20.0.0/24 #<- Internes Netz im Stack, das Zugriff via VPN haben soll rightsubnet = 192.168.200.0/24 #<- Internes Netz im HQ auf das zugegriffen werden soll conn HQ-OpenVPN also = HQ #<- Erweiterung der oberen Definition um ein weiteres Netz, von dem aus via HQ Zugriff auf das interne Netz des Stacks möglich sein soll rightsubnet = 10.0.9.0/24 #<- Source IP Range des Netzes aus dem der Zugriff kommt
/etc/ipsec.secrets entsprechend anpassen.
Dann den UFW konfigurieren.
In /etc/ufw/before.rules folgendes ganz oben eintragen:
*nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -F # setup routing -A POSTROUTING -s 10.20.0.0/24 -o ens33 -m policy --pol ipsec --dir out -j ACCEPT -A POSTROUTING -s 10.20.0.0/24 -o ens33 -j MASQUERADE COMMIT *mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.20.0.0/24 -o ens33 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360 COMMIT
Und unterhalb des Filter Blocks folgendes anfügen:
# Don't delete these required lines, otherwise there will be errors *filter :ufw-before-input - [0:0] :ufw-before-output - [0:0] :ufw-before-forward - [0:0] :ufw-not-local - [0:0] # End required lines # # DAS FOLGENDE EINFÜGEN: # -A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.20.0.0/24 -j ACCEPT -A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.20.0.0/24 -j ACCEPT
Ferner auf der UFW ssh und Port 500+4500 UDP erlauben:
ufw allow OpenSSH ufw allow 500,4500/udp ufw enable
Ggfs. noch das IP Forwarding einschalten. Dies ist allerdings, wenn man Strongswan auf einer Linux VM konfiguriert ohnehin schon an.
Port Forwardings können weiterhin wie gewohnt in der before.rules konfiguriert werden.