NAT und Port-Forward "pfSense intern"
-
Ich habe heute ein "spezielles" Problem mit NAT und Co.
Ich habe eine pfSense mit 1x WAN und 2x LAN Interface.
WAN: 1.2.3.4/28, + virtuelle IP 1.2.3.5/28
LAN1: 10.1.1.0/24
LAN2: 10.1.2.0/24Für die beiden LAN-Interface gibt es eine Firewall-Pass-Regel "*->any".
Outbound NAT für LAN1=1.2.3.4, für LAN2=1.2.3.5 .In LAN2 steht ein Server (IP 10.1.2.2), welcher per Portforward von extern erreicht werden soll.
NAT-Regel:
Von any auf ext. IP 1.2.3.5:443 -> 10.1.2.2:443
Die dazugehörige Firewall-Regel für das WAN Interface wurde automatisch erzeugt.Soweit so gut, von extern kann nun auf diesen Server zugegriffen werden. Auch können alle Rechner in den beiden LANs auf das Internet zugreifen. Outbound NAT für die beiden LANs haut auch hin.
ABER, der Zugriff auf den Server im LAN2 funktioniert nicht, wenn ich ihn über 1.2.3.5:443 aus dem LAN1 heraus erreichen will.
Ich sehe in der Firewall dass das Paket über die Pass-Regel das LAN1 Interface verlässt, aber dann verliert sich die Spur.Es ist praktisch ein pfSense internes NAT+Port-Forward - aber da scheine ich wohl einen Denkfehler zu haben. Ich möchte das auf jeden Fall über diesen Weg lösen, ein Routing zwischen LAN1 und LAN2 möchte ich nicht, auch wenn das aufgrund der aktiven Firewall-Regeln im Moment geht.
Gebt mir mal bitte einen Schubs ;)
-
ABER, der Zugriff auf den Server im LAN2 funktioniert nicht, wenn ich ihn über 1.2.3.5:443 aus dem LAN1 heraus erreichen will.
Ist auch klar. Die IP 1.2.3.5 und die Portforwarding-Regel hast du ja am WAN angelegt, nicht auf LAN1.
Wenn der Server über diese NAT-Regel erreicht werden soll, kannst du es mit NAT-Reflection versuchen. Für den genannten Fall wird es ein Abhilfe sein, generell kann man das aber nicht sagen.
In der NAT-Regel gibt es unten die Option "NAT Reflection", hier sollte die Auswahl von "Pure NAT" reichen. Möchtest du den Host auch von Rechnern, die am selben Interface hängen, über die externe IP erreichen, wird "NAT + proxy" nötig sein.Die Einstellung dafür lässt sich in System > Advanced > NAT auch global setzen.
Grüße
-
Vielen Dank für den Tipp, es funktioniert nun erstmal.
Die EInstellung "PureNAT" in den NAT Regeln hat erstmal den Durchbruch gebracht, um den Server in LAN2 aus dem LAN1 über die öffentliche IP zu erreichen.
Trotzdem brauche ich nun die Firewallregel, dass LAN1net auf 10.1.2.2 (Server) per Port 443 zugreifen darf. Ich dachte, diese Regel könnte ich vermeiden, wenn das per NAT über die öffentliche IP geht. Ich gehe/ging davon aus, dass der Verbindungsaufbau mit der externen IP für LAN1 präsentiert wird und dann per Port-Forward wieder nach innen in LAN2 transportiert wird - scheinbar eine Fehlannahme. ??? Per Paket-Capture sehe ich, das die Pakete, trotz Verbindungsaufbau aus LAN1 über die öffentliche IP, direkt zwischen den LANs transportiert werden.
Hmm, ich rätsel da noch ein wenig. -
Nein, nein, so leicht lässt sich die pfSense nicht täuschen. Die Verbindung geht ja tatsächlich von einem Host in 10.1.1.0/24 nach 10.1.2.2 und die Pakete kommen in diesem Fall am LAN1 Interface rein. Daher muss auf LAN1 eine entsprechende Regel den Zugriff erlauben.
Ein Portforward-Regel kann die Firewall-Regel automatisch anlegen, entweder sichtbar oder unsichtbar.
Ein Tipp für ein kleine Erleichterung dazu: Wenn du bei "Filter rule association" "Add unassociated filter rule" wählst, wird eine von der NAT-Regel unabhängige Firewall-Regel am jeweiligen Interface erstellt. Diese kannst du dann in Firewall > Rules > WAN kopieren (Symbol rechts), danach editieren und das Interface auf LAN1 und die Source entsprechend ändern, damit sie für deine Zwecke pass.