Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Jun 2016 11:22:54 +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: r48900 - head/de_DE.ISO8859-1/books/handbook/firewalls
Message-ID:  <201606071122.u57BMst3033802@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201606071122.u57BMst3033802>