michelmichel
Experte
Hi ich versuche gerade eine VPN-Verbindung mit pfSense aufzubauen. PfSense läuft innerhalb einer VM unter ESXi. Der Server hat 2 physische nics, die pfSense VM hat 3 logische vnics.
Weitere Elemente:
vswitch #1: (vnic1/LAN/192.168.0.1).
vswitch #2: (vnic2/VPN/x.x.x.241), (vnic3/WAN/192.168.10.11)
Physischer DSL-Router (192.168.10.1)
VM1..n hängen am vswitch1 und haben Adressen im Netz 192.168.0.0/24
Diagramm:
(Hoffe es ist klar wie's gemeint ist)
Mir ist klar, dass ich zwei Switches verwenden müsste, um richtige Sicherheit zu bekommen, aber es geht erst mal um die grundlegende Funktionalität.
Es gibt bereits eine openvpn-Verbindung, die ich ja ablösen und nach pfSense migrieren möchte. Deren Konfiguration habe ich mal hier dokumentiert:
in dem up script, mache ich im Kern ein
Diese alte openvpn-Verbindung funktioniert bisher gut, diese möchte ich wie gesagt aber ablösen.
In pfSense habe ich eine openvpn Client configuration angelegt, dies erlaubt mir eine Verbindung von x.x.x.241/32 (lokal/VPN) nach x.x.x.18/32 (für den Login, der remote endpoint hingegen ist x.x.x.254/32) auf den Ports lport/rport 6888. aktuell schaffe ich es unter pfSense, eine P-t-P-Verbindung von x.x.x.241/32 zu x.x.x.254/32 aufzubauen. Funktioniert an sich gut. Mit anderen Worten - die VPN-Verbindung exponiert die x.x.x.241/32 nach außen.
Unter pfSense fülle ich die folgenden Felder im Bereich der openvpn Client-Konfiguration aus:
Diese Firewall- und NAT-Regeln habe ich definiert:
... NAT:
(a, b und c sind Nummern ... das sind VMs)
... usw. ...
mit dem letztlichen Ziel, dass bestimmte VMs (a, b and c) auf Anfragen von außen antworten.
Hier kommt jedoch das Problem: sobald ein ping oder eine TCP-Verbindung von außen auf der exponierten IP x.x.x.241 ankommt, wird's schwierig.
Was mir gelingt: Anfragen werden per NAT-Tabelle an die richtigen VMs weitergeleitet und können dort vom jeweiligen Dienst gelesen/verstanden werden. Die Antwort geht jedoch nicht mehr durch. Ich kann keine blockierten Pakete im Log sehen. Ich kann jedoch sehr wohl sehen, dass die Antworten losgeschickt werden (per tcpdump auf der jeweiligen antwortenden VM, z.B. ICMP echo Replies oder Antworten auf DNS-Anfragen auf Port 53). Keine der Antworten kommt zum Initiator der Verbindung / Kommunikation zurück.
Ich habe das Gefühl, dass mir da nur noch ein winziger Baustein zum Glück fehlt. Habt Ihr eine Idee woran es hängen könnte?
Danke im Voraus & Gruss
Michael
Weitere Elemente:
vswitch #1: (vnic1/LAN/192.168.0.1).
vswitch #2: (vnic2/VPN/x.x.x.241), (vnic3/WAN/192.168.10.11)
Physischer DSL-Router (192.168.10.1)
VM1..n hängen am vswitch1 und haben Adressen im Netz 192.168.0.0/24
Diagramm:
Code:
[openvpn/server x.x.x.18]
|
Internet
|
DSLrouter
|
[physischer...switch]
\_phy...nic1 \_phy...nic2
| |
...vswitch2... ...vswitch1...
WAN VPN LAN \ \
\........+...../ VM1...n
pfSense
(Hoffe es ist klar wie's gemeint ist)
Mir ist klar, dass ich zwei Switches verwenden müsste, um richtige Sicherheit zu bekommen, aber es geht erst mal um die grundlegende Funktionalität.
Es gibt bereits eine openvpn-Verbindung, die ich ja ablösen und nach pfSense migrieren möchte. Deren Konfiguration habe ich mal hier dokumentiert:
Code:
verb 4
dev tun1
remote x.x.x.18
ifconfig x.x.x.241 x.x.x.254
lport 6888
rport 6888
tun-mtu 1360
disable-occ
ifconfig-nowarn
ping 30
secret ....path-to-the-file.../comserv.secret
up /etc/openvpn/./comserv.up
down /etc/openvpn/./comserv.down
script-security 2
in dem up script, mache ich im Kern ein
Code:
/sbin/ip route add default dev tun1 table tun1.out
/sbin/ip rule add from x.x.x.241 table tun1.out pref 1000
/sbin/ip route flush cache
Diese alte openvpn-Verbindung funktioniert bisher gut, diese möchte ich wie gesagt aber ablösen.
In pfSense habe ich eine openvpn Client configuration angelegt, dies erlaubt mir eine Verbindung von x.x.x.241/32 (lokal/VPN) nach x.x.x.18/32 (für den Login, der remote endpoint hingegen ist x.x.x.254/32) auf den Ports lport/rport 6888. aktuell schaffe ich es unter pfSense, eine P-t-P-Verbindung von x.x.x.241/32 zu x.x.x.254/32 aufzubauen. Funktioniert an sich gut. Mit anderen Worten - die VPN-Verbindung exponiert die x.x.x.241/32 nach außen.
Unter pfSense fülle ich die folgenden Felder im Bereich der openvpn Client-Konfiguration aus:
Server Mode | Peer-to-Peer (Shared key) |
Protocol | udp |
Device Mode | tun |
Interface | VPN |
Local Port | 6888 |
Server host or address | x.x.x.18 |
Server Port | 6888 |
Shared Key: | # # 2048 bit OpenVPN static key # -----BEGIN OpenVPN Static key V1----- ...... -----END OpenVPN Static key V1----- |
Encryption algorithm | BF-CBC (128 bit) |
IPv4 Tunnel Network | x.x.x.241/28 |
IPv4 Remote Network/s | x.x.x.254/32 |
Advanced: | ifconfig x.x.x.241 x.x.x.254 remote x.x.x.18 tun-mtu 1360 disable-occ ifconfig-nowarn |
Diese Firewall- und NAT-Regeln habe ich definiert:
Code:
Proto Source Port Destination Port Gateway Queue Schedule
WAN: IPv4* * * * * * none
LAN: IPv4* LAN net * * * * none
VPN: IPv4* LAN net * * * * none
OpenVPN: IPv4* * * x.x.x.241 * * none
... NAT:
Code:
NAT:
If Proto Src. addr Src. ports Dest. addr Dest. ports NAT IP NAT Ports
OpenVPN TCP * * x.x.x.241 53 (DNS) 192.168.0.a 53 (DNS)
OpenVPN TCP * * x.x.x.241 22 (SSH) 192.168.0.b 22 (SSH)
OpenVPN ICMP * * x.x.x.241 * 192.168.0.c *
... usw. ...
mit dem letztlichen Ziel, dass bestimmte VMs (a, b and c) auf Anfragen von außen antworten.
Hier kommt jedoch das Problem: sobald ein ping oder eine TCP-Verbindung von außen auf der exponierten IP x.x.x.241 ankommt, wird's schwierig.
Was mir gelingt: Anfragen werden per NAT-Tabelle an die richtigen VMs weitergeleitet und können dort vom jeweiligen Dienst gelesen/verstanden werden. Die Antwort geht jedoch nicht mehr durch. Ich kann keine blockierten Pakete im Log sehen. Ich kann jedoch sehr wohl sehen, dass die Antworten losgeschickt werden (per tcpdump auf der jeweiligen antwortenden VM, z.B. ICMP echo Replies oder Antworten auf DNS-Anfragen auf Port 53). Keine der Antworten kommt zum Initiator der Verbindung / Kommunikation zurück.
Ich habe das Gefühl, dass mir da nur noch ein winziger Baustein zum Glück fehlt. Habt Ihr eine Idee woran es hängen könnte?
Danke im Voraus & Gruss
Michael