Date: Sat, 28 Dec 2019 22:50:27 +0000 (UTC) From: Bjoern Heidotting <bhd@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r53713 - head/de_DE.ISO8859-1/books/handbook/firewalls Message-ID: <201912282250.xBSMoRmt095558@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912282250.xBSMoRmt095558>