Netzwerkadressumwandlung (NAT) ist der Prozess, die Quell- oder öffentliche IP-Adresse und den Port eines Pakets an eine andere IP-Adresse und einen anderen Port zu ändern, um sicherzustellen, dass Pakete von einem Netzwerk zu einem anderen übertragen werden. Unter Linux gibt es verschiedene Tools und Technologien, mit denen Sie NAT konfigurieren und den Netzwerkverkehr effektiv verwalten können.
Eines der beliebtesten Tools zum Konfigurieren von NAT unter Linux ist das iptables (IP-Tabelle), die Teil des Betriebssystemkernes ist. Iptables bietet viele Regeln und Funktionen zum Routing und Filtern von Paketen. Mit iptables können Sie NAT-Regeln erstellen, mit denen Sie den Datenverkehr im Netzwerk ändern und umleiten können.
Ein weiteres beliebtes Tool zum Konfigurieren von NAT unter Linux ist netfilter, die auch im Betriebssystemkern enthalten ist. Netfilter bietet Software zum Filtern und Konvertieren von Netzwerkpaketen. Es ermöglicht Ihnen, NAT-Regeln zu erstellen, die die Protokolle, Adressen und Ports von Paketen steuern.
Das Einrichten von NAT unter Linux kann in verschiedenen Szenarien nützlich sein, z. B. das Bereitstellen des Internetzugangs für lokale Netzwerke, das Erstellen virtueller privater Netzwerke (VPNs) oder das Umleiten von Ports an Hosts oder Dienste im Netzwerk. Die richtige NAT-Konfiguration ermöglicht die effiziente Nutzung der Netzwerkressourcen und die Gewährleistung der Sicherheit und Zuverlässigkeit der Datenübertragung.
Was ist NAT und warum wird es benötigt
Der Hauptzweck von NAT besteht darin, lokale IP-Adressen in globale IP-Adressen umzuwandeln und umgekehrt, um die Kommunikation zwischen Computern oder Geräten aus verschiedenen Netzwerken zu ermöglichen.
Da die Anzahl der mit dem Internet verbundenen Geräte wächst, nimmt die Anzahl der freien globalen IP-Adressen schnell ab, sodass NAT eine Schlüsselrolle bei der Einsparung der verwendeten IP-Adressen spielt. Es ermöglicht Ihnen, mehrere Geräte innerhalb eines lokalen Netzwerks mit nur einer globalen IP-Adresse zu organisieren.
Darüber hinaus bietet NAT Netzwerksicherheit, da es lokale IP-Adressen vor der Außenwelt verbergen und direkte Angriffe auf lokale Geräte verhindern kann.
NAT kann jedoch auch die Ursache für einige Netzwerkprobleme sein, z. B. Probleme beim Verbinden von Anwendungen, die einen direkten Zugriff aus dem Internet auf Geräte im lokalen Netzwerk erfordern.
Insgesamt ist NAT ein wichtiges Werkzeug für die Verwaltung und Sicherheit eines Netzwerks, das es ermöglicht, IP-Adressen effizient zu nutzen und die Kommunikation zwischen Geräten in verschiedenen Netzwerken zu ermöglichen.
Grundbegriff
Unter Linux wird NAT normalerweise mit dem iptables-Programm durchgeführt, das Teil der Standardinstallation vieler Linux-Distributionen ist. Zur Konfiguration von NAT unter Linux wird häufig auch Software wie firewalld oder NetworkManager verwendet.
Grundlegende Konzepte im Zusammenhang mit NAT:
- Interne IP-Adresse (Private IP): Dies ist eine Adresse, die im lokalen Netzwerk verwendet wird und nicht direkt im Internet verwendet werden kann.
- Externe IP-Adresse (Public IP): Dies ist die Adresse, die dem Gerät zugewiesen wird, damit es online kommunizieren kann.
- Quelle (Source): Dies ist die IP-Adresse und der Port des Absenders des Pakets.
- Ziel (Destination): Dies ist die IP-Adresse und der Port des Paketempfängers.
- Konvertierende IP-Adresse (NAT IP): Dies ist die IP-Adresse, die zum Konvertieren und Übersetzen von Paketen verwendet wird. Dies kann die externe IP-Adresse des Routers oder eines anderen Geräts sein, das NAT ausführt.
- Subnetzmaske (Subnet Mask): Dies sind Werte, die den Bereich möglicher IP-Adressen im Netzwerk definieren.
- NAT-Tabelle (NAT-Tabelle): Dies ist eine Tabelle, die die Regeln für die Konvertierung von IP-Adressen und Ports enthält.
Wenn Sie diese grundlegenden NAT-Konzepte verstehen, können Sie NAT unter Linux einrichten und verwalten, um sicherzustellen, dass die IP-Adressen in Ihrem Netzwerk sicher und effizient genutzt werden.
IP-Adresse und Port
Ein Port ist eine Nummer, die jeder Netzwerkanwendung auf dem Gerät zugewiesen wird. Die Ports helfen dem Router oder Switch, zu bestimmen, wo die über die IP-Adresse empfangenen Datenpakete gesendet werden sollen. Der Port ist eine 16-Bit-Zahl, die zwischen 0 und 65535 liegen kann. Ports bis 1023 werden als bekannte Ports bezeichnet und sind für bestimmte Dienste reserviert, beispielsweise ist Port 80 für HTTP reserviert.
- Die IP-Adresse ist eine eindeutige Kennung des Geräts im Netzwerk.
- Eine IP-Adresse besteht aus vier durch Punkte getrennten Zahlen.
- Ein Port ist eine Nummer, die jeder Netzwerkanwendung zugewiesen wird.
- Der Port ist eine 16-Bit-Zahl zwischen 0 und 65535.
- Bekannte Ports sind für bestimmte Dienste reserviert.
NAT-Ansichten unter Linux
Unter Linux gibt es verschiedene Arten von NAT (Network Address Translation), die jeweils für bestimmte Aufgaben ausgelegt sind. Betrachten Sie die grundlegenden Arten von NAT unter Linux:
| NAT-Ansicht | Die Beschreibung |
|---|---|
| SNAT (Source NAT) | Diese Art von NAT wird verwendet, um die ursprüngliche IP-Adresse von Paketen zu ändern. Es ermöglicht Ihnen, eine öffentliche IP-Adresse zu verwenden, um Daten im Namen lokaler Hosts mit externen Netzwerken auszutauschen. SNAT wird auch als IP-Maskierung bezeichnet. |
| DNAT (Destination NAT) | DNAT wird verwendet, um die IP-Adresse des Paketziels zu ändern. Es ermöglicht Ihnen, eingehende Pakete an andere Knoten im lokalen Netzwerk weiterzuleiten. DNAT wird auch als Portfolioverteilung bezeichnet. |
| 1:1 NAT (One-to-One NAT) | Diese NAT-Ansicht führt eine direkte Zuordnung zwischen einer externen und einer internen IP-Adresse durch. Es wird verwendet, um eine transparente Brücke zwischen internen und externen Netzwerken zu erstellen. |
| NPT (Network Prefix Translation) | Diese Art von NAT wird verwendet, um IP-Adressen unter Verwendung von IP-Präfixen zwischen verschiedenen Netzwerken zu übersetzen. |
Die Wahl eines bestimmten NAT-Typs unter Linux hängt von den Anforderungen und Spezifikationen Ihres Netzwerks ab.
Static NAT
Static NAT, oder statisches NAT, bietet die Möglichkeit, konstante Eins-zu-Eins-Adresskonvertierungen in NAT zu erstellen. Dies bedeutet, dass jedes eingehende Paket, das an eine bestimmte externe IP-Adresse adressiert ist, an die in der NAT-Regel angegebene interne IP-Adresse weitergeleitet wird.
Statisches NAT wird verwendet, um den Zugriff aus dem Internet auf interne Server über eine einzige externe IP-Adresse zu ermöglichen. Wenn Sie beispielsweise eine externe IP-Adresse 203.0.113.10 und eine interne IP-Adresse 192.168.0.10 für den Webserver haben, können Sie das statische NAT so konfigurieren, dass alle eingehenden Anforderungen an die externe IP-Adresse 203.0.113 erfüllt werden.10 wurden an die interne IP-Adresse 192.168.0.10 weitergeleitet.
Sie können das Dienstprogramm iptables verwenden, um statische NAT unter Linux zu konfigurieren. Beispielbefehl zum Erstellen einer statischen NAT-Regel:
iptables -t nat -A PREROUTING -d 203.0.113.10 -j DNAT --to-destination 192.168.0.10
Dieser Befehl fügt in der Kette PREROUTING (-A PREROUTING) eine Regel für die NAT-Tabelle (-t nat) hinzu, die alle Pakete mit dem Ziel 203.0.113.10 (-d 203.0.113.10) an die interne IP-Adresse 192.168.0.10 (--to-destination 192.168.0.10) weiterleitet.
Nach der Konfiguration des statischen NAT unter Linux ist die externe IP-Adresse 203.0.113.10 leitet alle eingehenden Pakete an die interne IP-Adresse 192.168.0.10 weiter, sodass externe Clients auf den Webserver zugreifen können.
Dynamic NAT
Die dynamische Netzwerkpaketweiterleitung (Dynamic NAT) unter Linux ist eine Methode zur Übersetzung zwischen einer öffentlichen globalen IP-Adresse und privaten lokalen IP-Adressen. Wenn Sie diesen NAT-Modus verwenden, können nur Geräte im lokalen Netzwerk, die Anforderungen an eine externe IP-Adresse senden, auf das WAN zugreifen.
Um Dynamic NAT unter Linux zu konfigurieren, müssen Sie die folgenden Schritte ausführen:
- Konfigurieren von IP-Adressen auf den Netzwerkschnittstellen des Servers;
- Paketforward auf dem Server aktivieren;
- Konfigurieren Sie die iptables-Regeln für die Paketweiterleitung.
Führen Sie die folgenden Befehle aus, um die iptables-Regeln zu konfigurieren:
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE# iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT# iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
| Das Team | Die Beschreibung |
|---|---|
| iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | Legt eine Regel fest, um Pakete über die eth0-Schnittstelle vom lokalen Netzwerk zum globalen Netzwerk weiterzuleiten. |
| iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT | Ermöglicht das Weiterleiten von Paketen, die installiert sind oder bereits vorhandenen Verbindungen zugeordnet sind. |
| iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT | Erlaubt die Weiterleitung von Paketen von der Schnittstelle eth0 an die Schnittstelle eth1. |
Nachdem Sie diese Befehle ausgeführt haben, ist der Server für die Arbeit mit Dynamic NAT konfiguriert. Geräte im lokalen Netzwerk können jetzt die öffentliche globale IP-Adresse des Servers verwenden, um auf das WAN zuzugreifen.
Port Forwarding
Die im Linux-Kernel integrierte NAT- oder Netzwerkadressübersetzung ermöglicht eine direkte Verbindung zwischen externen und internen Netzwerkschnittstellen. Sie müssen jedoch Portweiterleitung oder Portweiterleitung konfigurieren, um mit Geräten innerhalb des lokalen Netzwerks zu kommunizieren.
Port Forwarding oder Port-Weiterleitung ermöglicht es Ihnen, externen Datenverkehr an bestimmte Ports und Adressen innerhalb des lokalen Netzwerks weiterzuleiten. Dies ist besonders nützlich, wenn Sie Remote-Zugriff auf einen bestimmten Dienst gewähren möchten, z. B. einen Webserver oder einen FTP-Server.
Um die Portweiterleitung unter Linux zu konfigurieren, müssen Sie die folgenden Schritte ausführen:
- Öffnen Sie ein Terminal und melden Sie sich als Root-Benutzer an.
- Konfigurieren Sie Ihren Router oder Ihr Gateway so, dass die Ports an Ihren Computer weitergeleitet werden.
- Konfigurieren Sie Firewall- oder IPTABLES-Regeln, um eingehenden Datenverkehr an bestimmten Ports zuzulassen.
- Konfigurieren Sie die Portweiterleitung unter Linux mit dem Befehl iptables.
Beispielbefehl zum Konfigurieren der Portweiterleitung zu Linux:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
In diesem Beispiel leiten wir den gesamten eingehenden Datenverkehr an Port 80 an ein Gerät mit der IP-Adresse 192.168.1.2 im lokalen Netzwerk weiter. Der erste Befehl PREROUTING führt eine Umleitung durch, und der zweite Befehl POSTROUTING führt eine Maskerade oder Ersetzung der ursprünglichen IP-Adresse an der externen Schnittstelle durch.
Nachdem diese Befehle ausgeführt wurden, wird eingehender Datenverkehr an Port 80 automatisch an das angegebene Gerät im lokalen Netzwerk weitergeleitet.
Port Forwarding ist eine wichtige Funktion in der NAT-Konfiguration unter Linux, mit der Sie externen Datenverkehr an bestimmte Ports und Adressen innerhalb eines lokalen Netzwerks weiterleiten können.
Erforderliche Pakete installieren
Bevor Sie NAT unter Linux konfigurieren, müssen Sie mehrere Pakete installieren, mit denen Sie diese Aufgabe ausführen können. Führen Sie dazu die folgenden Befehle im Terminal aus:
sudo apt update
sudo apt install iptables
sudo apt install iproute2
Der Befehl sudo apt update aktualisiert die Liste der verfügbaren Pakete und der Befehl sudo apt install installiert die benötigten Pakete.
Das iptables-Paket bietet Tools zum Konfigurieren von Linux-Firewall-Regeln (Netfilter). Das Paket iproute2 enthält Dienstprogramme zum Konfigurieren des IP-Routing und zur Netzwerkverwaltung.
Nachdem Sie diese Pakete installiert haben, können Sie mit der Konfiguration von NAT unter Linux beginnen.