Network Address Translation (NAT)

netplanet Werbung

Mitte der neunziger Jahre des 20. Jahrhunderts begann der große Internet-Boom und damit auch ein rasant gestiegener Bedarf an Internet-Zugängen und Webserver. Da jede Ressource im Internet eine eigene IP-Adresse haben muss, prognostizierten Fachleute einen enormen zukünftigen Verbrauch an IP-Adressen, der dazu führen würde, dass der gesamte IP-Adressraum bereits in wenigen Jahren komplett aufgebraucht sein könnte. Die Idee der Network Address Translation sollte dem entgegenwirken - und das tat es auch erfolgreich.

Was ist NAT?

Möchte man mehrere Rechner über einen einzelnen Internet-Zugang in das Internet zugreifen lassen, taucht früher oder später die Frage auf, mit welchen IP-Adressen diese Rechner ausgestattet werden sollen, da jeder Rechner im Internet eine IP-Adresse besitzen muss. Wenn also ein Unternehmen seine 200 Arbeitsplatzrechner mit Internet-Zugängen ausstatten möchte, wären hierfür mindestens 200 IP-Adressen notwendig.

Anfang der achtziger Jahre des 20. Jahrhunderts war dieser hohe Bedarf an IP-Adressen noch nicht vorstellbar. Universitäten und Institutionen, die am Internet angeschlossen waren, hatten meist nur wenige Großrechner am Netz, an denen die Anwender mit direkten Terminalverbindungen arbeiteten und deshalb nur jeweils die Großrechner eine IP-Adresse haben mussten.

Etwa zehn Jahre später, in den Anfängen des Internet-Booms, machten sich die ersten Experten Gedanken darüber, wie die bereits zu dem Zeitpunkt stark gestiegene Nachfrage nach IP-Adressen in der Zukunft aussehen würde. Selbst nach optimistischen Hochrechnungen würde der gesamte IP-Adressraum in der damaligen Entwicklung in wenigen Jahren aufgebraucht sein.

Die Idee, die einige Experten unabhängig voneinander hatten, wurde im Mai 1994 von Kjeld Borch Egevang und Paul Francis im RFC 1631 in einer Technik namens Network Address Translator niedergeschrieben. Dieser Adressübersetzer sollte als zusätzliches Modul in einem Internet-Router integriert werden. Im Gegensatz zu einem lokalen Netz, das hinter einem normalen Router an das Internet angebunden wird, kann ein Netz, das hinter einem NAT-fähigen Router steht, mit einem beliebigen IP-Adressbereich konfiguriert sein, da mit NAT eine strikte Trennung zwischen dem Internet und dem lokalen Netzwerk erfolgt.

Initiiert ein Rechner im lokalen Netzwerk eine Verbindung zu einem Rechner im Internet, so werden die Datenpakete mit der Anfrage zunächst zum Router des Netzwerks übertragen. Dieser Router nimmt die Adressübersetzung der Absenderadresse vor, tauscht also die Adresse des internen Rechners mit der des Internet-Zugangs aus und überträgt dann die Anfrage in das Internet. Der Router stellt sich also gegenüber dem Internet als Absender der Anfrage dar. Gleichzeitig wird die Initiierung dieses Netzwerkverkehrs dynamisch in einer NAT-Übersetzungstabelle im Router gespeichert, um die Antwort aus dem Internet verarbeiten zu können. Trifft die Antwort ein, wird anhand des Tabelleneintrags der ursprüngliche Initiator ermittelt und nun die Empfängeradresse der Datenpakete mit der IP-Adresse des lokalen Rechners ausgetauscht. Der lokale Rechner erhält nun vom Router die Datenpakete und dieser kann sie dann verarbeiten.

NAT ist vor allem für Szenarien gedacht, in denen ein einzelner Internet-Zugang, dem nur eine einzelne IP-Adresse zur Verfügung gestellt wird, mit mehreren Rechnern gleichzeitig genutzt werden soll, die in einem privaten Netzwerk zusammengeschaltet sind. Dazu ist NAT in einen Router implementiert, der den Datenaustausch zwischen zwei Netzwerken regelt.

Private IP-Adressen für private Netzwerke

Ein Problem ergab sich bei der Verwendung von IP-Adressen für ein internes, durch NAT vom Internet getrennten Netzwerks: Welche IP-Adressen sollte man für so ein Netzwerk verwenden?

Anfänglich wurde dieses Problem quasi nach dem Lotterieprinzip gelöst: Der Administrator des betroffenen Netzwerks wählte einfach einen IP-Adressraum nach Gusto aus. Dies funktionierte für einen Großteil des Internets dann auch einwandfrei, erzeugte unter Umständen jedoch ein kleines Problem: Was tun, wenn jemand aus diesem lokalen Netzwerk einen Rechner im Internet erreichen muss, der im Internet eine IP-Adresse besitzt, die im lokalen Netzwerk ebenfalls verwendet wird? Sie ahnen es, dieser Rechner konnte so niemals erreicht werden, da die lokalen Netzwerkeinstellungen vorgaben, dass sich die die gesuchte IP-Adresse angeblich im lokalen Netzwerk befinden musste. Solche Anfragen an einen Rechner im Internet verlassen niemals den Router nach außen.

Im später veröffentlichten RFC 1918 wurden für diesen Zweck so genannte "private IP-Adressen" eingeführt, die genau diesen Umstand beheben sollten. Private IP-Adressen sind spezielle Adressbereiche im normalen IP-Adressraum (siehe hierzu auch: IP-Subnetting), die speziell für die Nutzung in lokalen Netzwerken vorgesehen sind und im öffentlichen Internet nicht vergeben und verwendet werden und von den allermeisten Routern auch nicht in Richtung des Internet geroutet werden.

Ein solcher reservierter Adressbereich, der sehr häufig für lokale Netzwerke verwendet wird, liegt zwischen 192.168.0.0 und 192.168.255.255. Ein Netzwerkadministrator kann nun beispielsweise mit der Subnetzmaske 255.255.255.0, dies würde einem Netz mit 256 IP-Adressen entsprechen, gefahrlos einen Adressbereich von 192.168.0.0 bis 192.168.0.255 definieren. Wird in diesem Netzwerk dann ein Internet-Router mit NAT konfiguriert, übernimmt dieser die Kommunikation nach außen für alle IP-Adressen, die sich nicht innerhalb von 192.168.0.0 und 192.168.0.255 befinden.

Internet-Dienste mit NAT und PAT nach außen anbieten

Konzeptionell funktioniert NAT hervorragend für Datenübertragungen, die vom lokalen Netzwerk initiiert und in der dynamischen NAT-Übersetzungstabelle im Router verwaltet werden. Wie kann man jedoch einen Dienst, der auf einem Rechner im lokalen Netzwerk läuft, im Internet zur Verfügung stellen, so dass Verbindungen vom Internet aus initiiert werden können? Ein Beispiel hierfür wäre ein Mailserver, der vom Internet aus erreichbar sein muss, damit E-Mails empfangen werden können.

Für diese Zwecke gibt es neben der dynamischen NAT-Übersetzungstabelle noch eine statische Port-Übersetzungstabelle, das Verfahren nennt sich hier Port Adress Translation (PAT). In dieser Tabelle können statische Port-Umleitungen eingetragen werden. In so einer Umleitung kann ein bestimmter Port auf dem Router freigeschaltet und auf einen Rechner im lokalen Netzwerk umgeleitet werden.

Wird beispielsweise der TCP-Port 25 (der Standard-Port für SMTP) auf einem NAT-Router von außen geöffnet und die eingehende Kommunikation zu einem lokalen Mailserver im Netzwerk umgeleitet, antwortet, wenn jemand die öffentliche IP-Adresse über den TCP-Port 25 anspricht, der lokale Mailserver. Für einen Außenstehenden ist diese interne Umleitung nicht ohne weiteres ersichtlich.

PAT ist zwar eine gute Möglichkeit, um interne Internet-Dienste nach außen zu öffnen, hat aber auf diese Weise auch ein paar Nachteile. Wird so eine Port-Umleitung eingetragen, fällt die gesamte Kommunikation an den jeweiligen Port beim Zielserver im lokalen Netzwerk an, was möglicherweise sicherheitsrelevante Aspekte in einem Netzwerk haben kann. Zudem hat PAT die konzeptionelle Schwäche, dass von der öffentlichen IP-Adresse auf einem Internet-Router ein umgeleiteter Port natürlich immer nur an einen internen Rechner weiterleiten kann. Will man hier einen Port an mehrere Server verteilen, muss dies im lokalen Netzwerk zusätzlich organisiert werden.

Die Nutzung von NAT in einem Beispiel

Gegeben sei ein lokales Netzwerk, bestehend aus drei Rechnern, die allesamt über einen Internet-Zugang auf das Internet zugreifen sollen. Dieser Internet-Zugang kann jedoch nur über eine öffentliche IP-Adresse verfügen, es muss also ein Router eingesetzt werden, der in der Lage ist, NAT einzusetzen.

Da mittelfristig nicht mehr als 250 Rechner in das lokale Netzwerk hinzukommen sollen, reserviert der Netzwerkadministrator für das lokale Netzwerk den IP-Adressbereich 192.168.0.0 bis 192.168.0.255, alle Geräte im lokalen Netzwerk verwenden also die Subnetzmaske 255.255.255.0. Der Router erhält für die Schnittstelle zum lokalen Netzwerk die IP-Adresse 192.168.0.1, die drei Rechner jeweils darauf folgende IP-Adressen 192.168.0.2, 192.168.0.3 und 192.168.0.4.

Möchte nun ein Benutzer mit seinem Rechner, der die IP-Adresse 192.168.0.3 besitzt, auf das Internet zugreifen, wird diese Anfrage vom Rechner an das Standard-Gateway im lokalen Netzwerk geleitet, also an den Router mit der IP-Adresse 192.168.0.1.

Der Router schreibt nun im Rahmen der NAT-Adressübersetzung die Datenpakete, die die Anfrage von 192.168.0.3 enthalten, um, bevor er sie ins Internet überträgt. Bei dieser Übersetzung entfernt er die interne IP-Adresse 192.168.0.3 und ersetzt sie durch die öffentliche IP-Adresse des Router. Gleichzeitig verwaltet der Router diese Verbindung in seiner internen NAT-Tabelle.

Anhand dieser NAT-Tabelle können Datenpakete, die aus dem Internet den Router erreichen, interpretiert werden. Können die ankommenden Datenpakete als Antwort auf eine abgesendete Anfrage interpretiert werden, nimmt der Router wiederum eine Adressübersetzung der betreffenden Datenpakete vor und ersetzt diesmal die Empfängeradresse; anstelle der öffentlichen IP-Adresse wird nun die interne IP-Adresse 192.168.0.3 eingefügt, die gemäß der NAT-Adressübersetzung als ursprüngliche Quelle geführt wird.

NAT in der Netzwerktechnik

Auch wenn NAT vom eigentlichen Sinne her eine Notlösung für einen immer kleiner werdenden IP-Adressraum darstellt, ist es inzwischen aus der Netzwerktechnik kaum mehr wegzudenken. Die meisten Firmennetzwerke und praktisch alle Heimnetzwerke setzen beim Einsatz eines Internet-Routers auf NAT, um lokale Netzwerke mit dem Internet zu verbinden. Praktisch alle Router für den Heimgebrauch haben NAT bereits von Hause aus an Bord und lassen teilweise auch gar keine Nutzung ohne NAT mehr zu (was im Heimnetzwerkbetrieb allerdings auch meist nicht erforderlich ist, da die meisten Provider mit ihren Internet-Zugängen nur eine IP-Adresse zur Verfügung stellen).

Dank immer leistungsfähiger gewordener Hardware ist NAT auch in großen Netzwerkumfeldern eine leistungsfähige Technologie. Obwohl durch die Verwaltung von Übertragungssitzungen teilweise sehr große Datenmengen verwaltet werden, kratzt dies bei modernen Routern kaum an deren Performance. Dass NAT also aktiv Netzwerkleistung ausbremst, entspricht nicht mehr den aktuellen Tatsachen.

Kann NAT eine Firewall ersetzen?

Diese Frage wird sehr häufig gestellt und in gewisser Hinsicht kann sie auch mit Einschränkungen bejaht werden. Tatsächlich ist ein Rechner in einem lokalen Netzwerk, die hinter einem Router mit NAT stehen, von außen nicht erreichbar, wenn auf dem NAT-Router kein Port von außen nach innen zu diesem Rechner durchgeleitet wird. Durch NAT ist deshalb von außen auch nur sehr schwer feststellbar, ob im lokalen Netzwerk des Router mehrere Rechner stehen und wie viele genau.

Diese pauschale Nichterreichbarkeit für Zugriffe von außen ist jedoch keine klassische Firewall-Funktionalität und sollte nicht überschätzt werden. Eine Firewall bietet auch einen adäquaten Schutz für Zugriffe von innen nach außen und besitzt, je nach Ausstattung, auch erweiterte Möglichkeiten für Reglementierungen bestimmter Datenströme (siehe hierzu auch: Firewalls - Sicherheit für Netzwerke), die NAT allein nicht bietet.

Vom Prinzip her kann man daher sagen, dass aus Sicherheitssicht NAT nur versteckt, während eine Firewall tatsächlich auch sichern kann.

Dieser Artikel ist Frank Wurst (1975 - 2004) gewidmet.

WERBUNG
Zum Beginn dieser Seite