[OpenBSD]

[Zurück: Listen und Makros] [Inhalt] [Weiter: Optionen [en] ]

PF: Tabellen


Inhalt


Einführung

Eine Tabelle enthält eine Gruppe von IPv4 und/oder IPv6 Adressen. Es ist wesentlich schneller - und verbraucht weniger Prozessorzeit und Speicher - Adressen aus Tabellen auszulesen als aus Listen. Aus diesem Grund sind Tabellen ideal um große Gruppen von Adressen aufzunehemen. Das Auslesen einer Tabelle die 50.000 Adressen enthält dauert nur wenig länger als das einer Tabelle mit 50 Adressen. Tabellen finden Verwendung in den Quell- und Zieladressfeldern in Filter, scrub, nat und Umleitungs (rdr) Regeln. Tabellen können jedoch nicht als Umleitungsadressen in nat Regeln oder in den Routing Optionen (route-to, reply-to, dup-to) der Filterregeln verwendet werden. Tabellen werden entweder in der /etc/pf.conf oder mit pfctl(8) erzeugt.

Konfiguration

In der Datei pf.conf werden die Tabellen mittels der Anweisung table erzeugt. Die folgenden Eigenschaften können zusätzlich für jede Tabelle festgelegt werden:

Beispiel:

table <goodguys> { 192.0.2.0/24 }
table <rfc1918> const { 192.168.0.0/16, 172.16.0.0/12, \
   10.0.0.0/8 }
table <spammers> persist

block in on fxp0 from { <rfc1918>, <spammers> } to any
pass  in on fxp0 from <goodguys> to any

Adressen können auch in Verneinungsform mit vorangestelltem ! angegeben werden:

table <goodguys> { 192.0.2.0/24, !192.0.2.5 }

Die Tabelle goodguys entspricht nun allen Adressen des 192.0.2.0/24er Netzwerkes mit Ausnahme der Adresse 192.2.0.5.

Der Name einer Tabelle steht immer zwischen spitzen Klammern < >.

Tabellen können den Inhalt einer Textdatei enthalten, die aus einer Aufzählung von IP Adressen oder Netzwerkadressen besteht:

table <spammers> persist file "/etc/spammers"

block in on fxp0 from <spammers> to any

Die Datei /etc/spammers enthält eine Liste von IP Adressen - eine pro Zeile. Auch hier ist jede Zeile, die mit einem # beginnt eine Kommentarzeile und wird ignoriert.

Manipulationen mit pfctl

Tabellen können während der Laufzeit mit pfctl(8) verändert werden. Hier ein Beispiel um einen Eintrag zur weiter oben erzeugten Tabelle <spammers> hinzuzufügen:
# pfctl -t spammers -Tadd 218.70.0.0/16

Sollte die Tabelle <spammers> vorher noch nicht existiert haben, wird sie erzeugt. Der folgende Befehl dient dazu die Adressen einer Tabelle aufzulisten:

# pfctl -t spammers -Tshow
Die Option -v kann zusammen mit -Tshow benutzt werden um eine Statistik für die Tabelle zu zeigen. Der folgende Befehl dient dazu Adressen aus einer Tabelle zu entfernen:
# pfctl -t spammers -Tdelete 218.70.0.0/16

Weitere Informationen wie Tabellen mit pfctl verändert weden finden sich in der Man Page von pfctl(8).

Adressen angeben

Ausser der IP Adresse kann auch der Hostname angegeben werden. Sobald der Hostname in eine IP Adresse aufgelöst wird, werden alle sich daraus ergebenden IPv4 und IPv6 Adressen in die Tabelle eingefügt. Ausserdem kann eine IP Adresse durch die Angabe des Namens einer gültigen Schnittstelle in eine Tabelle eingefügt werden. Durch die Angabe des Schlüsselwortes self werden die Adressen aller verfügbaren Schnittstellen eingefügt.

Wann eine Adresse zutrifft

Eine Adressabfrage an die Tabelle gibt den am besten zutreffenden Eintrag zurück. Dieses erlaubt Tabellen wie folgt aufzubauen:
table <goodguys> { 172.16.0.0/16, !172.16.1.0/24, 172.16.1.100 }

block in on dc0 all
pass  in on dc0 from <goodguys> to any

Die Quelladresse jeden Paketes das dc0 durchläuft wird mit den Einträgen der Tabelle <goodguys> verglichen:

[Zurück: Listen und Makros] [Inhalt] [Weiter: Optionen [en] ]


[back] www@openbsd.org
Originally [OpenBSD: tables.html,v 1.7 ]
$Translation: tables.html,v 1.2 2003/11/27 20:37:14 sl Exp $
$OpenBSD: tables.html,v 1.2 2003/11/29 18:32:59 horacio Exp $