Wie konfiguriert man NAT auf pfSense?
Die Netzwerkadressübersetzung (NAT) ist der Prozess, bei dem eine Internetprotokoll-(IP)-Adresse in eine andere übersetzt wird, indem der IP-Paketkopf beim Durchlaufen eines Routers modifiziert wird. Im Rahmen dieses Ansatzes legen NAT-Konfigurationen nur eine einzige IP-Adresse für ein gesamtes Netzwerk gegenüber der Außenwelt offen, wodurch die Sicherheit des gesamten internen Netzwerks maskiert und gestärkt wird. Die Netzwerkadressübersetzung wird häufig in Fernzugriffsszenarien verwendet, da sie Adressen spart und gleichzeitig die Sicherheit erhöht. Dies verbessert die Sicherheit, während die Anzahl der von einem Unternehmen benötigten IP-Adressen reduziert wird.
In diesem Artikel werden wir einige praxisnahe Szenarien für die NAT-Konfiguration auf der pfSense-Software-Firewall vorstellen:
-
Portweiterleitung für Webserver
-
Portweiterleitung für SSH- und RDP-Dienste auf benutzerdefinierten Ports
-
Outbound-NAT für den Zugriff auf einen Remote-Dienst über die externe IP
Wie konfiguriert man Portweiterleitung für Webdienste?
Internetbasierte Dienstanbieter müssen ihre Apps und Webserver über das Internet verfügbar machen. Stellen Sie sich vor, Ihre Organisation hat zwei separate Webserver im DMZ-Netzwerk, aber nur eine öffentliche IP-Adresse. Diese HTTP- und HTTPS-Ports der Webserver sollten von überall auf der Welt über dieselbe IP-Adresse zugänglich sein. Dazu können Sie die Portweiterleitungsregeln von pfSense konfigurieren. Sie können Ihre Regeln so gestalten, dass Anfragen, die an die Ports 80 und 443 gesendet werden, an den ersten Webserver weitergeleitet werden, während Anfragen, die an die Ports 81 und 8443 gesendet werden, an den zweiten Webserver weitergeleitet werden. Für dieses Setup folgen Sie bitte den untenstehenden Anweisungen.
Servername | Externe IP | Externer Port | Lokale IP | Lokaler Port |
---|---|---|---|---|
WebServer1 | Öffentliche Internet-IP | 80 | 10.1.1.13 | 80 |
WebServer1 | Öffentliche Internet-IP | 443 | 10.1.1.13 | 443 |
WebServer2 | Öffentliche Internet-IP | 81 | 10.1.1.14 | 80 |
WebServer2 | Öffentliche Internet-IP | 8443 | 10.1.1.14 | 443 |
Abbildung 1. Port-Forwarding-Topologie für Webdienste
Nachdem Sie die Portweiterleitungs-Konfigurationen auf Ihrer pfSense-Firewall abgeschlossen haben, werden HTTP(80) und HTTPS(443) Anfragen an Ihre WAN-IP an den WebServer1(10.1.1.13) weitergeleitet, während Anfragen an Port 81 und Port 8443 an Ihre WAN-IP an den WebServer2 weitergeleitet werden.(10.1.1.14).
Portweiterleitung für den HTTPS(443)-Dienst von WebServer1
Sie können die folgenden Anweisungen befolgen, um eine Portweiterleitungsregel für den HTTPS-Dienst von WebServer1 hinzuzufügen.
-
Navigieren Sie zu Firewall > NAT > Port Forward im pfSense-Web-UI.
-
Klicken Sie auf die Schaltfläche
Add
mit einem Hoch-Icon. Dies öffnet das Fenster zur Konfiguration der Portweiterleitung.Abbildung 2. Firewall-Portweiterleitungsregeln
-
Setzen Sie die Interface auf
WAN
. -
Wählen Sie
IPv4
für die Address Family, um die Internetprotokollversion auszuwählen, auf die diese Regel zutrifft. -
Setzen Sie das Protocol auf
TCP
. -
Setzen Sie das Destination auf
WAN Address
. -
Setzen Sie den Destination Port Range auf
HTTPS
. -
Wählen Sie
Single Host
aus dem Dropdown-Menü Redirect Target IP. Setzen Sie dann das Feld auf die private IP-Adresse von WebServer1, wie z.B.10.1.1.13
.Abbildung 3. Konfiguration der Portweiterleitungsregel für HTTPS-1
-
Setzen Sie den Weiterleitungszielport auf
HTTPS
. -
Füllen Sie das Beschreibungsfeld aus, z.B.
Allow HTTPS access to Webserver_10.1.1.13
. -
Wählen Sie
Add associated filter rule
aus der Option zur Verknüpfung der Filterregel. -
Lassen Sie die anderen Optionen auf Standard.
-
Klicken Sie auf die Schaltfläche
Save
am unteren Rand der Seite.Abbildung 4. Konfiguration der Portweiterleitungsregel für HTTPS-2
-
Klicken Sie auf die Schaltfläche Apply Changes, um die Einstellungen zu aktivieren.
Abbildung 5. Anwenden der Änderungen der Portweiterleitungsregel für HTTPS
-
Navigieren Sie zu Firewall > Rules > WAN, um die Firewall-Regel zu überprüfen. Wie in der nächsten Abbildung dargestellt, zeigt die Regel an, dass HTTPS-Verkehr auf dem angegebenen Port in die interne IP-Adresse eintreten darf.
Abbildung 6. HTTPS-Portweiterleitungs-Firewall-Regel auf der WAN-Schnittstelle
Portweiterleitung für den HTTP(80)-Dienst von WebServer1
Um eine Portweiterleitungsregel für den HTTP(80)-Dienst von WebServer1 zu erstellen, können Sie die oben erstellte Portweiterleitungsregel für den HTTPS(443)-Dienst klonen und die entsprechenden Einstellungen ändern, indem Sie die folgenden Schritte befolgen.
-
Navigieren Sie zu Firewall > NAT > Portweiterleitung im pfSense-Web-UI.
-
Klicken Sie auf das Klon-Symbol unter der Spalte Actions, um die Portweiterleitungsregel für den oben erstellten HTTPS(443)-Dienst zu kopieren.
-
Ändern Sie die Option Destination Port Range auf
HTTP
.Abbildung 7. Konfiguration der Portweiterleitungsregel für HTTP in pfSense-1
-
Setzen Sie den Redirect Target Port auf
HTTP
. -
Ändern Sie das Feld Description in
Allow HTTP access to Webserver_10.1.1.13
. -
Überprüfen Sie, ob die Option Filter rule association auf
Add associated filter rule
eingestellt ist. -
Lassen Sie die anderen Optionen unverändert.
Abbildung 8. Konfiguration der Portweiterleitungsregel für HTTP in pfSense-1
-
Klicken Sie auf die Schaltfläche
Save
am unteren Rand der Seite. -
Klicken Sie auf die Schaltfläche Apply Changes, um die Einstellungen zu aktivieren.
Abbildung 9. Anwenden der Änderungen der Portweiterleitungsregel für HTTP
Portweiterleitung für den HTTP-Dienst von WebServer2 auf benutzerdefiniertem externen Port(81)
Um eine Portweiterleitungsregel für den HTTP-Dienst von WebServer2 auf einem benutzerdefinierten Port (81) zu erstellen, können Sie die oben erstellte Portweiterleitungsregel für den HTTP-Dienst (80) klonen und die entsprechenden Einstellungen ändern, indem Sie die folgenden Schritte ausführen.
-
Navigieren Sie zu Firewall > NAT > Port Forward im pfSense-Web-UI.
-
Klicken Sie auf das Klon-Symbol, um die Portweiterleitungsregel für den oben erstellten HTTP(80)-Dienst zu kopieren.
-
Ändern Sie die Option Destination Port Range auf
other
und geben Sie81
in das entsprechende Feld ein.Abbildung 10. Konfiguration der Portweiterleitungsregel für HTTP(81) auf pfSense-1
-
Setzen Sie die Redirect Target IP auf
10.1.1.14
-
Setzen Sie den Redirect Target Port auf
HTTP
. -
Ändern Sie das Feld Description in
Allow HTTP access to Webserver_10.1.1.14
. -
Überprüfen Sie, ob die Option Filter rule association auf
Add associated filter rule
eingestellt ist. -
Lassen Sie die anderen Optionen unverändert.
Abbildung 11. Konfiguration der Portweiterleitungsregel für HTTP(81) auf pfSense-2
-
Klicken Sie auf die Schaltfläche
Save
am unteren Rand der Seite. -
Klicken Sie auf die Schaltfläche Apply Changes, um die Einstellungen zu aktivieren.
Abbildung 12. Anwenden der Änderungen der Portweiterleitungsregel für HTTP(81)
Portweiterleitung für HTTPS-Dienst von WebServer2 auf benutzerdefiniertem externen Port (8443)
Um eine Portweiterleitungsregel für den HTTPS-Dienst von WebServer2 auf einem benutzerdefinierten externen Port (8443) zu erstellen, können Sie die Portweiterleitungsregel für den oben erstellten HTTP-Dienst (81) klonen und die entsprechenden Einstellungen ändern, indem Sie die folgenden Schritte ausführen.
-
Klicken Sie auf das Klon-Symbol, um die Portweiterleitungsregel für den oben erstellten HTTP(81)-Dienst zu kopieren.
-
Ändern Sie die Option Destination Port Range auf
8443
.Abbildung 13. Konfiguration der Portweiterleitungsregel für HTTPS(8443) auf pfSense-1
-
Setzen Sie den Redirect Target Port auf
HTTPS
. -
Ändern Sie das Feld Description in
Allow HTTPS access to Webserver_10.1.1.14
. -
Überprüfen Sie, ob die Option Filter rule association auf
Add associated filter rule
eingestellt ist. -
Lassen Sie die anderen Optionen unverändert.
-
Klicken Sie auf die Schaltfläche
Save
am unteren Rand der Seite.Abbildung 14. Portweiterleitungsregelkonfiguration für HTTPS(8443) auf pfSense-2
-
Klicken Sie auf die Schaltfläche Apply Changes, um die Einstellungen zu aktivieren.
Jetzt haben Sie die Portweiterleitungs-Konfigurationen beider Webserver abgeschlossen. Ihre Liste der Portweiterleitungsregeln sollte folgendermaßen aussehen.
Abbildung 15. Liste der Portweiterleitungsregeln für Webserver auf pfSense
Da wir die Option Add associated filter rule
ausgewählt haben, werden die entsprechenden Firewall-Regeln automatisch auf der WAN-Schnittstelle erstellt. Um die automatisch hinzugefügten zugehörigen Regeln anzuzeigen, navigieren Sie zu Firewall > Rules > WAN. Die Liste der Firewall-Regeln auf WAN-Schnittstellen sollte wie folgt aussehen:
Abbildung 16. WAN-Firewall-Regeln für die Portweiterleitung eines Webservers auf pfSense
Obwohl interne Benutzer auf die Webserver zugreifen sollten, indem sie sich mit der privaten IP-Adresse (lokale IP) der Server verbinden, könnten sie versuchen, sich mit einem lokalen Server über die öffentlichen IP-Adressen zu verbinden. Um lokalen Benutzern den Zugriff auf die öffentlichen IP-Adressen dieser Server zu ermöglichen, müssen Sie die NAT-Reflexion zulassen. Für die NAT-Reflexion sollten Sie die NAT-Reflexion aktivieren, indem Sie Pure NAT
in der Option NAT Reflection mode for port forwards
auf der Seite System > Advanced > Firewall & NAT auswählen.
Abbildung 17. Aktivierung der Reflexion für Portweiterleitungen
Stellen Sie außerdem sicher, dass NAT-Reflexion in der Konfiguration der Portweiterleitungsregel aktiviert ist.
Abbildung 18. Aktivierung der NAT-Reflexion in der Portweiterleitungsregel
So konfigurieren Sie die Portweiterleitung für SSH- und RDP-Dienste auf benutzerdefinierten Ports
Stellen Sie sich einen Webadministrator vor, der von zu Hause aus Remote-Zugriff (SSH und RDP) auf die Webserver benötigt. Zu Hause verwendet er eine statische öffentliche IP-Adresse. Da Verwaltungsdienste wie SSH und RDP unerlässlich sind und ein erhebliches Sicherheitsrisiko darstellen, wird empfohlen, dass sie nicht aus dem gesamten Internet zugänglich sind. Folglich werden Sie eine Portweiterleitungsregel erstellen, um der IP-Adresse des Site-Administrators den Zugriff auf die Webserver zu ermöglichen. Sie müssen SSH und RDP auf benutzerdefinierten Ports zulassen, da die Standardports bereits von anderen Servern verwendet werden.
Servername | Externe IP | Externer Port | Lokale IP | Lokaler Port | Client IP |
---|---|---|---|---|---|
WebServer1 | Öffentliche Internet-IP | 2222 | 10.1.1.13 | 22 | 1.1.1.1 |
WebServer2 | Öffentliche Internet-IP | 5555 | 10.1.1.14 | 3389 | 1.1.1.1 |
Abbildung 19. Port-Forwarding-Topologie für SSH- und RDP-Dienste
Nachdem Sie die Portweiterleitungs-Konfigurationen auf Ihrer pfSense-Firewall abgeschlossen haben, werden Port-2222-Anfragen, die von der IP-Adresse des Webadministrators (1.1.1.1) an Ihre WAN-IP gesendet werden, an den WebServer1 (10.1.1.13) weitergeleitet, während Port-5555-Anfragen, die von der IP-Adresse des Webadministrators (1.1.1.1) an Ihre WAN-IP gesendet werden, an den WebServer2 weitergeleitet werden.(10.1.1.14).
Portweiterleitung für den SSH-Dienst von WebServer1 auf benutzerdefiniertem externen Port(2222)
Um eine Portweiterleitungsregel für den SSH-Dienst von WebServer1 auf einem benutzerdefinierten Port (2222) zu erstellen, können Sie die Portweiterleitungsregel für den HTTP-Dienst (80), die oben erstellt wurde, klonen und die entsprechenden Einstellungen ändern, indem Sie die folgenden Schritte ausführen.
-
Klicken Sie auf das Klon-Symbol, um die Portweiterleitungsregel für den oben erstellten HTTP(80)-Dienst zu kopieren.
-
Klicken Sie auf die Schaltfläche
Display Advanced
in der Source-Option. Dies zeigt die Details derSource
-Option an. -
Wählen Sie
Single Host or alias
aus dem Dropdown-Menü Type und geben Sie die statische öffentliche IP-Adresse des Webadministrators, wie1.1.1.1
, in das FeldAddress/mask
ein. -
Lassen Sie den Quellportbereich auf
any
.Abbildung 20. Konfiguration der Portweiterleitungsregel für SSH(2222) auf pfSense-1
-
Wählen Sie
other
für die Option Destination Port Range und geben Sie2222
für das FeldCustom
ein. -
Setzen Sie den Redirect Target Port auf
SSH
. -
Ändern Sie das Feld Description in
Allow SSH access to Webserver_10.1.1.13
. -
Überprüfen Sie, ob die Option zur Zuordnung der Filterregel auf
Add associated filter rul
eingestellt ist. -
Lassen Sie die anderen Optionen unverändert.
-
Klicken Sie auf die Schaltfläche
Save
am unteren Rand der Seite.Abbildung 21. Konfiguration der Portweiterleitungsregel für SSH(2222) auf pfSense-2
-
Klicken Sie auf die Schaltfläche Apply Changes, um die Einstellungen zu aktivieren.
Portweiterleitung für den RDP-Dienst von WebServer2 auf benutzerdefiniertem externen Port(5555)
Um eine Portweiterleitungsregel für den RDP-Dienst von WebServer2 auf einem benutzerdefinierten Port (5555) zu erstellen, können Sie die Portweiterleitungsregel für den oben erstellten SSH-Dienst (2222) klonen und die entsprechenden Einstellungen ändern, indem Sie die folgenden Schritte befolgen.
-
Klicken Sie auf das Klon-Symbol, um die Portweiterleitungsregel für den oben erstellten SSH(2222)-Dienst in der Liste der Portweiterleitungsregeln zu kopieren.
-
Ändern Sie die Option Destination Port Range auf
5555
. -
Setzen Sie die Redirect Target IP auf die lokale IP-Adresse von WebServer2, z.B. 10.1.1.14.
-
Setzen Sie den Redirect Target Por auf
MS RDP
.Abbildung 22. Konfiguration der Portweiterleitungsregel für MS-RDP(5555) auf pfSense-1
-
Ändern Sie das Feld Description in
Allow RDP access to Webserver_10.1.1.14
. -
Überprüfen Sie, ob die Option Filter rule association auf
Add associated filter rule
eingestellt ist. -
Lassen Sie die anderen Optionen unverändert.
Abbildung 23. Konfiguration der Portweiterleitungsregel für MS-RDP(5555) auf pfSense-2
-
Klicken Sie auf die Schaltfläche
Save
am unteren Rand der Seite. -
Klicken Sie auf die Schaltfläche Apply Changes, um die Einstellungen zu aktivieren.
Nun haben Sie die Portweiterleitungsregeln für beide Verwaltungsdienste konfiguriert. Ihre Liste der Portweiterleitungsregeln sollte so aussehen.
Abbildung 24. Liste der Portweiterleitungsregeln für den Fernzugriff auf Webserver in pfSense*
Da wir die Option Add associated filter rule
ausgewählt haben, werden die entsprechenden Firewall-Regeln automatisch auf der WAN-Schnittstelle erstellt. Um die automatisch hinzugefügten zugehörigen Regeln anzuzeigen, navigieren Sie zu Firewall
> Rules
-> WAN
. Die Liste der Firewall-Regeln auf WAN-Schnittstellen sollte wie folgt aussehen:
Abbildung 25. WAN-Firewall-Regeln für SSH- und RDP-Zugriffsportweiterleitung auf pfSense
Outbound NAT zum Zugriff auf einen entfernten Dienst über eine spezifische externe IP-Adresse
Stellen Sie sich vor, dass einer Ihrer Anwendungsserver (WebServer1 mit der IP-Adresse 10.1.1.13
) über das Internet eine Verbindung zu einer MySQL-Datenbank im Netzwerk eines anderen Unternehmens herstellen muss. Gemäß den Vereinbarungen zwischen Ihrem Unternehmen und dem anderen Unternehmen müssen Sie sicherstellen, dass WebServer1 das einzige Gerät in Ihrem Netzwerk ist, das Zugriff auf den entfernten MySQL-DB-Server (öffentliche IP-Adresse: 3.3.3.3
) hat. Keine anderen Geräte in Ihrem LAN dürfen auf die entfernte DB zugreifen.
Dazu müssen Sie zunächst eine zweite öffentliche IP-Adresse erwerben, die verwendet wird, um WebServer1 den Zugriff auf die entfernte MySQL-Datenbank zu ermöglichen. Aufgrund der Tatsache, dass Ihre ursprüngliche öffentliche IP-Adresse von lokalen Benutzern und Servern für den Internetzugang genutzt wird, müssen Sie eine zweite IP-Adresse beschaffen. Wir werden 2.2.2.2
als unsere zweite IP-Adresse verwenden, und WebServer1 wird diese externe IP-Adresse nutzen, um sich mit der entfernten MySQL-Datenbank zu verbinden.
Pakettyp | Quell-IP vor NAT | Ziel-IP vor NAT | Quell-IP nach NAT | Ziel-IP nach NAT |
---|---|---|---|---|
MySQL-Anfrage | 10.1.1.13 | 3.3.3.3 | 2.2.2.2 | 3.3.3.3 |
MySQL-Antwort | 3.3.3.3 | 2.2.2.2 | 3.3.3.3 | 10.1.1.13 |
Abbildung 26. Outbound NAT/SNAT-Topologie zum Zugriff auf einen entfernten Datenbankserver
Sie können die folgenden Schritte ausführen:
-
Definieren Sie ein Alias, wie z.B.
RemoteCompany_DB
. -
Um eine virtuelle IP-Adresse für Ihre zweite öffentliche IP-Adresse zu erstellen, navigieren Sie zu Firewall > Virtual IPs.
-
Klicken Sie auf die Schaltfläche
+Add
, um eine virtuelle IP-Adresse hinzuzufügen. -
Wählen Sie
IP Alias
als Type. -
Wählen Sie
WAN
als Interface. -
Setzen Sie die Adresse auf Ihre zweite öffentliche IP-Adresse, die von Ihrem WebServer1 zum Zugriff auf den Datenbankserver verwendet wird, wie z.B.
2.2.2.2/32
. -
Geben Sie
WAN VIP_2.2.2.2
in das Feld Description ein. -
Lassen Sie die anderen Optionen auf den Standardwerten.
-
Klicken Sie auf
Save
.Abbildung 27. Konfiguration der virtuellen IP-Adresse auf pfSense
-
Klicken Sie auf
Apply Changes
, um die VIP-Einstellungen zu aktivieren.Abbildung 28. Einstellungen der virtuellen IP-Adresse auf pfSense
-
Navigieren Sie zu Firewall > NAT > Outbound, um Outbound NAT zu definieren.
-
Wählen Sie die Option „Hybrid Outbound NAT-Regelgenerierung“.
-
Klicken Sie auf die Schaltfläche
Save
.Abbildung 29. Einstellung des Outbound-NAT-Modus in pfSense
-
Klicken Sie auf die Schaltfläche Add mit einem Aufwärtspfeil-Symbol, um eine manuelle Outbound-NAT-Regel an oberster Stelle der Liste hinzuzufügen.
-
Setzen Sie die Interface auf
WAN
. -
Sie können die Address Family auf
IPv4+IPv6
einstellen. -
Setzen Sie das Protokoll auf
TCP
. -
Setze Quelladresse auf
Network
-
Geben Sie die IP-Adresse des WebServers1 ein, z.B.
10.1.1.13/32
. -
Sie können das Feld für den Quellport leer lassen.
-
Wählen Sie
Network
für Destination undRemoteCompany_DB
im Feld Zieladresse. -
Wählen Sie den Zielport als
3306
.Abbildung 30. Definition einer ausgehenden NAT-Regel auf pfSense -1
-
Wählen Sie
2.2.2.2 (WAN IP_2.2.2.2)
für Adresse im Translation-Bereich. -
Sie können das Kontrollkästchen
Statischer Port
für die Port or Range Option aktivieren, die zum Remapping des ursprünglichen Quellports bei Verbindungen verwendet wird, die der Regel entsprechen. -
Geben Sie
Remote MySQL DB access
in das Feld Description ein.Abbildung 31. Definition einer ausgehenden NAT-Regel auf pfSense -2
-
Klicken Sie auf
Save
-
Klicken Sie auf
Apply Changes
, um die Outbound-NAT-Regel zu aktivieren.
Ihre Liste der Outbound-NAT-Regeln sollte ungefähr so aussehen:
Abbildung 32. Outbound-NAT-Regeln auf pfSense
Wenn WebServer1 versucht, eine Verbindung zu einem entfernten Datenbankserver herzustellen, sollten Sie in Ihren Firewall-Protokollen sehen, dass die DB über die IP-Adresse 2.2.2.2
verbunden wird. Um die Firewall-Protokolle anzuzeigen, navigieren Sie zu Status > System Logs > Firewall.