Das FreeBSD-Handbuch
Zurück | Kapitel 31. Weiterführende Netzwerkthemen | Weiter

# 31.9. NAT - Network Address Translation

Beigetragen von Chern Lee.

## 31.9.1. Überblick

natd(8), der Network-Address-Translation-Daemon von FreeBSD, akzeptiert ankommende Raw-IP-Pakete, ändert den Sender der Daten in den eigenen Rechner und leitet diese Pakete in den ausgehenden IP-Paketstrom um, indem IP-Adresse und Port des Senders so geändert werden, dass bei einer Antwort der ursprüngliche Sender wieder bestimmt und die Daten an ihn weitergeleitet werden können.

Der häufigste Grund für die Verwendung von NAT ist die gemeinsame Nutzung einer Internetverbindung.

## 31.9.2. Einrichtung

Wegen der begrenzten Verfügbarkeit von IPv4-Adressen und der gestiegenen Anzahl von Breitbandverbindungen über Kabelmodem oder DSL, wird die gemeinsame Nutzung von Internetverbindungen immer wichtiger. Der natd(8)-Daemon ermöglicht die Anbindung von mehreren Rechnern an das Internet unter Nutzung einer gemeinsamen Verbindung und einer IP-Adresse.

Häufig soll ein über Kabelmodem oder DSL und eine IP-Adresse an das Internet angebundener Rechner mehreren Rechnern eines lokalen Netzwerks Internetdienste anbieten.

Um dies zu ermöglichen, muss der FreeBSD-Rechner als Gateway fungieren. Dazu sind zwei Netzkarten notwendig. Eine für die Verbindung zum Internet, die zweite für die Verbindung mit dem lokalen Netzwerk. Sämtliche Rechner des lokalen Netzwerks sind über einen Hub oder einen Switch miteinander verbunden.

> Anmerkung: Es gibt verschiedene Möglichkeiten, ein LAN über ein FreeBSD-Gateway an das Internet anzubinden. Das folgende Beispiel beschreibt ein Gateway, das zumindest zwei Netzwerkkarten enthält.

Eine derartige Netzwerkkonfiguration wird vor allem zur gemeinsamen Nutzung einer Internetverbindung verwendet. Ein Rechner des lokalen Netzwerks (LAN) ist mit dem Internet verbunden. Alle anderen Rechner des lokalen Netzwerks haben nur über diesen “Gateway”-Rechner Zugriff auf das Internet.

## 31.9.3. Boot Loader Konfiguration

Die Kerneleigenschaften für Network Address Translation mit natd(8) sind im `GENERIC`-Kernel nicht aktiviert, können aber bereits zur Bootzeit geladen werden, indem ein paar Zeilen in die Datei `/boot/loader.conf` hinzugefügt werden:

    ipfw_load="YES"
    ipdivert_load="YES"

Zusätzlich kann die Option `net.inet.ip.fw.default_to_accept` auf `1` gesetzt werden:

    net.inet.ip.fw.default_to_accept="1"

> Anmerkung: Es ist eine gute Idee, diese Option während den ersten Versuchen, eine Firewall und ein NAT-Gateway aufzusetzen, zu aktivieren. Damit ist die Standardvorgehensweise von ipfw(8) diejenige, `allow ip from any to any`, anstatt der weniger freizügigen `deny ip from any to any`. Es wird dadurch etwas schwieriger, sich aus Versehen nach einem Neustart aus dem System auszusperren.

## 31.9.4. Kernelkonfiguration

Wenn Module nicht in Frage kommen oder Sie bevorzugen, alle notwendigen Eigenschaften in den laufenden Kernel einzubauen, müssen die folgenden Optionen in die Kernelkonfigurationsdatei eingetragen werden:

    options IPFIREWALL
    options IPDIVERT

Die folgende Optionen können ebenfalls eingetragen werden:

    options IPFIREWALL_DEFAULT_TO_ACCEPT
    options IPFIREWALL_VERBOSE

## 31.9.5. System Bootkonfiguration

Um Firewall- und NAT-Unterstützung zur Bootzeit zu aktivieren, tragen Sie Folgendes in `/etc/rc.conf` ein:

    gateway_enable="YES"
    firewall_enable="YES"
    firewall_type="OPEN"
    natd_enable="YES"
    natd_interface="fxp0"
    natd_flags=""

  Richtet den Rechner als Gateway ein. Die Ausführung von `sysctl net.inet.ip.forwarding=1` hätte den gleichen Effekt.
  Aktiviert die Firewallregeln in `/etc/rc.firewall` beim Systemstart.
  Ein vordefinierter Satz von Firewallregeln, der alle Pakete durchlässt. Sehen Sie sich `/etc/rc.firewall` an, wenn Sie diese Option verwenden wollen.
  Die Netzkarte, die Pakete weiterleitet (und mit dem Internet verbunden ist).
  Zusätzliche Konfigurationsoptionen, die beim Systemstart an natd(8) übergeben werden.

Durch die Definition dieser Optionen in `/etc/rc.conf` wird die Anweisung `natd -interface fxp0` beim Systemstart ausgeführt. Dies kann aber auch manuell erfolgen.

> Anmerkung: Falls Sie viele Optionen an natd(8) übergeben müssen, können Sie auch eine Konfigurationsdatei verwenden. Dazu fügen Sie folgende Zeile in `/etc/rc.conf` ein:

>     natd_flags="-f /etc/natd.conf"

> Die Datei `/etc/natd.conf` enthält verschiedene Konfigurationsoptionen, wobei jede Option in einer Zeile steht. Das Beispiel im nächsten Abschnitt würde folgende Konfigurationsdatei verwenden:

>     redirect_port tcp 192.168.0.2:6667 6667
>     redirect_port tcp 192.168.0.3:80 80

> Wenn Sie eine Konfigurationsdatei verwenden wollen, sollten Sie sich die Handbuchseite zu natd(8) durchlesen, insbesondere den Abschnitt über die Nutzung der Option `-f`.

Jedem Rechner und jeder Schnittstelle des lokalen Netzwerks sollte eine IP-Adresse des im RFC 1918 definierten privaten Adressraums zugewiesen werden. Der Standardgateway entspricht der internen IP-Adresse des natd-Rechners.

Im Beispiel werden den LAN-Clients `A` und `B` die IP-Adressen `192.168.0.2` und `192.168.0.3` zugewiesen, während die LAN-Netzkarte des natd-Rechners die IP-Adresse `192.168.0.1` erhält. Der natd-Rechner mit der IP-Adresse `192.168.0.1` wird als Standardgateway für die Clients `A` und `B` gesetzt. Die externe Netzkarte des natd-Rechners muss für die korrekte Funktion von natd(8) nicht konfiguriert werden.

## 31.9.6. Ports umleiten

Wenn Sie natd(8) verwenden, sind Ihre LAN-Clients von aussen nicht erreichbar. LAN-Clients können zwar Verbindungen nach aussen aufbauen, sind aber für ankommende Verbindungen nicht erreichbar. Wenn Sie Internetdienste auf einem LAN-Client anbieten wollen, haben Sie daher ein Problem. Eine einfache Lösung ist die Umleitung von bestimmten Internetports des natd-Rechners auf einen LAN-Client.

Beispielsweise könnte ein IRC-Server auf Client `A` und ein Webserver auf Client `B` laufen. Damit diese Konfiguration funktioniert, müssen Verbindungen, die auf den Ports 6667 (IRC) und 80 (Web) ankommen, auf die entsprechenden Clients umgeleitet werden.

Dazu wird die Option `-redirect_port` unter Nutzung folgender Syntax an natd(8) übergeben:

         -redirect_port proto targetIP:targetPORT[-targetPORT]
                     [aliasIP:]aliasPORT[-aliasPORT]
                     [remoteIP[:remotePORT[-remotePORT]]]

Für unser Beispiel heißt das:

        -redirect_port tcp 192.168.0.2:6667 6667
        -redirect_port tcp 192.168.0.3:80 80

Dadurch werden die entsprechenden tcp-Ports auf die jeweiligen LAN-Clients umgeleitet.

Mit `-redirect_port` können auch ganze Portbereiche statt einzelner Ports umgeleitet werden. So werden mit `tcp 192.168.0.2:2000-3000 2000-3000` alle Verbindungen, die auf den Ports 2000 bis 3000 ankommen, auf die entsprechenden Ports des Clients `A` umgeleitet.

Diese Optionen können während des Betriebs von natd(8) oder über die Option `natd_flags=""` in `/etc/rc.conf` gesetzt werden.

Eine ausführliche Konfigurationsanleitung finden Sie in natd(8).

## 31.9.7. Adressen umleiten

Die Umleitung von Adressen ist nützlich, wenn mehrere IP-Adressen verfügbar sind, die aber alle auf einem Rechner verbleiben sollen. In diesem Fall kann natd(8) jedem LAN-Client eine eigene externe IP-Adresse zuweisen. Ausgehende Pakete eines LAN-Clients werden so der entsprechenden externen IP-Adresse des Clients zugeordnet. Ankommender Verkehr für diese IP-Adresse wird automatisch an den entsprechenden LAN-Client weitergeleitet. Diesen Vorgang bezeichnet man auch als statisches NAT. Dem natd-Gatewayrechner könnten beispielsweise die IP-Adressen `128.1.1.1`, `128.1.1.2` sowie `128.1.1.3` zugewiesen werden. `128.1.1.1` wird als die externe IP-Adresse des natd-Gatewayrechners verwendet, während `128.1.1.2` und `128.1.1.3` an die LAN-Clients `A` und `B` weitergegeben werden.

`-redirect_address` benutzt folgende Syntax:

    -redirect_address localIP publicIP

localIP | Die interne IP-Adresse des LAN-Clients
publicIP | Die externe IP-Adresse des LAN-Clients

Für unser Beispiel hieße dies:

    -redirect_address 192.168.0.2 128.1.1.2
    -redirect_address 192.168.0.3 128.1.1.3

Analog zur Option `-redirect_port` können Sie diese Argumente auch in der Option `natd_flags=""` in `/etc/rc.conf` angeben. Bei der Nutzung der Adressumleitung ist die Portumleitung überflüssig, weil alle für eine bestimmte IP-Adresse ankommenden Daten umgeleitet werden.

Die externe IP-Adresse des natd-Rechners muss aktiv sein und der externen Netzkarte zugewiesen sein. Weitere Informationen zu diesem Thema finden Sie in rc.conf(5).

Zurück | Zum Anfang | Weiter
ISDN - diensteintegrierendes digitales Netzwerk | Nach oben | PLIP - Parallel Line IP

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.