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-all mailing list