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.
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 Netzwerkkarten 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.
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.
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:
Zusätzlich kann die Option
net.inet.ip.fw.default_to_accept
auf
1
gesetzt werden:
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.
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:
Die folgende Optionen können ebenfalls eingetragen werden:
Um Firewall- und NAT-Unterstützung zur Bootzeit zu aktivieren,
tragen Sie Folgendes in /etc/rc.conf
ein:
fxp0
" Richtet den Rechner als Gateway ein. Die
Ausführung von
| |
Aktiviert die Firewallregeln in
| |
Ein vordefinierter Satz von Firewallregeln, der alle
Pakete durchlässt. Sehen Sie sich
| |
Die Netzwerkkarte, 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.
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:
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:
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-Netzwerkkarte 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 Netzwerkkarte des
natd-Rechners muss für die
korrekte Funktion von natd(8) nicht konfiguriert
werden.
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:
Für unser Beispiel heißt das:
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).
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:
localIP | Die interne IP-Adresse des LAN-Clients |
publicIP | Die externe IP-Adresse des LAN-Clients |
Für unser Beispiel hieße dies:
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 Netzwerkkarte zugewiesen sein. Weitere Informationen zu diesem Thema finden Sie in rc.conf(5).
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>.