touro411
Goto Top

PFsense Outbound NAT (S-NAT)

Hallo zusammen,

seit kurzem bin ich umgestiegen von der Sophos UTM zur PFsense. Soweit läuft alles wie ich es möchte. Nur mit dem Outbound-NAT habe ich so meine Schwierigkeiten.

Es besteht ein Ipsec S2S VPN zu einem anderem Standort. Das lokale LAN-Netz hat die 192.168.80.0/24, das entferne LAN (über IPsec angebunden) die 192.168.90.0/24.

Zu der Pfsense besteht eine OpenVPN Verbindung (Quell-Netz 10.55.66.0/24), greife ich nun per RDP auf einen Server (192.168.90.20) im entfernten LAN von über die OpenVPN Verbindung zu, benötige ich eine NAT-Outbound Rule, dass die Absender-IP im 192.168.80.0/24 Netz liegt.

Mit der Sophos UTM war das kein Problem...

screenshot 2025-03-31 134138

Ich denke, das dürfte bei der PFSense auch kein Problem sein.... Hier habe ich erstmal auf "Hybrid Outbound NAT" gestellt.

screenshot 2025-03-31 134540

Wo liegt hier der Fehler, oder habe ich etwas Grundlegendes vergessen?

Grüße

Content-ID: 672256

Url: https://administrator.de/forum/pfsense-outbound-nat-s-nat-672256.html

Ausgedruckt am: 05.04.2025 um 05:04 Uhr

BiberMan
BiberMan 31.03.2025 aktualisiert um 14:30:55 Uhr
Goto Top
Das Interface ist falsch da muss das WAN-Interface rein, dort wo der Traffic per IPSec raus geht. Und die Quelle solltest du auch festlegen, sonst wird jeglicher RDP Traffic zum Ziel genattet auch der vom LAN der Sense.
Des weiteren muss natürlich der OpenVPN Client wissen daß er das 192.168.90.0/24 Netz über den Tunnel erreichen kann .

Aber wieso überhaupt NAT? Lege einfach ein weitere Phase2 im IPSec Tunnel an welche das OpenVPN Netz inkludiert (auf beiden Seiten, geht natürlich nur wenn du auch Einfluss auf die Gegenseite hast), fertig ...

Btw. RDP läuft mittlerweile auch über UDP wenn es so konfiguriert ist ...
aqui
aqui 31.03.2025 aktualisiert um 14:17:08 Uhr
Goto Top
benötige ich eine NAT-Outbound Rule, dass die Absender-IP im 192.168.80.0/24 Netz liegt.
Nein, das ist falsch und zeigt das du die IPsec Verbindung falsch oder in Bezug auf die OpenVPN Anbindung fehlerhaft konfiguriert hast. NAT im Tunnel ist immer kontraproduktiv.
Kollege @BiberMan hat es oben schon gesagt:
Hier musst du lediglich eine 2te Phase 2 mit dem internen OpenVPN IP Netz (10.55.66.0) dazukonfigurieren das der Traffic mit in den Tunnel geroutet wird dann kannst du dir die unnötige und überflüssige NAT Frickelkei sparen. Negativ dazu kommt das das NAT das Routing in eine Einbahnstrasse verwandelt.
Beim OpenVPN musst du zusätzlich einen Routing Eintrag in die Client Konfig bringen sofern du mit Split Tunneling statt mit einem Redirect arbeitest. Siehe dazu Beispiele im OpenVPN Tutorial.

Vielleicht auch einmal Zeit über die Ablösung des wenig performanten und skalierenden OpenVPN nachzudenken. Wenn du so oder so alles auf IPsec hast, dann ist es unsinnig noch zusätzlich mit einem 2ten separaten VPN Protokoll zu arbeiten. Zumal man mit der pfSense das in allen Betriebssystemen und Endgeräten so oder so vorhandene onboard VPN mit entweder L2TP oder IKEv2 nutzen kann und sich so den Zoo mit überflüssigen VPN Protokollen und überflüssiger Client Software ersparen kann.
PfSense VPN mit L2TP (IPsec) Protokoll für mobile Nutzer
IPsec IKEv2 VPN für mobile Benutzer auf der pfSense oder OPNsense Firewall einrichten

Ein Beispiel für das Setup mit 2 Phase 2 SAs findest du unter anderen hier:
PFSense mit Fritzboxen verbinden
Routingprobleme über OpenVPN auf Fritzbox
usw.
touro411
touro411 31.03.2025 um 14:32:33 Uhr
Goto Top
@aqui + BiberMan
Das mit der einer weiteren Phase2 werde ich mal testen...

Bei diesem Anwendungsfall kann ich das mit einer weiteren Phase2 machen.

Bei einem anderen Anwendungsfall kann ich die entfernte Seite nicht bearbeiten, bzw. nicht ändern lassen. Hier bleibt mir nur Outbound-NAT.

So müsste es doch passen:
screenshot 2025-03-31 143123
BiberMan
BiberMan 31.03.2025 aktualisiert um 14:42:16 Uhr
Goto Top
Wenn deine pfSense die 192.168.80.5/32 im LAN hat ja, so wäre es i.O.
touro411
touro411 31.03.2025 um 14:42:15 Uhr
Goto Top
Wenn deine pfSense die .5/32 hat ja, so wäre es i.O.

Bei meiner PFSense hat die LAN Schnittstelle die IP-Adresse 192.168.80.10. Als Absender IP wollte ich die 192.168.80.5/32 setzen...

Oder ist das nicht möglich?
BiberMan
BiberMan 31.03.2025 aktualisiert um 16:11:28 Uhr
Goto Top
Zitat von @touro411:
Oder ist das nicht möglich?
Nein ... Du solltest hier nur eine IP nutzen die an der pfSense selbst anliegt, die pfSense hat hier IMHO eine Beschränkung. Pack da die 192.168.80.10/32 rein, dann lüppt dat sofern deine Firewall den Traffic auch durchlässt.
aqui
aqui 31.03.2025 aktualisiert um 15:41:28 Uhr
Goto Top
Bei meiner PFSense hat die LAN Schnittstelle die IP-Adresse 192.168.80.10
Gute Admins mit sauberem IP Adresskonmzept setzen üblicherweise die Default Gateway IPs auf die höchste oder niedrigste Adressen im lokalen IP Netz. face-sad
Bei einem anderen Anwendungsfall kann ich die entfernte Seite nicht bearbeiten
Irgendwie unlogisch denn irgendeiner muss dort vor Ort ja den Peer auf deine Firewall konfigurieren mit den SAs und dem Passwort etc.
Dem musst du lediglich sagen das er außer der .80.0 als 2te Phase 2 noch das 10.55.66.0er Netz eintragen soll und gut iss. Wo ist das Problem?

Noch pfiffiger wäre es das lokale LAN als /25 zu setzen und die 2te "obere" Hälfte als das OpenVPN Client Netz zu verwenden. Dem Administrator am anderen Ende gibst du dann einfach die /24 Maske zu dem Netz und hast dann beide mit einer einzigen SA abgedeckt.
Sollten 126 Hosts im LAN nicht reichen nimmst du zwei aufeinander folgende /24 Netze. In deinem Falle dann die .80.0 und .81.0 und verwendest das .81er als VPN Client Netz.
Dem Admin am anderen Ende gibst du dann als .80.0er Maske die /23 mit und fertig ist der Lack.
So brauchst du pfiffigerweise eben nur einen einzigen Phase 2 SA wenn man ein sinnvolles IP Adresskonzept für den VPN Betrieb gemacht hat! Gewusst wie... 😉
touro411
touro411 31.03.2025 um 16:11:33 Uhr
Goto Top
Gute Admins mit sauberem IP Adresskonzept setzen üblicherweise die Default Gateway IPs auf die höchste oder niedrigste Adressen im lokalen IP Netz.
Das ist historisch bedingt nicht die .1 oder .254...

Es ist schon klar, dass es bessere Lösungen gibt als Outbound-NAT für diesen Anwendungsfall.. Aber trotzdem sollte es doch mit einer Outbound-NAT Regel funktionieren..

@BiberMan Leider funktioniert es nicht, wenn ich als NAT Address die LAN Address einstelle... Kann ich irgendwo im Log sehen, on die NAT Regel greift?
BiberMan
BiberMan 31.03.2025 aktualisiert um 16:15:53 Uhr
Goto Top
  • Hast du denn den Traffic auf dem OpenVPN Interface der Sense überhaupt erlaubt?
  • Hast du auf dem OpenVPN Client eine Route in das fremde Netz (192.168.90.0/24) aktiv?

Und wie immer ins solchen Fällen. Erst mal die Firewall durchlässig machen, erst danach einschränken und im Zweifel einfach mit tcpdump/Wireshark sniffern.

Bedenke auch das das Ziel den Traffic auch aus fremden Netzen in seiner Client-Firewall zulassen muss!
Windows bspw. blockt per Default bei den meisten Protokollen Traffic aus fremden Subnetzen.
touro411
touro411 31.03.2025 um 16:22:49 Uhr
Goto Top
Hast du denn den Traffic auf dem OpenVPN Interface der Sense überhaupt erlaubt?
Ja
screenshot 2025-03-31 161832
Man sieht auch in den Firewalllogs, dass der RDP Traffic von 10.x.x.x zu 192.168.90.x geht

Hast du auf dem OpenVPN Client eine Route in das fremde Netz (192.168.90.0/24) aktiv?
Klar..

Und wie immer ins solchen Fällen. Erst mal die Firewall durchlässig machen, erst danach einschränken und im Zweifel einfach mit tcpdump/Wireshark sniffern.
Also in der SSH Konsole der PFsense tcdump erstellen?

Bedenke auch das das Ziel den Traffic auch aus fremden Netzen in seiner Client-Firewall zulassen muss!
Windows bspw. blockt per Default SMB/ICMP Traffic aus fremden Subnetzen
Das ganze hat mit der Sophos UTM funktioniert, an der entfernten FW ist das 192.168.80.0/24 komplett freigegeben...
BiberMan
BiberMan 31.03.2025 aktualisiert um 16:33:15 Uhr
Goto Top
Zitat von @touro411:

Hast du denn den Traffic auf dem OpenVPN Interface der Sense überhaupt erlaubt?
Ja
screenshot 2025-03-31 161832
Man sieht auch in den Firewalllogs, dass der RDP Traffic von 10.x.x.x zu 192.168.90.x geht
OK
Hast du auf dem OpenVPN Client eine Route in das fremde Netz (192.168.90.0/24) aktiv?
Klar..
Ist klar, wir können dir aber leider nicht über die Schulter schauen face-smile.
Und wie immer ins solchen Fällen. Erst mal die Firewall durchlässig machen, erst danach einschränken und im Zweifel einfach mit tcpdump/Wireshark sniffern.
Also in der SSH Konsole der PFsense tcdump erstellen?
Erst mal schauen ob Traffic überhaupt auf der Sense vom Client ankommt. Dann auch mal am Ziel-Client sniffern ob dort was ankommt. Traceroute & Co. sollte klar sein.
Bedenke auch das das Ziel den Traffic auch aus fremden Netzen in seiner Client-Firewall zulassen muss!
Windows bspw. blockt per Default SMB/ICMP Traffic aus fremden Subnetzen
Das ganze hat mit der Sophos UTM funktioniert, an der entfernten FW ist das 192.168.80.0/24 komplett freigegeben...
Es geht nicht nur um die Firewall des anderen Routers sondern auch die Firewall des Ziels selbst.
aqui
aqui 31.03.2025 aktualisiert um 16:44:35 Uhr
Goto Top
Das ist historisch bedingt nicht die .1 oder .254...
Genau die sind das bei /24er Präfixes. Historisch ist das mitnichten, das hat immer gute Address Design Gründe. face-wink
NAT bringt bekanntlich immer erhebliche Nachteile im Networking. Wenn immer möglich sollte man es vermeiden.
touro411
touro411 31.03.2025 aktualisiert um 17:03:14 Uhr
Goto Top
14:53:20.961425 PPPoE  [ses 0x21e1] IP (tos 0x0, ttl 127, id 29866, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.80.10.60421 > 192.168.90.20.3389: Flags [S], cksum 0x2a90 (correct), seq 3012653218, win 65535, options [mss 1358,nop,wscale 8,nop,nop,sackOK], length 0

Es sieht so aus, als ob der betreffende Datenverkehr nicht über den Tunnel läuft, sondern "raus ins Internet" geht...

In der Zielfirewall ist von diesem Datenverkehr nichts zu sehen. (Logging für betreffende Regel aktiviert!)
BiberMan
BiberMan 31.03.2025 aktualisiert um 17:06:00 Uhr
Goto Top
Zitat von @touro411:

14:53:20.961425 PPPoE  [ses 0x21e1] IP (tos 0x0, ttl 127, id 29866, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.80.10.60421 > 192.168.90.20.3389: Flags [S], cksum 0x2a90 (correct), seq 3012653218, win 65535, options [mss 1358,nop,wscale 8,nop,nop,sackOK], length 0

Es sieht so aus, als ob der betreffende Datenverkehr nicht über den Tunnel läuft, sondern "raus ins Internet" geht...

Normal, IPSec geht ja über das WAN-Interface raus nur halt "ipsec encapsulated" nachdem die Pakete die POSTROUTING Stage verlassen haben dafür sind ja die Phase2-Policies da, diese greifen immer erst nach dem Postrouting und sagen dem Router welche Pakete er duch den IPSec Prozess jagen soll...
touro411
touro411 31.03.2025 aktualisiert um 17:25:16 Uhr
Goto Top
Also kann man sagen, dass die NAT Rule funktioniert, sonst würde ja der Logeintrag nicht zustande kommen.
Die VPN Verbindung steht, vom 192.168.80.x/24 kann ich mit per RDP auf 192.168.90.20 einloggen.

In der Routingtabelle auf der PFSense ist das 192.168.90.0/24 Netz nicht enthalten!? Müsste doch eigentlich drin sein, trotzdem funktioniert die RDP Verbindung.
BiberMan
BiberMan 31.03.2025 aktualisiert um 17:36:32 Uhr
Goto Top
Zitat von @touro411:
In der Routingtabelle auf der PFSense ist das 192.168.90.0/24 Netz nicht enthalten!? Müsste doch eigentlich drin sein,
Nein Irrtum! Das ist normal das da keine Routen auftauchen. IPSec selbst basiert rein auf Policies, nicht auf der Routingtabelle!
Die Encapsulation findet wie gesagt nach dem POSTROUTING statt, also erst nach der Routing Entscheidung und durch die Policies wird dem Router gesagt welche Pakete er danach durch den IPSec Prozess jagen und damit in IPSec Pakete einpacken soll und welche nicht.

Dieses Schaubild zeigt das schön:

clipboard-image

Bildquelle