svn commit: r48900 - head/de_DE.ISO8859-1/books/handbook/firewalls

Bjoern Heidotting <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.doc
Message-ID <[email protected]>
Author: bhd
Date: Tue Jun  7 11:22:53 2016
New Revision: 48900
URL: https://svnweb.freebsd.org/changeset/doc/48900

Log:
  Update of the firewall chapter part 2/4 -> PF
  
  Reviewed by:	bcr
  Differential Revision:	https://reviews.freebsd.org/D6738

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	Sun Jun  5 15:47:50 2016	(r48899)
+++ head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml	Tue Jun  7 11:22:53 2016	(r48900)
@@ -293,306 +293,1384 @@
   </sect1>
 
   <sect1 xml:id="firewalls-pf">
-    <info><title>Paket Filter (PF) von OpenBSD und
-      <acronym>ALTQ</acronym></title>
+    <info>
+      <title>PF</title>
+
       <authorgroup>
-        <author><personname><firstname>John</firstname><surname>Ferrell</surname></personname><contrib>Revised and updated by </contrib></author>
+        <author>
+	  <personname>
+	    <firstname>John</firstname>
+	    <surname>Ferrell</surname>
+	  </personname>
+	  <contrib>Überarbeitet und aktualisiert von </contrib>
+	</author>
       </authorgroup>
     </info>
 
-    
-
     <indexterm>
       <primary>firewall</primary>
 
       <secondary>PF</secondary>
     </indexterm>
 
-    <para>Im Juli 2003 wurde <acronym>PF</acronym>, die
-      Standard-Firewall von OpenBSD, nach &os; portiert und in die
-      &os;-Ports-Sammlung aufgenommen.  2004 war <acronym>PF</acronym> in
-      &os;&nbsp;5.3 Teil des Basissystems.  Bei <acronym>PF</acronym>
-      handelt es sich um eine komplette, vollausgestattete Firewall,
-      die optional auch <acronym>ALTQ</acronym> (Alternatives
-      Queuing) unterstützt.  <acronym>ALTQ</acronym> bietet Ihnen
+    <para>In &os;&nbsp;5.3 wurde <application>PF</application> von
+      OpenBSD in das Basissystem integriert.  Bei
+      <application>PF</application> handelt es sich um eine komplette,
+      voll ausgestattete Firewall, die optional auch
+      <application>ALTQ</application> (Alternatives Queuing)
+      unterstützt.  <application>ALTQ</application> stellt
       <foreignphrase>Quality of Service</foreignphrase>
-      (<acronym>QoS</acronym>)-Bandbreitenformung.</para>
+      (<acronym>QoS</acronym>) zur Verfügung.</para>
 
-    <para>Das OpenBSD-Projekt leistet bereits hervorragende
-      Dokumentationsarbeit mit der <link xlink:href="http://www.openbsd.org/faq/pf/">PF FAQ</link>.  Aus diesem Grund
-      konzentriert sich dieser Handbuchabschnitt nur auf diejenigen
-      Besonderheiten von <acronym>PF</acronym>, die &os; betreffen, sowie ein
-      paar allgemeine Informationen hinsichtlich der Verwendung.  Genauere
-      Informationen zum Einsatz erhalten Sie in der <link xlink:href="http://www.openbsd.org/faq/pf/">PF FAQ</link>.</para>
-
-    <para>Weitere Informationen zu <acronym>PF</acronym> für &os; finden
-      Sie unter <uri xlink:href="http://pf4freebsd.love2party.net/">http://pf4freebsd.love2party.net/</uri>.</para>
+    <para>Das OpenBSD-Projekt pflegt die maßgebliche Referenz von
+      <application>PF</application> in der <link
+	xlink:href="http://www.openbsd.org/faq/pf">PF FAQ</link>.
+      Peter Hansteen betreut ein sehr ausführliches
+      <application>PF</application>-Tutorial unter <link
+	xlink:href="http://home.nuug.no/~peter/pf/">
+	http://home.nuug.no/~peter/pf/</link>.</para>
+
+    <warning>
+      <para>Bedenken Sie beim Studium der <link
+	xlink:href="http://www.openbsd.org/faq/pf/">PF FAQ</link>,
+	dass &os; die <application>PF</application>-Version aus
+	OpenBSD&nbsp;4.5 enthält.</para>
+    </warning>
+
+    <para>Die &a.pf; ist ein guter Anlaufpunkt für Fragen zur
+      Konfiguration und dem Einsatz der
+      <application>PF</application>-Firewall.  Überprüfen Sie
+      aber zunächst die Archive der Mailingliste, bevor Sie eine
+      Frage stellen.  Vielleicht wurde die Frage dort schon
+      beantwortet.</para>
+
+    <para>Weitere Informationen über die Portierung von
+      <application>PF</application> nach &os; finden Sie unter <link
+	xlink:href="http://pf4freebsd.love2party.net/">
+	http://pf4freebsd.love2party.net/</link>.</para>
+
+    <para>Dieser Abschnitt konzentriert sich auf
+      <application>PF</application> in &os;.  Es wird beschrieben, wie
+      <application>PF</application> und
+      <application>ALTQ</application> aktiviert werden.  Anschließend
+      wird demonstriert, wie Regelsätze auf einem &os;-System erstellt
+      werden.</para>
 
     <sect2>
-      <title>Verwendung der PF-Kernelmodule</title>
+      <title><application>PF</application> aktivieren</title>
+
+      <para>Damit <application>PF</application> benutzt werden kann,
+	muss zunächst das Kernelmodul geladen werden.  Dieser
+	Abschnitt beschreibt die Einträge für
+	<filename>/etc/rc.conf</filename>, die verwendet werden können
+	um <application>PF</application> zu aktivieren.</para>
 
-      <para>Um die PF Kernel Module zu laden, fügen Sie folgende
-        Zeile in ihre <filename>/etc/rc.conf</filename> ein:</para>
+      <para>Beginnen Sie mit folgender Zeile in
+	<filename>/etc/rc.conf</filename>:</para>
 
       <programlisting>pf_enable="YES"</programlisting>
 
-      <para>Danach starten Sie das Startup Script um die Module
-        zu laden:</para>
+      <para>&man.pfctl.8; beschreibt zusätzliche Optionen, die beim
+	Start an <application>PF</application> übergeben werden
+	können.  Fügen Sie diesen Eintrag in
+	<filename>/etc/rc.conf</filename> hinzu und schreiben Sie die
+	benötigten Optionen zwischen die Anführungszeichen:</para>
+
+      <programlisting>pf_flags=""                     # additional flags for pfctl startup</programlisting>
+
+      <para><application>PF</application> kann nicht gestartet werden,
+	wenn es seine Konfigurationsdatei nicht findet.  In der
+	Voreinstellung existiert bereits ein Regelsatz namens
+	<filename>/etc/pf.conf</filename>.  Wenn bereits ein Regelsatz
+	an anderer Stelle gespeichert wurde, fügen Sie in
+	<filename>/etc/rc.conf</filename> einen Eintrag mit dem
+	vollständigen Pfad zur Datei ein:</para>
 
-      <screen>&prompt.root; <userinput>/etc/rc.d/pf start</userinput></screen>
+      <programlisting>pf_rules="<replaceable>/path/to/pf.conf</replaceable>"</programlisting>
 
-      <para>Das PF Modul wird nicht geladen, falls es die Ruleset
-        Konfigurationsdatei nicht findet.  Standardmässig befindet
-        sich diese Datei in <filename>/etc/pf.conf</filename>.  Falls das
-        PF Ruleset sich an einem anderen Platz befindet, können Sie das
-        durch Hinzufügen einer Zeile ähnlich der folgenden, in
-        ihrer <filename>/etc/rc.conf</filename> ändern:</para>
+      <para>Protokollierungsfunktionen für
+	<application>PF</application> werden von &man.pflog.4; zur
+	Verfügung gestellt.  Fügen Sie folgende Zeile in
+	<filename>/etc/rc.conf</filename> ein, um diese Funktion zu
+	aktivieren:</para>
 
-      <programlisting>pf_rules="<replaceable>/path/to/pf.conf</replaceable>"</programlisting>
+      <programlisting>pflog_enable="YES"</programlisting>
+
+      <para>Die folgenden Zeilen können ebenfalls hinzugefügt werden,
+	um den Speicherort der Protokolldatei zu bestimmen und weitere
+	Optionen beim Start an &man.pflog.4; zu übergeben:</para>
+
+      <programlisting>pflog_logfile="/var/log/pflog"  # where pflogd should store the logfile
+pflog_flags=""                  # additional flags for pflogd startup</programlisting>
+
+      <para>Falls ein <acronym>LAN</acronym> hinter der Firewall
+	existiert und die Pakete an die Rechner im
+	<acronym>LAN</acronym> weitergeleitet werden müssen, oder
+	wenn <acronym>NAT</acronym> benötigt wird, fügen Sie die
+	folgende Option hinzu:</para>
+
+      <programlisting>gateway_enable="YES"            # Enable as LAN gateway</programlisting>
+
+      <para>Nachdem die Änderungen gespeichert wurden, kann
+        <application>PF</application> mit Unterstützung für
+	Protokollierung gestartet werden:</para>
+
+      <screen>&prompt.root; <userinput>service pf start</userinput>
+&prompt.root; <userinput>service pflog start</userinput></screen>
+
+<!--
+This is no longer true as of 9.x. It also references the CARP section
+which doesn't explain how to use it...At some point it should.
+      <indexterm>$
+	<primary>kernel options</primary>
+	<secondary>device pf</secondary>
+      </indexterm>
+
+      <indexterm>
+	<primary>kernel options</primary>
+	<secondary>device pflog</secondary>
+      </indexterm>
+
+      <indexterm>
+	<primary>kernel options</primary>
+	<secondary>device pfsync</secondary>
+      </indexterm>
 
       <note>
-		<para>Ein Beispiel für die Datei <filename>pf.conf</filename>
-		  finden Sie im Verzeichnis <filename>/usr/share/examples/pf/</filename>.</para>
+	<para>While it is not necessary to compile
+	  <application>PF</application> support into the &os; kernel,
+	  some advanced features are not included, namely &man.pfsync.4;, which is a
+	  pseudo-device that exposes certain changes to the state table
+	  used by <application>PF</application>.  It can be paired with
+	  &man.carp.4; to create failover firewalls using
+	  <application>PF</application>.  More information on
+	  <acronym>CARP</acronym> can be found in <xref linkend="carp"/>.</para>
+
+	<para>The following <application>PF</application> kernel options
+	  are available:</para>
+
+	<programlisting>device pf
+device pflog
+device pfsync</programlisting>
+
+	<para>where:</para>
+
+	<para><literal>device pf</literal> enables PF support.</para>
+
+	<para><literal>device pflog</literal> enables the optional
+	  &man.pflog.4; pseudo network device which can be used to log
+>>>>>>>>  traffic to a &man.bpf.4; descriptor.  The &man.pflogd.8;
+>>>>>>>>  daemon can then be used to store the logging information to
+>>>>>>>>  disk.</para>
+
+	<para><literal>device pfsync</literal> enables the optional
+	  &man.pfsync.4; pseudo-network device that is used to monitor
+	  <quote>state changes</quote>.</para>
       </note>
+-->
 
-      <para>Das <acronym>PF</acronym>-Modul kann auch manuell über die
-        Kommandozeile geladen werden:</para>
+      <para>In der Voreinstellung liest <application>PF</application>
+	seine Konfiguration aus <filename>/etc/pf.conf</filename> und
+	modifiziert, verwirft oder akzeptiert Pakete anhand der
+	Definitionen in dieser Datei.  &os; enthält mehrere
+	Beispieldateien unter
+	<filename>/usr/share/examples/pf/</filename>.  Auch die
+	<link xlink:href="http://www.openbsd.org/faq/pf/">PF
+	  FAQ</link> enthält sehr ausführliche Beispiele für
+	<application>PF</application>-Regeln.</para>
+
+      <para>Zur Steuerung von <application>PF</application> wird
+	<command>pfctl</command> verwendet.  <xref linkend="pfctl"/>
+	fasst einige nützliche Optionen für diesen Befehl zusammen.
+	Eine Beschreibung aller verfügbaren Optionen finden Sie in
+	&man.pfctl.8;.</para>
 
-      <screen>&prompt.root; <userinput>kldload pf.ko</userinput></screen>
+      <table xml:id="pfctl" frame="none" pgwide="1">
+	<title>Nützliche <command>pfctl</command> Optionen</title>
 
-      <para>Protokollierungsfunktionen für PF werden durch das Modul
-        <literal>pflog.ko</literal> zur Verfügung gestellt und
-        können durch folgenden Eintrag in der
-        <filename>/etc/rc.conf</filename> aktiviert werden:</para>
+	<tgroup cols="2">
+	  <thead>
+	    <row>
+	      <entry>Kommando</entry>
+	      <entry>Aufgabe</entry>
+	    </row>
+	  </thead>
 
-      <programlisting>pflog_enable="YES"</programlisting>
+	  <tbody>
+	    <row>
+	      <entry><command>pfctl -e</command></entry>
+	      <entry><application>PF</application> aktivieren</entry>
+	    </row>
 
-      <para>Danach starten Sie das Startup Script, um das Modul
-        zu laden:</para>
+	    <row>
+	      <entry><command>pfctl -d</command></entry>
+	      <entry><application>PF</application>
+		deaktivieren</entry>
+	    </row>
 
-      <screen>&prompt.root; <userinput>/etc/rc.d/pflog start</userinput></screen>
+	    <row>
+	      <entry><command>pfctl -F all -f
+		  /etc/pf.conf</command></entry>
+	      <entry>Alle Filterregeln zurücksetzen
+		(<acronym>NAT</acronym>, Filter, Zustandstabelle) und
+		<filename>/etc/pf.conf</filename> erneut
+		einlesen.</entry>
+	    </row>
 
-      <para>Falls Sie noch weitere Features für
-        <acronym>PF</acronym> benötigen, müssen Sie diese in den
-        Kernel einbauen.</para>
+	    <row>
+	      <entry><command>pfctl -s [ rules | nat |
+		  states ]</command></entry>
+	      <entry>Zusammenfassung der Filterregeln,
+		<application>NAT</application>-Regeln, oder der
+		Zustandstabelle.</entry>
+	    </row>
+
+	    <row>
+	      <entry><command>pfctl -vnf
+		  /etc/pf.conf</command></entry>
+	      <entry>Überprüft <filename>/etc/pf.conf</filename> auf
+		Fehler, lädt aber die Filterregeln nicht neu.</entry>
+	    </row>
+	  </tbody>
+	</tgroup>
+      </table>
+
+      <tip>
+	<para><package>security/sudo</package> ist nützlich um
+	  Kommandos mit erhöhten Berechtigungen auszuführen, wie
+	  beispielsweise <command>pfctl</command>.  Das Programm kann
+	  aus der Ports-Sammlung installiert werden.</para>
+      </tip>
+
+      <para>Um den ein- und ausgehenden Verkehr im Auge zu behalten,
+	können Sie ein Werkzeug wie <package>sysutils/pftop</package>
+	benutzen.  Sobald das Programm installiert ist, können Sie
+	<application>pftop</application> ausführen, um einen Snapshot
+	des Datenverkehrs zu sehen.  Das Format der Ausgabe ist der
+	von &man.top.1; sehr ähnlich.</para>
     </sect2>
 
     <sect2>
-      <title>PF Kernel-Optionen</title>
+      <title><application>ALTQ</application> aktivieren</title>
 
-      <indexterm>
-		<primary>Kerneloptionen</primary>
+      <para>Unter &os; kann <application>ALTQ</application> zusammen
+	mit <application>PF</application> benutzt werden, um Quality
+	of Service (<acronym>QoS</acronym>) bereitzustellen.  Sobald
+	<application>ALTQ</application> aktiviert ist, können
+	Warteschlangen definiert werden, mit denen Sie die Priorität
+	für ausgehende Pakete festlegen können.</para>
+
+      <para>Bevor Sie <application>ALTQ</application> aktivieren,
+	sollten Sie &man.altq.4; lesen und sicherstellen, das der
+	Treiber der Netzwerkkarte diese Funktion unterstützt.</para>
+
+      <para><application>ALTQ</application> steht nicht als ladbares
+	Kernelmodul zur Verfügung.  Wenn die Netzwerkkarte des Systems
+	<application>ALTQ</application> unterstützt, erstellen Sie
+	nach den Anweisungen in <xref linkend="kernelconfig"/> einen
+	angepassten Kernel.  Als erstes muss
+	<application>ALTQ</application> aktiviert werden.  Zudem ist
+	mindestens eine weitere Option nötig, um den Algorithmus für
+	die Warteschlange zu bestimmen:</para>
 
-		<secondary>device pf</secondary>
-      </indexterm>
+      <programlisting>options         ALTQ
+options         ALTQ_CBQ        # Class Based Queuing (CBQ)
+options         ALTQ_RED        # Random Early Detection (RED)
+options         ALTQ_RIO        # RED In/Out
+options         ALTQ_HFSC       # Hierarchical Packet Schedule (HFSC)
+options         ALTQ_PRIQ       # Priority Queuing (PRIQ)</programlisting>
 
-      <indexterm>
-		<primary>Kerneloptionen</primary>
+      <para>Die folgenden Algorithmen stehen zur Verfügung:</para>
 
-		<secondary>device pflog</secondary>
-      </indexterm>
+      <variablelist>
+	<varlistentry>
+	  <term>CBQ</term>
+	  <listitem>
+	    <para>Class Based Queuing (<acronym>CBQ</acronym>) erlaubt
+	    es, die Bandbreite einer Verbindung in verschiedene
+	    Klassen oder Warteschlangen zu unterteilen, um die
+	    Priorität von Datenpaketen basierend auf Filterregeln zu
+	    beeinflussen.</para>
+	  </listitem>
+	</varlistentry>
 
-      <indexterm>
-		<primary>Kerneloptionen</primary>
+	<varlistentry>
+	  <term>RED</term>
+	  <listitem>
+	    <para>Random Early Detection (<acronym>RED</acronym>) wird
+	      eingesetzt, um eine Überlastung des Netzwerks zu
+	      vermeiden.  Dazu ermittelt <acronym>RED</acronym> die
+	      Größe der Warteschlange und vergleicht diesen Wert mit
+	      den minimalen und maximalen Grenzwerten der
+	      Warteschlange.  Ist die Warteschlange größer als das
+	      erlaubte Maximum, werden alle neuen Pakete nach dem
+	      Zufallsprinzip verworfen.</para>
+	  </listitem>
+	</varlistentry>
 
-		<secondary>device pfsync</secondary>
-      </indexterm>
+	<varlistentry>
+	  <term>RIO</term>
+	  <listitem>
+	    <para>Random Early Detection In and Out
+	      (<acronym>RIO</acronym>).  Dieser Modus verwaltet
+	      mehrere Warteschlangen durchschnittlicher Größe mit
+	      mehreren Schwellwerten, eine für jedes
+	      <acronym>QoS</acronym>-Level.</para>
+	  </listitem>
+	</varlistentry>
 
-      <para>Es ist nicht zwingend nötig, dass Sie
-        <acronym>PF</acronym>-Unterstützung in den &os;-Kernel
-        kompilieren.  Sie werden dies tun müssen, um eine von PFs
-        fortgeschritteneren Eigenschaften nutzen zu können, die nicht als
-        Kernelmodul verfügbar ist.  Genauer handelt es sich dabei um
-        &man.pfsync.4;, ein Pseudo-Gerät, welches bestimmte
-        Änderungen der <acronym>PF</acronym>-Zustandstabelle offenlegt.
-        Es kann mit &man.carp.4; kombiniert werden, um ausfallsichere
-        Firewalls mit <acronym>PF</acronym> zu realisieren.  Weitere
-        Informationen zu <acronym>CARP</acronym> erhalten Sie in
-        <xref linkend="carp"/> des Handbuchs.</para>
-
-      <para>Die Kernelkonfigurationsoptionen von <acronym>PF</acronym> befinden
-        sich in <filename>/usr/src/sys/conf/NOTES</filename> und sind im
-        Folgenden wiedergegeben:</para>
+	<varlistentry>
+	  <term>HFSC</term>
+	  <listitem>
+	    <para>Hierachical Fair Service Curve Packet Scheduler
+	      (<acronym>HFSC</acronym>) wird in <link
+		xlink:href="http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html">
+		http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html</link>
+	      beschrieben.</para>
+	  </listitem>
+	</varlistentry>
 
-      <programlisting>device pf
-device pflog
-device pfsync</programlisting>
+	<varlistentry>
+	  <term>PRIQ</term>
+	  <listitem>
+	    <para>Priority Queuing (<acronym>PRIQ</acronym>) lässt den
+	      Verkehr einer Warteschlange mit höherer Priorität zuerst
+	      durch.</para>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
 
-      <para>Die Option <literal>device pf</literal> aktiviert die
-        Unterstützung für die <quote>Packet
-        Filter</quote>-Firewall (&man.pf.4;).</para>
+      <para>Weitere Informationen über diese Algorithmen und Beispiele
+	für Regelsätze finden Sie unter <link
+	  xlink:href="http://www.openbsd.org/faq/pf/queueing.html">
+	  http://www.openbsd.org/faq/pf/queueing.html</link>.</para>
+    </sect2>
 
-      <para>Die Option <literal>device pflog</literal> aktiviert das optionale
-        &man.pflog.4;-Pseudonetzwerkgerät, das zum Protokollieren
-        des Datenverkehrs über einen &man.bpf.4;-Deskriptor
-        dient.  &man.pflogd.8; ist in der Lage, diese Protokolldateien
-        auf Ihre Platte zu speichern.</para>
+    <sect2 xml:id="pf-tutorial">
+      <info>
+	<title><application>PF</application> Regelsätze</title>
+
+	<authorgroup>
+	  <author>
+	    <personname>
+	      <firstname>Peter</firstname>
+	      <surname>Hansteen</surname>
+	      <othername>N. M.</othername>
+	    </personname>
+	    <contrib>Beigetragen von </contrib>
+	  </author>
+	</authorgroup>
+      </info>
+
+      <para>Dieser Abschnitt beschreibt die Erstellung von angepassten
+	Regelsätzen.  Es wird mit dem einfachsten Regelsatz begonnen
+	auf dem dann weitere aufgebaut werden, um die
+	Konzepte und Funktionen von <application>PF</application> an
+	einigen konkreten Beispielen zu verdeutlichen.</para>
+
+      <para>Der einfachste Regelsatz gilt für einen Rechner, der
+	keine Dienste anbietet und Zugriff auf das Internet haben
+	soll.  Für diesen minimalen Regelsatz wird
+	<filename>/etc/pf.conf</filename> wie folgt
+	konfiguriert:</para>
+
+      <programlisting>block in all
+pass out all keep state</programlisting>
+
+      <para>Die erste Regel blockiert jeglichen eingehenden
+	Datenverkehr.  Die zweite Regel erlaubt ausgehende
+	Verbindungen von diesem Rechner, während die
+	Zustandsinformationen dieser Verbindungen gespeichert werden.
+	Diese Zustandsinformationen machen es möglich, den
+	Antwortverkehr für diese Verbindungen zu erlauben.  Der
+	Regelsatz wird mit dem folgenden Befehl geladen:</para>
+
+      <screen>&prompt.root; <userinput>pfctl -e ; pfctl -f /etc/pf.conf</userinput></screen>
+
+      <para>Neben den Zustandsinformationen verfügt
+	<application>PF</application> über
+	<firstterm>Listen</firstterm> und
+	<firstterm>Makros</firstterm>.  Diese können bei der
+	Erstellung der Regeln definiert werden.  Makros können Listen
+	enthalten und sie müssen vor ihrer ersten Benutzung definiert
+	sein.  Fügen Sie beispielsweise folgende Zeilen an den Anfang
+	des Regelsatzes:</para>
+
+      <programlisting>tcp_services = "{ ssh, smtp, domain, www, pop3, auth, pop3s }"
+udp_services = "{ domain }"</programlisting>
+
+      <para><application>PF</application> versteht sowohl Portnamen
+	als auch Portnummern, solange die Namen in
+	<filename>/etc/services</filename> aufgeführt sind.  Dieses
+	Beispiel erstellt zwei Makros.  Das erste ist eine Liste mit
+	sieben <acronym>TCP</acronym>-Portnamen, die zweite Liste
+	enthält einen <acronym>UDP</acronym>-Portnamen.  Sobald ein
+	Makro definiert ist, kann es in den Regeln verwendet werden.
+	In diesem Beispiel wird der gesamte Datenverkehr geblockt, mit
+	Ausnahme der Verbindungen die von diesem Rechner initiiert
+	wurden und sich auf einen der angegebenen
+	<acronym>TCP</acronym>-Dienste oder den
+	<acronym>UDP</acronym>-Dienst beziehen:</para>
+
+      <programlisting>tcp_services = "{ ssh, smtp, domain, www, pop3, auth, pop3s }"
+udp_services = "{ domain }"
+block all
+pass out proto tcp to any port $tcp_services keep state
+pass proto udp to any port $udp_services keep state</programlisting>
+
+      <para>Obwohl <acronym>UDP</acronym> als zustandsloses Protokoll
+	betrachtet wird, ist <application>PF</application> in der Lage
+	einige Zustandsinformationen zu verfolgen.  Wenn
+	beispielsweise eine <acronym>UDP</acronym>-Abfrage für einen
+	Nameserver das System verlässt, wird
+	<application>PF</application> nach der Antwort Ausschau halten
+	und das Antwortpaket durch lassen.</para>
+
+      <para>Nachdem der Regelsatz verändert wurde, muss er neu geladen
+	werden:</para>
+
+      <screen>&prompt.root; <userinput>pfctl -f /etc/pf.conf</userinput></screen>
+
+      <para>Wenn keine Syntaxfehler festgestellt werden, wird
+	<command>pfctl</command> keine Ausgabe erzeugen.  Die Syntax
+	kann auch getestet werden, bevor der Regelsatz geladen
+	wird:</para>
+
+      <screen>&prompt.root; <userinput>pfctl -nf /etc/pf.conf</userinput></screen>
+
+      <para>Die Option <option>-n</option> bewirkt, dass die Regeln
+	nur interpretiert, jedoch nicht geladen werden.  Dies bietet
+	die Möglichkeit, alle Fehler zu korrigieren.  Es wird immer
+	der letzte gültige Regelsatz geladen, bis
+	<application>PF</application> entweder deaktiviert, oder ein
+	neuer Regelsatz geladen wird.</para>
+
+      <tip>
+	<para>Wenn Sie beim Laden oder Prüfen des Regelsatzes noch die
+	  Option <option>-v</option> hinzufügen, wird
+	  <command>pfctl</command> den komplett interpretierten
+	  Regelsatz anzeigen.  Dies ist äußerst nützlich, wenn Sie
+	  versuchen Fehler im Regelsatz zu finden.</para>
+      </tip>
+
+      <sect3 xml:id="pftut-gateway">
+	<title>Einfaches Gateway mit <acronym>NAT</acronym></title>
+
+	<para>Dieser Abschnitt zeigt wie ein &os;-System mit
+	  <application>PF</application> als Gateway konfiguriert wird.
+	  Das Gateway muss über mindestens zwei Netzwerkkarten
+	  verfügen, die jeweils mit einem separaten Netzwerk verbunden
+	  sind.  In diesem Beispiel ist <filename>xl1</filename> mit
+	  dem Internet verbunden und <filename>xl0</filename> ist mit
+	  dem internen Netzwerk verbunden.</para>
+
+	<para>Aktivieren Sie zunächst das Gateway, damit der Rechner
+	  den Netzwerkverkehr von einer Schnittstelle zur nächsten
+	  weiterleiten kann.  Diese
+	  <application>sysctl</application>-Einstellung sorgt dafür,
+	  dass <acronym>IPv4</acronym>-Pakete weitergeleitet
+	  werden:</para>
+
+	<screen>&prompt.root; <userinput>sysctl net.inet.ip.forwarding=1</userinput></screen>
+
+	<para>So leiten Sie <acronym>IPv6</acronym>-Datenverkehr
+	  weiter:</para>
+
+	<screen>&prompt.root; <userinput>sysctl net.inet6.ip6.forwarding=1</userinput></screen>
+
+	<para>Um diese Einstellungen beim Systemstart zu aktivieren,
+	  fügen Sie folgende Zeilen in
+	  <filename>/etc/rc.conf</filename> ein:</para>
+	
+	<programlisting>gateway_enable="YES"		#für ipv4
+ipv6_gateway_enable="YES"	#für ipv6</programlisting>
+
+	<para>Prüfen Sie mit <command>ifconfig</command>, dass beide
+	  Schnittstellen vorhanden und aktiv sind.</para>
+
+	<para>Als nächstes erstellen Sie die nötigen
+	  <application>PF</application>-Regeln, damit das Gateway den
+	  Datenverkehr weiterleiten kann.  Die folgende Regel erlaubt
+	  den zustandsorientierten Verkehr aus dem Internet zu den
+	  Rechnern im Netzwerk:</para>
+
+	<programlisting>pass in on xl1 from xl1:network to xl0:network port $ports keep state</programlisting>
+
+	<para>Diese Regel erlaubt lediglich den Datenverkehr über das
+	  Gateway auf der internen Schnittstelle.  Damit die Pakete
+	  noch weiter gehen, wird eine passende Regel benötigt:</para>
+
+	<programlisting>pass out on xl0 from xl1:network to xl0:network port $ports keep state</programlisting>
+
+	<para>Obwohl diese beiden Regeln funktionieren, werden sie
+	  in der Praxis so spezifisch selten benötigt.  Ein lesbarer
+	  Regelsatz ist oft ein sicherer Regelsatz.  Der Rest dieses
+	  Abschnitts zeigt, wie Sie die Regeln so einfach und lesbar
+	  wie möglich halten.  Zum Beispiel könnten die beiden Regeln
+	  zu einer Regel zusammengefasst werden:</para>
+
+	<programlisting>pass from xl1:network to any port $ports keep state</programlisting>
+
+	<para>Die Notation <literal>interface:network</literal> kann
+	  durch ein Makro ersetzt werden, um den Regelsatz besser
+	  lesbar zu machen.  Zum Beispiel könnte für das Netzwerk an
+	  der internen Schnittstelle (<literal>xl0:network</literal>)
+	  ein Makro namens <literal>$localnet</literal> definiert
+	  werden.  Alternativ könnte für die Definition von
+	  <literal>$localnet</literal> auch eine
+	  <emphasis>IP-Adresse/Netzmaske</emphasis> Notation verwendet
+	  werden, um ein Netzwerk zu bezeichnen, beispielsweise
+	  <literal>192.168.100.1/24</literal> für ein privates
+	  Subnetz.</para>
+
+	<para>Bei Bedarf kann für <literal>$localnet</literal> auch
+	  eine Liste von Netzwerken definiert werden.  Abhängig von
+	  den Bedürfnissen kann <literal>$localnet</literal> auch für
+	  eine typische Regel wie folgt verwendet werden:</para>
+
+	<programlisting>pass from $localnet to any port $ports keep state</programlisting>
+
+	<para>Der folgende Regelsatz erlaubt sämtlichen Verkehr, der
+	  von den Rechnern im internen Netzwerk initiiert wird.
+	  Zunächst werden zwei Makros definiert, die die externen und
+	  internen 3COM-Schnittstellen repräsentieren.</para>
+
+	<note>
+	  <para>Bei Einwählverbindungen wird <filename>tun0</filename>
+	    für die externe Schnittstelle verwendet.  Bei
+	    <acronym>ADSL</acronym>-Verbindungen, insbesondere denen
+	    die <acronym>PPP</acronym> over Ethernet
+	    (<acronym>PPPoE</acronym>) verwenden, ist die richtige
+	    externe Schnittstelle <filename>tun0</filename> und nicht
+	    die physische Ethernet-Schnittstelle.</para>
+	</note>
+
+	<programlisting>ext_if = "xl0"	# macro for external interface - use tun0 for PPPoE
+int_if = "xl1"	# macro for internal interface
+localnet = $int_if:network
+# ext_if IP address could be dynamic, hence ($ext_if)
+nat on $ext_if from $localnet to any -&gt; ($ext_if)
+block all
+pass from { lo0, $localnet } to any keep state</programlisting>
+
+	<para>Dieser Regelsatz führt die <acronym>NAT</acronym>-Regel
+	  ein, die verwendet wird, um die Übersetzung der
+	  Netzwerkadressen von den nicht-routebaren Adressen im
+	  internen Netzwerk auf die <acronym>IP</acronym>-Adresse der
+	  externen Schnittstelle zu handhaben.  Die Klammern im
+	  letzten Teil der <acronym>NAT</acronym>-Regel
+	  <literal>($ext_if)</literal> werden angegeben, wenn die
+	  <acronym>IP</acronym>-Adresse der externen Schnittstelle
+	  dynamisch zugewiesen wird.  Damit wird sichergestellt, dass
+	  der Netzwerkverkehr ohne schwerwiegende Unterbrechungen
+	  weiterläuft, auch wenn sich die externe
+	  <acronym>IP</acronym>-Adresse ändert.</para>
+
+	<para>Beachten Sie, dass dieser Regelsatz wahrscheinlich mehr
+	  Verkehr aus dem Netzwerk zulässt, als eigentlich nötig ist.
+	  Bei einem angemessenen Aufbau könnte folgendes Makro
+	  erstellt werden:</para>
+
+	<programlisting>client_out = "{ ftp-data, ftp, ssh, domain, pop3, auth, nntp, http, \
+    https, cvspserver, 2628, 5999, 8000, 8080 }"</programlisting>
+
+	<para>Dieses Makro wird dann in der Filterregel
+	  benutzt:</para>
+
+	<programlisting>pass inet proto tcp from $localnet to any port $client_out \
+    flags S/SA keep state</programlisting>
+
+	<para>Weitere <literal>pass</literal> Regeln werden
+	  vielleicht noch benötigt.  Diese Regel aktiviert
+	  <acronym>SSH</acronym> auf der externen
+	  Schnittstelle:</para>
+
+	<programlisting>pass in inet proto tcp to $ext_if port ssh</programlisting>
+
+	<para>Dieses Makrodefinition und Regel erlaubt
+	  <acronym>DNS</acronym> und <acronym>NTP</acronym> für
+	  interne Clients:</para>
+
+	<programlisting>udp_services = "{ domain, ntp }"
+pass quick inet proto { tcp, udp } to any port $udp_services keep state</programlisting>
+
+	<para>Beachten Sie das Schlüsselwort <literal>quick</literal>
+	  in dieser Regel.  Da der Regelsatz aus mehreren Regeln
+	  besteht, ist es wichtig, die Beziehungen zwischen den
+	  einzelnen Regeln zu verstehen.  Die Regeln werden von oben
+	  nach unten ausgewertet, in der Reihenfolge wie sie
+	  geschrieben sind.  Für jedes Paket oder jede Verbindung, das
+	  <application>PF</application> ausgewertet, wird die letzte
+	  übereinstimmende Regel im Regelsatz angewendet.  Wenn jedoch
+	  ein Paket auf eine Regel passt, welche das Schlüsselwort
+	  <literal>quick</literal> enthält, wird das Paket
+	  entsprechend dieser Regel behandelt und die
+	  Regelverarbeitung wird gestoppt.  Diese Vorgehensweise ist
+	  sehr nützlich, wenn eine Ausnahme von den allgemeinen Regeln
+	  erforderlich ist.</para>
+      </sect3>
 
-      <para>Die Option <literal>device pfsync</literal> aktiviert das optionale
-        &man.pfsync.4;-Pseudonetzwerkgerät für die
-        Überwachung von <quote>Statusänderungen</quote>.</para>
-    </sect2>
+      <sect3 xml:id="pftut-ftp">
+	<title>Einen <acronym>FTP</acronym>-Proxy einrichten</title>
 
-    <sect2>
-      <title>Verfügbare rc.conf-Optionen</title>
+	<para>Die Konfiguration einer funktionierenden Regel für
+	  <acronym>FTP</acronym> kann aufgrund der Beschaffenheit des
+	  <acronym>FTP</acronym>-Protokolls problematisch sein.
+	  <acronym>FTP</acronym> ist sehr viel älter als Firewalls
+	  und schon vom Design her unsicher.  Die häufigsten Argumente
+	  gegen eine Verwendung von <acronym>FTP</acronym>
+	  sind:</para>
+	
+	<itemizedlist>
+	  <listitem>
+	    <para>Passwörter werden im Klartext übertragen.</para>
+	  </listitem>
+
+	  <listitem>
+	    <para>Das Protokoll erfordert die Verwendung von
+	      mindestens zwei <acronym>TCP</acronym>-Verbindungen
+	      (Steuerung und Daten) auf separaten Ports.</para>
+	  </listitem>
+
+	  <listitem>
+	    <para>Wenn eine Sitzung aufgebaut wird, werden die Daten
+	      auf zufällig ausgewählten Ports übermittelt.</para>
+	  </listitem>
+	</itemizedlist>
 
-      <para>Die	folgenden &man.rc.conf.5;-Einträge konfigurieren
-        <acronym>PF</acronym> und &man.pflog.4; beim Systemstart:</para>
+	<para>All diese Punkte stellen Herausforderungen dar, noch
+	  bevor die Client- oder Server-Software auf potenzielle
+	  Sicherheitslücken überprüft wurde.  Es existieren aber auch
+	  sichere Alternativen für die Dateiübertragung, wie
+	  &man.sftp.1; oder &man.scp.1;, wo die Authentifizierung und
+	  die Datenübertragung über eine verschlüsselte Verbindung
+	  erfolgt.</para>
+
+	<para>Für Situationen, in denen <acronym>FTP</acronym>
+	  erforderlich ist, kann <application>PF</application> den
+	  <acronym>FTP</acronym>-Datenverkehr an ein kleines
+	  Proxy-Programm namens &man.ftp-proxy.8; weiterleiten.
+	  Dieses Programm ist im Basissystem von &os; enthalten.  Die
+	  Aufgabe des Proxies ist das dynamische Einfügen und
+	  Entfernen von Regeln im Regelsatz.  Dies wird durch den
+	  Einsatz von Ankern erreicht, damit der
+	  <acronym>FTP</acronym>-Verkehr korrekt verarbeitet werden
+	  kann.</para>
+
+	<para>Fügen Sie folgende Zeilen in
+	  <filename>/etc/rc.conf</filename> ein, um den Proxy zu
+	  aktivieren:</para>
+
+	<programlisting>ftpproxy_enable="YES"</programlisting>
+
+	<para>Danach kann der Proxy mit <command>service ftp-proxy
+	    start</command> gestartet werden.</para>
+
+	<para>Für die Grundkonfiguration müssen drei weitere Einträge
+	  in <filename>/etc/pf.conf</filename> hinzugefügt werden.
+	  Zunächst werden die Anker hinzugefügt, die der Proxy für die
+	  <acronym>FTP</acronym>-Sitzungen verwendet:</para>
+
+	<programlisting>nat-anchor "ftp-proxy/*"
+rdr-anchor "ftp-proxy/*"</programlisting>
+
+	<para>Dann wird eine <literal>pass</literal>-Regel benötigt,
+	  damit der <acronym>FTP</acronym>-Datenverkehr durch den
+	  Proxy geleitet werden kann.</para>
+
+	<para>Die Regeln für Umleitung und <acronym>NAT</acronym>
+	  müssen vor den eigentlichen Filterregeln definiert werden.
+	  Fügen Sie diese <literal>rdr</literal>-Regel unmittelbar
+	  nach der <acronym>NAT</acronym>-Regel ein:</para>
+
+	<programlisting>rdr pass on $int_if proto tcp from any to any port ftp -&gt; 127.0.0.1 port 8021</programlisting>
+
+	<para>Zum Schluss muss der umgeleitete Verkehr die Firewall
+	  passieren dürfen:</para>
+	
+	<programlisting>pass out proto tcp from $proxy to any port ftp</programlisting>
+
+	<para><literal>$poxy</literal> enthält die Adresse, an dem der
+	  Proxy-Daemon gebunden ist.</para>
+
+	<para>Speichern Sie <filename>/etc/pf.conf</filename> und
+	  laden Sie die Regeln neu.  Prüfen Sie von einem Client, ob
+	  die <acronym>FTP</acronym>-Verbindungen
+	  funktionieren:</para>
+
+	<screen>&prompt.root; <userinput>pfctl -f /etc/pf.conf</userinput></screen>
+
+	<para>Dieses Beispiel umfasst eine Grundkonfiguration, in der
+	  die Rechner im lokalen Netzwerk Zugriff auf entfernte
+	  <acronym>FTP</acronym>-Server benötigen.  Diese
+	  Konfiguration sollte mit den meisten
+	  <acronym>FTP</acronym>-Clients und -Servern gut
+	  funktionieren.  Das Verhalten von &man.ftp-proxy.8; kann
+	  durch diverse Optionen in <literal>ftpproxy_flags</literal>
+	  beeinflusst werden.  Einige Clients und Server haben
+	  bestimmte Marotten, die bei der Konfiguration berücksichtigt
+	  werden müssen.  Es kann zum Beispiel notwendig sein, den
+	  <acronym>FTP</acronym>-Datenverkehr für den Proxy einer
+	  bestimmten Warteschlange zuzuweisen.</para>
+
+	<para>Es besteht auch die Möglichkeit einen
+	  <acronym>FTP</acronym>-Server mit
+	  <application>PF</application> und &man.ftp-proxy.8; zu
+	  schützen.  Konfigurieren Sie einen separaten
+	  <command>ftp-proxy</command> mit <option>-R</option> für den
+	  Reverse-Modus auf einem separaten Port und einer eigenen
+	  Umleitungsregel.</para>
+      </sect3>
 
-      <programlisting>pf_enable="YES"                 # PF aktivieren (Modul, wenn nötig, aktivieren)
-pf_rules="/etc/pf.conf"         # Datei mit Regeldefinitionen für pf
-pf_flags=""                     # zusätzliche Parameter für den Start von pfctl
-pflog_enable="YES"              # starte pflogd(8)
-pflog_logfile="/var/log/pflog"  # wo soll pflogd die Protokolldatei speichern
-pflog_flags=""                  # zusätzliche Parameter für den Start von pflogd</programlisting>
+      <sect3 xml:id="pftut-icmp">
+	<title><acronym>ICMP</acronym> verwalten</title>
 
-      <para>Wenn Sie ein lokales Netzwerk hinter dieser Firewall betreiben
-        und Pakete für dessen Rechner weiterleiten oder NAT verwenden
-        wollen, benötigen Sie zusätzlich die folgende Option:</para>
+	<para>Viele Werkzeuge zur Fehlerbehebung in
+	  <acronym>TCP/IP</acronym>-Netzwerken verlassen sich auf das
+	  <foreignphrase>Internet Control Message
+	    Protocol</foreignphrase> (<acronym>ICMP</acronym>), das
+	  speziell für diese Zwecke entwickelt wurde.</para>
+
+	<para>Das <acronym>ICMP</acronym>-Protokoll sendet und
+	  empfängt Kontrollnachrichten zwischen Rechnern und Gateways,
+	  hauptsächlich um ungewöhnliche Bedingungen auf dem Weg zum
+	  Zielrechner zu berichten.  Router verwenden
+	  <acronym>ICMP</acronym> um Paketgrößen und andere
+	  Übertragungsparameter zu ermitteln.  Dieser Prozess ist auch
+	  als <emphasis>Path <acronym>MTU</acronym>
+	    Discovery</emphasis> bekannt.</para>
+
+	<para>Aus der Sicht einer Firewall sind einige
+	  <acronym>ICMP</acronym>-Kontrollnachrichten anfällig für
+	  bekannte Angriffsmethoden.  Zwar ist die Fehlerbehebung
+	  einfacher, wenn alle <acronym>ICMP</acronym>-Pakete
+	  bedingungslos durch gelassen werden, aber dass macht es auch
+	  für Angreifer leichter, Informationen über das Netzwerk zu
+	  extrahieren.  Aus diesen Gründen ist die folgende Regel nicht
+	  optimal:</para>
+
+	<programlisting>pass inet proto icmp from any to any</programlisting>
+
+	<para>Eine Lösung besteht darin, nur den
+	  <acronym>ICMP</acronym>-Verkehr aus dem lokalen Netz zu
+	  akzeptieren, während <acronym>ICMP</acronym>-Pakete von
+	  außerhalb des Netzwerks verworfen werden:</para>
+
+	<programlisting>pass inet proto icmp from $localnet to any keep state
+pass inet proto icmp from any to $ext_if keep state</programlisting>
+
+	<para>Es stehen noch weitere Optionen zur Verfügung, die die
+	  Flexibilität von <application>PF</application>
+	  demonstrieren.  Anstatt beispielsweise alle
+	  <acronym>ICMP</acronym>-Nachrichten zu erlauben, kann man
+	  die Nachrichten angeben, die von &man.ping.8; und
+	  &man.traceroute.8; verwendet werden.  Beginnen Sie damit,
+	  ein Makro für diese Art von Nachrichten zu
+	  definieren:</para>
+
+	<programlisting>icmp_types = "echoreq"</programlisting>
+
+	<para>Erstellen Sie dann eine Regel, die das eben erstellte
+	  Makro benutzt:</para>
+
+	<programlisting>pass inet proto icmp all icmp-type $icmp_types keep state</programlisting>
+
+	<para>Wenn weitere Arten von
+	  <acronym>ICMP</acronym>-Nachrichten benötigt werden, kann
+	  die Liste <literal>icmp_types</literal> einfach erweitert
+	  werden.  Geben Sie <command>more
+	    /usr/src/contrib/pf/pfctl/pfctl_parser.c</command> ein, um
+	  eine Liste der von <application>PF</application>
+	  unterstützten <acronym>ICMP</acronym>-Nachrichten zu sehen.
+	  Die Webseite <link
+	    xlink:href="http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml">
+	    http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml</link>
+	  enthält eine Erklärung für jeden Nachrichtentyp.</para>
+
+	<para>Da &unix; <command>traceroute</command> in der
+	  Voreinstellung <acronym>UDP</acronym> verwendet, wird eine
+	  weitere Regel benötigt:</para>
+
+	<programlisting># allow out the default range for traceroute(8):
+pass out on $ext_if inet proto udp from any to any port 33433 &gt;&lt; 33626 keep state</programlisting>
+
+	<para>Da <command>TRACERT.EXE</command> unter
+	  &microsoft.windows;-Systemen <acronym>ICMP</acronym> Echo
+	  Request Meldungen verwendet, ist nur die erste Regel
+	  notwendig um Traces für solche Systeme zu ermöglichen.
+	  &unix; <command>traceroute</command> kann aber auch andere
+	  Protokolle verwenden, zum Beispiel <acronym>ICMP</acronym>
+	  Echo Request, wenn der Schalter <option>-I</option> benutzt
+	  wird.  Details finden Sie in &man.traceroute.8;.</para>
+	
+	<sect4 xml:id="pftut-pathmtudisc">
+	  <title>Path <acronym>MTU</acronym> Discovery</title>
+
+	  <para>Internet-Protokolle sind so ausgelegt, dass sie
+	    geräteunabhängig sind.  Eine Folge davon ist, dass die
+	    optimale Paketgröße nicht immer zuverlässig vorhergesagt
+	    werden kann.  Das größte Hindernis ist hier die
+	    <emphasis>Maximum Transmission Unit</emphasis>
+	    (<literal>MTU</literal>), welche die Obergrenze für die
+	    Paketgröße festlegt.  Die <acronym>MTU</acronym> für die
+	    Schnittstelle des Systems können Sie sich mit
+	    <command>ifconfig</command> anzeigen lassen.</para>
+
+	  <para><acronym>TCP/IP</acronym> benutzt ein Verfahren, das
+	    als <foreignphrase>path MTU discovery</foreignphrase>
+	    bekannt ist, um die korrekte Paketgröße für eine
+	    Verbindung zu bestimmen.  Dieses Verfahren sendet Pakete
+	    unterschiedlicher Größe mit dem Flag <quote>do not
+	      fragment</quote> und erwartet ein
+	    <acronym>ICMP</acronym>-Antwortpaket vom Typ
+	    <quote>type 3, code 4</quote>, wenn die Obergrenze
+	    erreicht worden ist.  Typ 3 bedeutet <quote>Ziel nicht
+	      erreichbar</quote> und Code 4 ist die Abkürzung für
+	    <quote>Fragmentierung nötig, aber Do-not-Fragment Flag ist
+	      gesetzt</quote>.  Um <foreignphrase>path MTU
+	      discovery</foreignphrase> zu erlauben und damit
+	    Verbindungen zu anderen <acronym>MTU</acronym>s zu
+	    unterstützen, fügen Sie dem Makro
+	    <literal>icmp_types</literal> den Typ <literal>destination
+	      unreachable</literal> hinzu:</para>
+
+	  <programlisting>icmp_types = "{ echoreq, unreach }"</programlisting>
+
+	  <para>Da die <literal>pass</literal>-Regel bereits das Makro
+	    verwendet, braucht es nicht geändert werden um den neuen
+	    <acronym>ICMP</acronym>-Typ zu unterstützen:</para>
+
+	  <programlisting>pass inet proto icmp all icmp-type $icmp_types keep state</programlisting>
+
+	  <para><application>PF</application> kann alle Variationen
+	    von <acronym>ICMP</acronym>-Typen und Codes filtern.  Eine
+	    Liste der verfügbaren Typen und Codes ist in &man.icmp.4;
+	    und &man.icmp6.4; dokumentiert.</para>
+	</sect4>
+      </sect3>
 
-      <programlisting>gateway_enable="YES"            # LAN Gateway aktivieren</programlisting>
-    </sect2>
+      <sect3 xml:id="pftut-tables">
+	<title>Tabellen benutzen</title>
 
-    <sect2>
-      <title>Filterregeln erstellen</title>
+	<para>Manchmal sind bestimmte Daten für die Filterung und
+	  Weiterleitung interessant, jedoch wäre eine Definition einer
+	  solchen Filterregel für einen Regelsatz viel zu lang.
+	  <application>PF</application> unterstützt die Verwendung von
+	  Tabellen.  Dies sind definierte Listen, die verändert werden
+	  können, ohne den gesamten Regelsatz neu laden zu müssen.
+	  Zudem können diese Listen sehr schnell durchsucht werden.
+	  Tabellennamen sind immer in <literal>&lt; &gt;</literal>
+	  eingeschlossen und sehen wie folgt aus:</para>
+
+	<programlisting>table &lt;clients&gt; { 192.168.2.0/24, !192.168.2.5 }</programlisting>
+
+	<para>In diesem Beispiel ist das Netzwerk
+	  <literal>192.168.2.0/24</literal> Teil der Tabelle.
+	  <literal>192.168.2.5</literal> wurde im dem Operator
+	  <literal>!</literal> ausgeschlossen und ist somit nicht Teil
+	  der Tabelle.  Es ist auch möglich Tabellen aus Dateien zu
+	  laden, wo jeder Eintrag in einer separaten Zeile steht.
+	  Dieses Beispiel verwendet dazu die Datei
+	  <filename>/etc/clients</filename>:</para>
+
+	<programlisting>192.168.2.0/24
+!192.168.2.5</programlisting>
+

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-doc-all
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.