
Von The Cable Guy
Alle auf Deutsch verfügbaren Cable Guy-Kolumnen finden Sie hier.
NATs (Network Address Translator) ermöglichen Computern in privaten Netzwerken Zugang zu Internet-Ressourcen, ohne dass vom Internet aus direkt auf diese Computer zugegriffen werden kann. Mit NATs können die privaten IPv4-Adressbereiche (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) in privaten Netzwerken genutzt werden. So ist es nicht mehr notwendig, IPv4-Adressen für jeden Knoten zu besitzen, der einen Zugriff auf Internet-Ressourcen benötigt. Dies ist zwar ein klarer Vorteil von NATs – er hat jedoch seinen Preis.
Das ursprüngliche Internet wurde für einen global eindeutigen Adressraum entworfen. Alle Schnittstellen, die mit dem Internet verbunden sind, müssen über eine eindeutige Adresse verfügen. Diese muss dem Subnetz, mit dem die Schnittstelle verbunden ist, entsprechen. Unabhängig von der Verbindung dieser Subnetze untereinander ist die Schnittstelle immer über ihre global eindeutige Adresse erreichbar.
Mit NATs und den privaten Adressbereichen wird diese Forderung nach einem global eindeutigen Adressraum unterlaufen. Jedes NAT-Netzwerk verwendet die gleichen privaten Adressbereiche. Das bedeutet, dass mehrere Schnittstellen in unterschiedlichen Netzwerken die gleiche Adresse haben können. Diese privaten Netzwerke sind zwar aus dem Internet nicht direkt sichtbar, aber möglicherweise können sie sich gegenseitig sehen. Die Zusammenführung mehrere privater Netzwerke in ein Netzwerk kann außerdem zu Adresskollisionen führen (mehrere Subnetze mit gleichem Adressprefix oder doppeldeutige Einträge in Routingtabellen).
Ein Beispiel: Das Unternehmen A verwendet den privaten Adressbereich 10.0.0.0/8 für sein internes Netzwerk. Auch das Unternehmen B verwendet den privaten Adressbereich 10.0.0.0/8. Wenn sich Unternehmen A und B nun zusammenschließen, sind die Chancen für Adresskonflikte sehr hoch. Das zusammengeschlossene Unternehmen muss Teile des entstandenen Netzwerks neu konfigurieren – dies ist ein kostenintensiver und zeitaufwändiger Prozess. DHCP unterstützt den Vorgang zwar für die meisten hostbasierten IP-Knoten, aber statisch konfigurierte Knoten (z. B. Server) müssen manuell neu konfiguriert werden. Außerdem muss die Routing-Infrastruktur neu entworfen werden.
Die grundlegende Funktionsweise von NAT ist im Artikel Windows 2000 Network Address Translator (NAT) (englischsprachig) beschrieben. Sie lässt sich folgendermaßen zusammenfassen:
NAT ändert bei ausgehenden Paketen die private Quelladresse in eine öffentliche Quelladresse. Außerdem wird der TCP- oder UDP-Quellport auf einen NAT-spezifischen Port geändert. Bei eingehenden Paketen ändert NAT die öffentliche Zieladresse in die ursprüngliche private Adresse. Außerdem wird die TCP- oder UDP-Zielportnummer auf den ursprünglichen Wert zurückgesetzt.
Die Zuordnung der öffentlichen und privaten Adressen und der TCP/UDP-Portnummern wird über die NAT-Zuordnungstabelle durchgeführt. Eingehender Netzwerkverkehr, der keinem Eintrag in der Zuordnungstabelle entspricht, wird von NAT verworfen.
Wenn ein Computer hinter einem NAT (also in einem Subnetz, das durch den NAT vom Internet getrennt ist) eine Kommunikation mit einem Knoten im Internet aufbaut, dann erstellt der NAT automatisch die entsprechenden Einträge in der Zuordnungstabelle. So kann der eingehende Netzwerkverkehr an den entsprechenden internen Computer weitergeleitet werden. Ein Beispiel für diesen Vorgang ist ein interner Client, auf dem ein Webbrowser ausgeführt wird. Der DNS- und HTTP-Netzwerkverkehr, der durch den Clientcomputer angestoßen wird, führt automatisch zu einem Eintrag in der Zuordnungstabelle.
Damit Computer hinter einem NAT aus dem Internet erreichbar sind, müssen Sie in der Zuordnungstabelle statische Einträge konfigurieren. Weitere Informationen hierzu finden Sie im Artikel Configuring Access to Services Behind a Network Address Translator (NAT) (englischsprachig).
NAT verwirft Netzwerkverkehr, der keinem Eintrag in der Zuordnungstabelle entspricht. Dies fördert zwar die Sicherheit, kann aber keine Firewall ersetzen. Normalerweise sind zwei Gruppen von TCP- und UDP-Ports auf NAT-Geräten geöffnet:
| • | Die Ports für den übersetzten Netzwerkverkehr: Sie sind in der Zuordnungstabelle gespeichert. Es handelt sich um die von den Clients dynamisch geöffnete Ports und die statischen Ports für die Server. |
| • | Die Ports für die auf dem NAT ausgeführten Anwendungen und Dienste. |
Statische Ports für Server hinter dem NAT und die Ports für die auf dem NAT ausgeführten Anwendungen und Dienste machen den NAT angreifbar. Da es für einen Angreifer schwer ist, die offenen dynamischen Ports vorherzusehen, stellen diese kein so großes Problem dar. Wenn es sich beim NAT um einen Computer und nicht um ein dediziertes Gerät handelt, dann ist dieser Computer jedoch auf jeden Fall angreifbar.
Daher sollte NAT nur in Kombination mit einer Firewall eingesetzt werden. Zusätzlich sollten die Clients im privaten Netzwerk eine hostbasierte Firewall verwenden – so kann die Ausbreitung von schädlicher Software im privaten Netzwerk verhindert werden.
Wie bereits beschrieben, haben die Clients hinter einem NAT normalerweise kein Problem, auf das Internet zuzugreifen. Wenn sich Server hinter einem NAT befinden, kann es jedoch in den folgenden Situationen zu Problemen kommen:
| • | Multihost-Anwendungen |
| • | Peer-to-Peer-Anwendungen |
| • | IPSec NAT-T |
Multihost-Anwendungen sind solche Anwendungen, bei denen mehrere Computer miteinander über einen zentralen Server kommunizieren – zum Beispiel Teamanwendungen oder Multiplayer-Netzwerkspiele. Wenn sich der zentrale Server und einige der Clients hinter einem NAT befinden, kann die Verwendung von privaten Adressen zu Konfigurationsproblemen führen.
Ein Server befindet sich zum Beispiel zusammen mit einigen der Clients hinter einem NAT. Einige andere Clients befinden sich im Internet. In diesem Fall müssen Sie die folgenden Konfigurationen vornehmen:
| • | Statische Einträge in der Zuordnungstabelle, die die öffentliche Adresse des NAT und die Portnummer der Serveranwendung der privaten Adresse des Servers und der entsprechenden Portnummer der Serveranwendung zuordnen. |
| • | Damit die Internet-Clients den Server über dessen DNS-Namen erreichen können, müssen Sie auf dem entsprechenden DNS-Server im Internet Einträge hinzufügen, über die der Servername in die öffentliche Adresse des NATs aufgelöst werden kann. |
| • | Damit die Clients im privaten Netzwerk den Server über dessen DNS-Namen erreichen können, müssen Sie auf dem entsprechenden DNS-Server im privaten Netzwerk Einträge hinzufügen, über die der Servername in die private Adresse des NATs aufgelöst werden kann. |
Wenn Sie nur IP-Adressen verwenden, ist die DNS-Konfiguration natürlich nicht notwendig. Es ist für Endbenutzer allerdings normalerweise recht mühsam, IPv4-Aressen statt DNS-Namen zu verwenden. Außerdem müssen Sie sicherstellen, dass alle Clients die richtige Adresse verwenden (im Internet die öffentliche Adressen und im privaten Netzwerk die private Adresse).
Ein weiteres Problem beim Einsatz von NATs ist deren Auswirkung auf Peer-to-Peer-Anwendungen. Beim Peer-to-Peer-Kommunikationsmodell können die Peers entweder als Client oder als Server agieren, und somit untereinander kommunizieren. Wenn sich ein Peer hinter einem NAT befindet, dann sind ihm zwei Adressen zugeordnet – die private Adresse und die öffentliche Adresse. Schauen wir uns eine einfache Konfiguration an, in der ein NAT zu Problemen mit Peer-to-Peer-Anwendungen führen kann. In der folgenden Abbildung sehen Sie ein privates Netzwerk mit einem NAT.

Nehmen wir an, eine Peer-to-Peer-Anwendung wird auf allen Peers ausgeführt. Peer 1 kann eine Sitzung mit Peer 2 entrichten (dieser ist direkt über sein Subnetz zu erreichen). Peer 1 kann Peer 3 jedoch nicht über die öffentliche Adresse von Peer 2 informieren (Peer 1 kennt diese nicht, da er ja über das interne Subnetz mit Peer 2 kommuniziert). Ohne dass manuell ein statischer Eintrag in der Zuordnungstabelle konfiguriert wird, kann Peer 3 außerdem nicht mit Peer 1 oder Peer 2 kommunizieren. Auch wenn ein solcher statischer Eintag besteht, kann Peer 3 nur mit einem der anderen Peers gleichzeitig kommunizieren. Dies liegt daran, dass beide Peers ja die gleiche öffentliche IPv4-Adresse und den gleichen Port für die Anwendung nutzen.
Internet-Peers befinden sich im Allgemeinen hinter zwei unterschiedlichen NATs. Dies macht die Angelegenheit noch problematischer. Beim obigen Beispiel befindet sich Peer 3 ebenfalls hinter einem NAT. Damit Peer-to-Peer-Anwendungen hinter NATs korrekt arbeiten, müssen diese entsprechend modifiziert bzw. entworfen werden. Dies bedeutet natürlich zusätzlichen Aufwand.
IPSec NAT-T (NAT Traversal) ermöglicht es, IPSec-Peers hinter NATs das NAT zu erkennen, IPSec-Sicherheitszuordnungen (Security Associations – SAs) auszuhandeln und ESP-geschützte Daten zu versenden (Encapsulating Security Payload) – und zwar obwohl sich die Adressen in den IPSec-geschützten IPv4-Paketen ändern. Detailliertere Informationen zur Arbeitsweise von IPSec NAT-T finden Sie im Artikel IPSec NAT Traversal Overview (englischsprachig).
IPSec NAT-T wird von Microsoft® Windows Server™ 2003 und Windows XP Service Pack 2 (SP2) unterstützt. Für Windows® XP Service Pack 1 und Windows 2000 ist ein Update erforderlich, das im Microsoft Knowledge Base-Artikel 818043 beschrieben wird. Um Sicherheitsrisiken zu vermeiden, unterstützt Windows XP SP2 die Aushandlung von IPSec NAT-T-SAs mit Servern hinter NATs standardmäßig nicht. Eine Beispielkonfiguration sehen Sie in der folgenden Abbildung.

Um sicherzustellen, dass Server 1 hinter dem NAT für IPSec-Netzwerkverkehr erreichbar ist, müssen Sie das NAT-Gerät mit statischen Einträgen in der Zuordnungstabelle konfigurieren. Diese müssen Netzwerkverkehr über IKE (UDP-Port 500) und IPSec NAT-T (UDP-Port 4500) zu Server 1 zuordnen.
In einer solchen Konfiguration können folgende drei Situationen auftreten:
1. | Klicken Sie auf Start und Ausführen. Geben Sie regedit.exe ein und klicken Sie auf OK. | ||||||
2. | Wechseln Sie zum Registrierungsschlüssel. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSEC | ||||||
3. | Klicken Sie im Menü Bearbeiten auf NEU\DWORD-Wert. Geben Sie einen der folgenden Werte für den Registrierungswert ein:
|
Anmerkung: Beim Einrichten des Wertes AssumeUDPEncapsulationContextOnSendRule ist es wichtig, dass Sie die Groß- und Kleinschreibung berücksichtigen – er muss genau so wie hier gezeigt benannt werden. |
Damit die Einstellung umgesetzt wird, müssen Sie Windows XP neu starten. Wenn Sie den Wert auf 1 oder 2 setzen, kann ein Computer unter Windows XP SP2 eine Verbindung zu einem Server hinter einem NAT aufbauen – dies bezieht VPN-Server unter Windows Server 2003 mit ein.
NATs sind eine Notlösung, um die Lebensdauer des öffentlichen IPv4-Adressraums zu verlängern. Es ist keine Lösung für das Platzproblem des IPv4-Adressraums an sich. Der beste Einsatzbereich für NAT ist die Verwendung von privaten Adressbereichen. Die meisten Server benötigen jedoch weiterhin eindeutige öffentliche Adressen. Die Peers einer Peer-to-Peer-Kommunikation können sich hinter einem NAT befinden. Wenn sich jedoch mehrere Peers hinter dem gleichen NAT befinden oder wenn die Peers durch mehr als ein NAT getrennt sind, müssen die Peer-to-Peer-Anwendungen entsprechend verändert werden. Ein Server kann hinter einem NAT platziert werden. Es muss jedoch manuell ein statischer Eintrag in der Zuordnungstabelle erstellt werden. Im Bezug auf IPSec NAT-T kann dieser statische Eintrag unter bestimmten Szenarien zu Problemen führen.
Weitere Informationen zu NATs und Windows finden Sie unter:
| • | Configuring Access to Services Behind a Network Address Translator (NAT) (englischsprachig) |
| • | IPSec NAT Traversal Overview (englischsprachig) |
| • | Windows 2000 Network Address Translator (NAT) (englischsprachig) |
| • | IPSec NAT-T is not recommended for Windows Server 2003 computers that are behind network address translators (englischsprachig). |
| • | The default behavior of IPSec NAT traversal (NAT-T) is changed in Windows XP Service Pack 2 (englischsprachig). |
| • | |
| • |