svn commit: r53713 - head/de_DE.ISO8859-1/books/handbook/firewalls
Bjoern Heidotting
bhd at FreeBSD.org
Sat Dec 28 22:50:27 UTC 2019
Author: bhd
Date: Sat Dec 28 22:50:26 2019
New Revision: 53713
URL: https://svnweb.freebsd.org/changeset/doc/53713
Log:
Update to r53486:
Rewrite the NAT chapter to focus on in-kernel NAT, with
a small section about natd at the end.
Reviewed by: bcr
Differential Revision: https://reviews.freebsd.org/D22944
Modified:
head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml
Modified: head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml
==============================================================================
--- head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml Sat Dec 28 21:32:11 2019 (r53712)
+++ head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml Sat Dec 28 22:50:26 2019 (r53713)
@@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/firewalls/chapter.xml,v 1.53 2012/04/30 16:15:52 bcr Exp $
- basiert auf: r53425
+ basiert auf: r53486
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
@@ -2289,9 +2289,9 @@ $
$cmd 00999 deny log all from any to any</programlisting>
</sect2>
- <sect2 xml:id="network-natd">
+ <sect2 xml:id="in-kernel-nat">
<info>
- <title><acronym>NAT</acronym> Konfiguration</title>
+ <title>In-Kernel <acronym>NAT</acronym></title>
<authorgroup>
<author>
@@ -2302,6 +2302,16 @@ $
<contrib>Beigetragen von </contrib>
</author>
</authorgroup>
+
+ <authorgroup>
+ <author>
+ <personname>
+ <firstname>Dries</firstname>
+ <surname>Michiels</surname>
+ </personname>
+ <contrib>Aktualisiert von </contrib>
+ </author>
+ </authorgroup>
</info>
<indexterm>
@@ -2325,58 +2335,50 @@ $
mit dem internen Netzwerk. Jeder Rechner im internen Netzwerk
sollte eine <link
xlink:href="https://www.ietf.org/rfc/rfc1918.txt">RFC
- 1918</link> konforme Adresse zugewiesen bekommen. Zudem
- muss das Standard-Gateway der Rechner auf die interne
- <acronym>IP</acronym>-Adresse des &man.natd.8;-Systems
- gesetzt werden.</para>
+ 1918</link> konforme Adresse zugewiesen bekommen.</para>
<para>Es ist noch ein wenig Konfiguration nötig, um die
- <acronym>NAT</acronym>-Funktion von
- <application>IPFW</application> zu aktivieren. Wenn das
- System einen angepassten Kernel hat, muss die
- Kernelkonfigurationsdatei die Zeile
- <literal>option IPDIVERT</literal> sowie weitere
- <literal>IPFIREWALL</literal>-Optionen, die in <xref
- linkend="firewalls-ipfw-enable"/> beschrieben sind,
- enthalten.</para>
-
- <para>Um die <acronym>NAT</acronym>-Unterstützung beim Booten
- zu aktivieren, müssen folgende Einträge in
+ In-Kernel <acronym>NAT</acronym>-Funktion von
+ <application>IPFW</application> zu aktivieren. Um die
+ In-Kernel <acronym>NAT</acronym>-Unterstützung beim Booten zu
+ aktivieren, müssen folgende Einträge in
<filename>/etc/rc.conf</filename> vorhanden sein:</para>
- <programlisting>gateway_enable="YES" # enables the gateway
-natd_enable="YES" # enables <acronym>NAT</acronym>
-natd_interface="rl0" # specify interface name of NIC attached to Internet
-natd_flags="-dynamic -m" # -m = preserve port numbers; additional options are listed in &man.natd.8;</programlisting>
+ <programlisting>gateway_enable="YES"
+firewall_enable="YES"
+firewall_nat_enable="YES"</programlisting>
<note>
- <para>Es ist auch möglich eine Konfigurationsdatei zu
- verwenden, welche die Optionen enthält, die an
- &man.natd.8; übergeben werden:</para>
-
- <programlisting>natd_flags="-f /etc/natd.conf"</programlisting>
-
- <para>Die angegebene Datei muss die Konfigurationsoptionen
- enthalten, eine Option pro Zeile. Zum Beispiel:</para>
-
- <programlisting>redirect_port tcp 192.168.0.2:6667 6667
-redirect_port tcp 192.168.0.3:80 80</programlisting>
-
- <para>Weitere Informationen zu dieser Konfigurationsdatei
- finden Sie in &man.natd.8;.</para>
+ <para>Wenn <literal>firewall_enable</literal> nicht gesetzt
+ ist, <literal>firewall_nat_enable</literal> jedoch schon,
+ hat dies keine Auswirkung, da die
+ <acronym>NAT</acronym>-Implementierung im Kernel nur mit
+ <application>IPFW</application> kompatibel ist.</para>
</note>
- <para>Als nächstes werden die <acronym>NAT</acronym>-Regeln
- hinzugefügt. Wenn die Regeln zustandsorientiert sind, ist die
- Platzierung der <acronym>NAT</acronym>-Regeln sehr wichtig und
- die <literal>skipto</literal>-Aktion wird verwendet. Dies
- erfordert, dass jede Regel über eine eindeutige Nummer
- verfügt, um eindeutige Sprungziele zu erhalten.</para>
+ <para>Wenn der Regelsatz zustandsorientierte Regeln enthält, ist
+ die Position der <acronym>NAT</acronym>-Regel kritisch und die
+ <literal>skipto</literal>-Aktion wird benutzt. Die Aktion
+ <literal>skipto</literal> benötigt eine Regelnummer, damit
+ <application>IPFW</application> weiß, zu welcher Regel es
+ springen muss. Darüber hinaus ist es aufgrund der Architektur
+ von &man.libalias.3;, einer Bibliothek die als Kernelmodul
+ implementiert ist und für das In-Kernel <acronym>NAT</acronym>
+ von <application>IPFW</application> benutzt wird, notwendig,
+ <foreignphrase>TCP segmentation offloading</foreignphrase>
+ (<acronym>TSO</acronym>) zu deaktivieren.
+ <acronym>TSO</acronym> kann pro Netzwerkschnittstelle mit
+ &man.ifconfig.8;, oder systemweit mit &man.sysctl.8;
+ deaktiviert werden. Um <acronym>TSO</acronym> systemweit zu
+ deaktivieren, muss folgende Zeile in
+ <filename>/etc/sysctl.conf</filename> enthalten sein:</para>
- <para>Das folgende Beispiel baut auf dem im vorherigen Abschnitt
+ <programlisting>net.inet.tcp.tso="0"</programlisting>
+
+ <para>Das folgende Beispiel baut auf den im vorherigen Abschnitt
gezeigten Firewall-Relgelsatz auf. Es werden einige neue
Einträge hinzugefügt und bestehende Regeln modifiziert, um
- <acronym>NAT</acronym> zu konfigurieren. Zunächst werden
+ In-Kernel <acronym>NAT</acronym> zu konfigurieren. Zunächst werden
einige Variablen hinzugefügt, darunter Regelnummern, die
<literal>keep-state</literal>-Option und eine Liste mit
<acronym>TCP</acronym>-Ports um die Anzahl der Regeln zu
@@ -2385,24 +2387,74 @@ redirect_port tcp 192.168.0.3:80 80</programlisting>
<programlisting>#!/bin/sh
ipfw -q -f flush
cmd="ipfw -q add"
-skip="skipto 500"
+skip="skipto 1000"
pif=dc0
ks="keep-state"
good_tcpo="22,25,37,53,80,443,110"</programlisting>
+ <para>Danach wird eine <acronym>NAT</acronym>-Instanz
+ konfiguriert. Mit In-Kernel <acronym>NAT</acronym> ist es
+ möglich, mehrere <acronym>NAT</acronym>-Instanzen mit jeweils
+ eigener Konfiguration zu betreiben. In diesem Beispiel wird
+ jedoch nur eine <acronym>NAT</acronym>-Instanz mit der Nummer
+ 1 benötigt. Die Konfiguration nimmt ein paar Argumente und
+ Schalter an, zum Beispiel: <option>if</option>, dass die
+ öffentliche Netzwerkschnittstelle angibt,
+ <option>same_ports</option>, das dafür sorgt, dass Alias-Ports
+ und lokale Portnummern identisch zugeordnet werden,
+ <option>unreg_only</option> führt dazu, dass nur
+ unregistrierte (private) Adressräume von der
+ <acronym>NAT</acronym>-Instanz verarbeitet werden, und
+ <option>reset</option>, was dazu beiträgt, dass eine
+ <acronym>NAT</acronym>-Instanz auch dann erhalten bleibt,
+ wenn sich die öffentliche <acronym>IP</acronym>-Adresse des
+ Rechners ändert. Weitere mögliche Optionen, die an einzelne
+ <acronym>NAT</acronym>-Instanzen übergeben werden können,
+ finden Sie in &man.ipfw.8;. Darüber hinaus ist es aufgrund
+ der zustandsorientierten <acronym>NAT</acronym>-Firewall
+ notwendig, dass übersetzte Pakete zur weiteren Verarbeitung in
+ die Firewall eingespielt werden können, was durch die
+ Deaktivierung des <option>one_pass</option>-Verhaltens beim
+ Start des Firewall-Skripts erreicht werden kann.</para>
+
+ <programlisting>ipfw disable one_pass
+ipfw -q nat 1 config if $pif same_ports unreg_only reset</programlisting>
+
<para>Die <acronym>NAT</acronym>-Regel für eingehende Pakete
wird <emphasis>nach</emphasis> den beiden Regeln, die das
- interne Netzwerk und die Loopback-Schnittstelle erlauben und
- <emphasis>vor</emphasis> der
+ interne Netzwerk und die Loopback-Schnittstelle erlauben, und
+ nach der Reassamble-Regel, aber <emphasis>vor</emphasis> der
<literal>check-state</literal>-Regel eingefügt. Es ist
wichtig, dass die Nummer der <acronym>NAT</acronym>-Regel
(in diesem Beispiel <literal>100</literal>) höher ist, als
- die beiden vorherigen Regeln und niedriger, als die
- <literal>check-state</literal>-Regel:</para>
+ die drei vorherigen Regeln und niedriger, als die
+ <literal>check-state</literal>-Regel. Darüber hinaus wird
+ aufgrund des Verhaltens von In-Kernel <acronym>NAT</acronym>
+ empfohlen, eine Reassamble-Regel kurz vor der ersten
+ <acronym>NAT</acronym>-Regel, aber hinter den Regeln zu
+ platzieren, die den Datenverkehr auf einer vertrauenswürdigen
+ Schnittstelle erlauben.</para>
+ <note>
+ <para>Die Reassamble-Regel wird beim Userland &man.natd.8;
+ nicht benötigt, da die Aktion <literal>divert</literal> von
+ <application>IPFW</application> dies bereits automatisch
+ übernimmt. Dies ist auch in &man.ipfw.8;
+ dokumentiert.</para>
+
+ <para>Beachten Sie, dass die aktuelle
+ <acronym>NAT</acronym>-Instanznummer und
+ <acronym>NAT</acronym>-Regelnummer nicht mit der
+ voreingestellten <acronym>NAT</acronym>-Instanznummer
+ und Regelnummer übereinstimmt, wenn sie mit dem
+ <filename>rc.firewall</filename>-Skript von &os; erstellt
+ wurde.</para>
+ </note>
+
<programlisting>$cmd 005 allow all from any to any via xl0 # exclude LAN traffic
$cmd 010 allow all from any to any via lo0 # exclude loopback traffic
-$cmd 100 divert natd ip from any to any in via $pif # NAT any inbound packets
+$cmd 099 reass all from any to any in # reassamble inbound packets
+$cmd 100 nat 1 ip from any to any in via $pif # NAT any inbound packets
# Allow the packet through if it has an existing entry in the dynamic rules table
$cmd 101 check-state</programlisting>
@@ -2410,12 +2462,18 @@ good_tcpo="22,25,37,53,80,443,110"</programlisting>
modifiziert, um Aktionen mit der
<literal>$skipto</literal>-Variable zu erlauben und
anzuzeigen, dass die Prüfung mit der Regel
- <literal>500</literal> fortgesetzt wird. Die sieben Regeln
+ <literal>1000</literal> fortgesetzt wird. Die sieben Regeln
für <acronym>TCP</acronym> wurden durch die Regel
<literal>125</literal> ersetzt, da die sieben erlaubten
ausgehenden Ports in der Variable
<literal>$good_tcp0</literal> enthalten sind.</para>
+ <note>
+ <para>Beachten Sie, dass die Leistung von
+ <application>IPFW</application> weitgehend von der Anzahl
+ der im Regelsatz vorhandenen Regeln bestimmt wird.</para>
+ </note>
+
<programlisting># Authorized outbound packets
$cmd 120 $skip udp from any to x.x.x.x 53 out via $pif $ks
$cmd 121 $skip udp from any to x.x.x.x 67 out via $pif $ks
@@ -2431,19 +2489,19 @@ good_tcpo="22,25,37,53,80,443,110"</programlisting>
Regel haben und die Nummer muss über die
<literal>skipto</literal>-Aktion referenziert werden. In
diesem Regelsatz leitet die Regel mit der Nummer
- <literal>500</literal> alle ausgehenden Pakete zur
- Weiterverarbeitung an &man.natd.8; weiter. Die darauf
+ <literal>1000</literal> alle ausgehenden Pakete zur
+ konfigurierten <acronym>NAT</acronym>-Instanz weiter. Die darauf
folgende Regel lässt alle von <acronym>NAT</acronym>
verarbeiteten Pakete passieren.</para>
- <programlisting>$cmd 499 deny log all from any to any
-$cmd 500 divert natd ip from any to any out via $pif # skipto location for outbound stateful rules
-$cmd 510 allow ip from any to any</programlisting>
+ <programlisting>$cmd 999 deny log all from any to any
+$cmd 1000 nat 1 ip from any to any out via $pif # skipto location for outbound stateful rules
+$cmd 1001 allow ip from any to any</programlisting>
<para>In diesem Beispiel steuern die Regeln
<literal>100</literal>, <literal>101</literal>,
- <literal>125</literal>, <literal>500</literal> und
- <literal>510</literal> die Adressübersetzung der ein- und
+ <literal>125</literal>, <literal>1000</literal> und
+ <literal>1001</literal> die Adressübersetzung der ein- und
ausgehende Pakete, so dass immer die private
<acronym>LAN</acronym> <acronym>IP</acronym>-Adresse in der
dynamische Zustandstabelle registriert werden.</para>
@@ -2463,7 +2521,7 @@ good_tcpo="22,25,37,53,80,443,110"</programlisting>
Regel zutreffen, werden zwei Aktionen ausgeführt. Zuerst
wird durch die Aktion <literal>keep-state</literal> ein
dynamischer Eintrag in der Statustabelle erstellt und die
- angegebene Aktion <literal>skipto 500</literal> ausgeführt.
+ angegebene Aktion <literal>skipto 1000</literal> ausgeführt.
Als nächstes durchläuft das Paket <acronym>NAT</acronym> und
wird dann an das Internet gesendet. Nachdem dieses Paket am
Webserver angekommen ist, wird dort eine Antwort erzeugt und
@@ -2485,14 +2543,44 @@ good_tcpo="22,25,37,53,80,443,110"</programlisting>
<acronym>LAN</acronym> freigegeben. Das Antwortpaket wird
von der Regel <literal>check-state</literal> als Paket einer
aktiven Sitzung erkannt. Das Paket wird dann von Regel
- <literal>500</literal> per <acronym>NAT</acronym>
- verarbeitet, bevor es über die externe Schnittstelle versendet
- wird.</para>
+ <literal>1000</literal> per <acronym>NAT</acronym>
+ verarbeitet, bevor es über die externe Schnittstelle
+ verschickt wird.</para>
+ <note>
+ <para>Der Wechsel vom Userland &man.natd.8; zu In-Kernel
+ <acronym>NAT</acronym> mag zunächst nahtlos erscheinen, aber
+ es gibt einen kleinen Haken. Bei Verwendung des
+ <filename>GENERIC</filename>-Kernels wird
+ <application>IPFW</application> das Kernelmodul
+ <filename>libalias.ko</filename> laden, wenn
+ <literal>firewall_nat_enable</literal> in
+ <filename>rc.conf</filename> aktiviert ist. Das geladene
+ Kernelmodul stellt nur grundlegende
+ <acronym>NAT</acronym>-Funktionalität bereit, während
+ die Userland-Implementierung &man.natd.8; alle
+ Funktionalitäten ohne zusätzliche Konfiguration zur
+ Verfügung stellt. Die gesamte Funktionalität bezieht sich
+ auf die folgenden Kernelmodule, die bei Bedarf zusätzlich
+ zu <filename>libalias.ko</filename> geladen werden können:
+ <filename>alias_cuseeme.ko</filename>,
+ <filename>alias_ftp.ko</filename>,
+ <filename>alias_bbt.ko</filename>,
+ <filename>skinny.ko</filename>, <filename>irc.ko</filename>,
+ <filename>alias_pptp.ko</filename> und
+ <filename>alias_smedia.ko</filename> unter Verwendung der
+ <literal>kld_list</literal> Direktive in
+ <filename>rc.conf</filename>, um die volle Funktionalität
+ der Userland-Implementierung zu erreichen. Wenn ein
+ angepasster Kernel benutzt wird, kann die volle
+ Funktionalität der Userland-Bibliothek im Kernel mit
+ <option>option LIBALIAS</option> gebaut werden.</para>
+ </note>
+
<sect3>
<title>Weiterleitung von Ports</title>
- <para>Der Nachteil von &man.natd.8; ist, dass die Rechner im
+ <para>Der Nachteil von <acronym>NAT</acronym> ist, dass die Rechner im
<acronym>LAN</acronym> nicht aus dem Internet zugänglich
sind. Diese Rechner können zwar ausgehende Verbindungen
zur Außenwelt aufbauen, jedoch keine eingehenden
@@ -2501,7 +2589,7 @@ good_tcpo="22,25,37,53,80,443,110"</programlisting>
anbieten möchten, die aus dem Internet erreichbar sein
sollen. In diesem Fall können Sie die Ports, welche über
das Internet erreichbar sein sollen, über die
- &man.natd.8;-Maschine an den Rechner im
+ <acronym>NAT</acronym>-Maschine an den Rechner im
<acronym>LAN</acronym> weiterleiten.</para>
<para>Angenommen es gibt einen <acronym>IRC</acronym>-Server
@@ -2511,39 +2599,42 @@ good_tcpo="22,25,37,53,80,443,110"</programlisting>
(<acronym>IRC</acronym>) und 80 (<acronym>HTTP</acronym>)
an die jeweiligen Rechner weitergeleitet werden.</para>
- <para>Die Syntax für <option>-redirect_port</option>
- lautet:</para>
+ <para>Bei In-Kernel <acronym>NAT</acronym> wird die gesamte
+ Konfiguration in der <acronym>NAT</acronym>-Instanz selbst
+ vorgenommen. Alle Optionen, die in einer
+ <acronym>NAT</acronym>-Instanz benutzt werden können, sind
+ in &man.ipfw.8; dokumentiert. Die Syntax für
+ <application>IPFW</application> folgt dabei der von
+ <application>natd</application>. Die Syntax für
+ <option>-redirect_port</option> lautet:</para>
- <programlisting>-redirect_port proto targetIP:targetPORT[-targetPORT]
- [aliasIP:]aliasPORT[-aliasPORT]
- [remoteIP[:remotePORT[-remotePORT]]]</programlisting>
+ <programlisting>redirect_port proto targetIP:targetPORT[-targetPORT]
+ [aliasIP:]aliasPORT[-aliasPORT]
+ [remoteIP[:remotePORT[-remotePORT]]]</programlisting>
<para>Für das obige Beispiel sollten die Argumente wie folgt
aussehen:</para>
- <programlisting>-redirect_port tcp 192.168.0.2:6667 6667
--redirect_port tcp 192.168.0.3:80 80</programlisting>
+ <programlisting>redirect_port tcp 192.168.0.2:6667 6667
+redirect_port tcp 192.168.0.3:80 80</programlisting>
- <para>Damit werden die entsprechenden
- <acronym>TCP</acronym>-Ports an die Rechner im
- <acronym>LAN</acronym> weitergeleitet.</para>
+ <para>Nachdem diese Argumente der Konfiguration der
+ <acronym>NAT</acronym>-Instanz 1 im obigen Regelsatz
+ hinzugefügt wurden, werden die <acronym>TCP</acronym>-Ports
+ an die Rechner im <acronym>LAN</acronym> weitergeleitet, auf
+ denen <acronym>IRC</acronym>- und
+ <acronym>HTTP</acronym>-Dienste laufen.</para>
- <para>Portbereiche können über <option>-redirect_port</option>
+ <programlisting>ipfw -q nat 1 config if $pif same_ports unreg_only reset \
+ redirect_port tcp 192.168.0.2:6667 6667 \
+ redirect_port tcp 192.1683.0.3:80 80</programlisting>
+
+ <para>Portbereiche können über <option>redirect_port</option>
festgelegt werden. Zum Beispiel würde
<replaceable>tcp 192.168.0.2:2000-3000
2000-3000</replaceable> alle Verbindungen auf die Ports
2000 bis 3000 an die Ports 2000 bis 3000 an
Rechner <systemitem>A</systemitem> weiterleiten.</para>
-
- <para>Diese Optionen können über
- <literal>natd_flags=""</literal> in
- <filename>/etc/rc.conf</filename> direkt beim Start an
- &man.natd.8; übergeben werden. Alternativ können die
- Optionen in eine Konfigurationsdatei eingetragen
- werden.</para>
-
- <para>Weitere Konfigurationsmöglichkeiten sind in
- &man.natd.8; beschrieben.</para>
</sect3>
<sect3>
@@ -2552,9 +2643,9 @@ good_tcpo="22,25,37,53,80,443,110"</programlisting>
<para>Das Weiterleiten von Adressen ist nützlich, wenn
mehr als eine <acronym>IP</acronym>-Adresse zur Verfügung
steht. Jeder Rechner im <acronym>LAN</acronym> kann über
- &man.natd.8; seine eigene externe
+ &man.ipfw.8; seine eigene externe
<acronym>IP</acronym>-Adresse zugewiesen bekommen.
- &man.natd.8; wird dann den ausgehenden Datenverkehr der
+ <application>IPFW</application> wird dann den ausgehenden Datenverkehr der
Rechner aus dem <acronym>LAN</acronym> mit der
entsprechenden externen <acronym>IP</acronym>-Adresse
umschreiben. Auch der eingehenden Datenverkehr über die
@@ -2568,56 +2659,103 @@ good_tcpo="22,25,37,53,80,443,110"</programlisting>
<systemitem class="ipaddress">128.1.1.3</systemitem> zur
Verfügung stehen, kann <systemitem
class="ipaddress">128.1.1.1</systemitem> als externe
- Adresse der &man.natd.8;-Maschine verwendet werden, während
+ Adresse der &man.ipfw.8;-Maschine verwendet werden, während
<systemitem class="ipaddress">128.1.1.2</systemitem> und
<systemitem class="ipaddress">128.1.1.3</systemitem> an
Rechner <systemitem>A</systemitem> und
Rechner <systemitem>B</systemitem> im <acronym>LAN</acronym>
weitergeleitet werden.</para>
- <para>Die Syntax für <option>-redirect_address</option>
- lautet:</para>
+ <para>Die Syntax für <option>redirect_address</option>
+ lautet wie im Folgenden, wobei <literal>localIP</literal>
+ die interne <acronym>IP</acronym>-Adresse des Rechners im
+ <acronym>LAN</acronym>, und <literal>publicIP</literal> die
+ externe <acronym>IP</acronym>-Adresse ist, die dem Rechner
+ im <acronym>LAN</acronym> entspricht.</para>
- <programlisting>-redirect_address localIP publicIP</programlisting>
+ <programlisting>redirect_address localIP publicIP</programlisting>
- <informaltable frame="none" pgwide="1">
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>localIP</entry>
- <entry>Die interne <acronym>IP</acronym>-Adresse des
- Rechners im <acronym>LAN</acronym>.</entry>
- </row>
+ <para>Auf das Beispiel bezogen, würden die Argumente so
+ lauten:</para>
- <row>
- <entry>publicIP</entry>
- <entry>Die externe <acronym>IP</acronym>-Adresse für
- den entsprechenden Rechner im
- <acronym>LAN</acronym>.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
+ <programlisting>redirect_address 192.168.0.2 128.1.1.2
+redirect_address 192.168.0.3 128.1.1.3</programlisting>
- <para>Für das obige Beispiel sollten die Argumente wie
- folgt aussehen:</para>
+ <para>Genau wie bei <option>redirect_port</option>, werden
+ diese Argumente in der Konfiguration der
+ <acronym>NAT</acronym>-Instanz gesetzt. Bei der
+ Weiterleitung von Adressen ist keine Portumleitung
+ notwendig, da alle Daten, die auf einer bestimmten
+ <acronym>IP</acronym>-Adresse empfangen werden,
+ weitergeleitet werden.</para>
- <programlisting>-redirect_address 192.168.0.2 128.1.1.2
--redirect_address 192.168.0.3 128.1.1.3</programlisting>
-
- <para>Genau wie bei <option>-redirect_port</option>, werden
- diese Argumente innerhalb der
- <filename>/etc/rc.conf</filename>-Option
- <literal>natd_flags=""</literal> angegeben, oder alternativ
- über eine Konfigurationsdatei. Allerdings müssen beim
- Weiterleiten von Adressen keine Ports umgeleitet werden, da
- der gesamte eingehende Datenverkehr einer bestimmte
- <acronym>IP</acronym>-Adresse weitergeleitet wird.</para>
-
<para>Die externe <acronym>IP</acronym>-Adresse der
- &man.natd.8;-Maschine muss auf der externen Schnittstelle
+ &man.ipfw.8;-Maschine muss auf der externen Schnittstelle
aktiv und mit einem Alias versehen sein. Weitere
- Einzelheiten sind in &man.natd.8; beschrieben.</para>
+ Einzelheiten sind in &man.rc.conf.5;; beschrieben.</para>
+ </sect3>
+
+ <sect3>
+ <title>Userland <acronym>NAT</acronym></title>
+
+ <para>Zunächst sei gesagt, dass &man.natd.8;, die
+ Userland-Implementierung aufwändiger ist als In-Kernel
+ <acronym>NAT</acronym>. Damit &man.natd.8; Pakete
+ übersetzen kann, müssen die Pakete vom Kernel ins
+ Userland und zurück kopiert werden, was zusätzlichen Aufwand
+ mit sich bringt. Dieser Aufwand entfällt bei In-Kernel
+ <acronym>NAT</acronym>.</para>
+
+ <para>Um den Userland <acronym>NAT</acronym>-Daemon
+ &man.natd.8; beim Systemstart zu aktivieren, ist etwas
+ Konfiguration in <filename>/etc/rc.conf</filename> nötig.
+ <option>natd_interface</option> wird auf den Namen der mit
+ dem Internet verbundenen Schnittstelle gesetzt. Das
+ &man.rc.8;-Skript von &man.natd.8; wird selbstständig
+ prüfen, ob eine dynamische <acronym>IP</acronym>-Adresse
+ benutzt wird und sich selbst so konfigurieren, dass es damit
+ umgehen kann.</para>
+
+ <programlisting>gateway_enable="YES"
+natd_enable="YES"
+natd_interface="rl0"</programlisting>
+
+ <para>Generell kann der obige Regelsatz, wie er für In-Kernel
+ <acronym>NAT</acronym> erklärt wurde, auch zusammen mit
+ &man.natd.8; benutzt werden. Die einzigen Ausnahmen sind,
+ dass die Konfiguration der In-Kernel
+ <acronym>NAT</acronym>-Instanz
+ <literal>(ipfw -q nat 1 config ...)</literal> nicht
+ anwendbar ist und die Regeln müssen wie unten beschrieben
+ leicht geändert werden, und Regel 99 wird nicht mehr
+ benötigt, da die <option>divert</option>-Aktion sich um die
+ Fragmentierung kümmert.</para>
+
+ <programlisting>$cmd 100 divert natd ip from any to any in via $pif
+$cmd 1000 divert natd ip from any to any out via $pif</programlisting>
+
+ <para>Um eine Port- oder Adressumleitung zu konfigurieren,
+ wird eine ähnliche Syntax wie bei In-Kernel
+ <acronym>NAT</acronym> verwendet. Anstatt die Konfiguration
+ in unserem Regelsatz-Skript wie bei In-Kernel
+ <acronym>NAT</acronym> anzugeben, wird die Konfiguration von
+ &man.natd.8; am besten in einer Konfigurationsdatei
+ vorgenommen. Dazu muss eine zusätzliche Option in
+ <filename>/etc/rc.conf</filename> übergeben werden, welche
+ den Pfad zur Konfigurationsdatei angibt.</para>
+
+ <programlisting>natd_flags="-f /etc/natd.conf"</programlisting>
+
+ <note>
+ <para>Die Konfigurationsdatei muss eine Liste von Optionen
+ enthalten, eine pro Zeile. Weitere Informationen über die
+ Konfigurationsdatei und mögliche Variablen finden Sie in
+ &man.natd.8;. Hier zwei Beispieleinträge, einer pro
+ Zeile:</para>
+
+ <programlisting>redirect_port tcp 192.168.0.2:6667 6667
+redirect_address 192.168.0.3 128.1.1.3</programlisting>
+ </note>
</sect3>
</sect2>
More information about the svn-doc-head
mailing list