[OpenBSD]

[Zurück: Konfiguration] [Inhalt] [Weiter: Tabellen]

PF: Listen und Makros


Inhalt


Listen

Eine Liste erlaubt die Aufstellung mehrfach vorkommender gleichartiger Angaben innerhalb einer Regel - zB. mehrere Protokolle, Port Nummern, Adressen usw.. Anstelle das für jede IP Adresse die blockiert werden soll eine eigene Regel geschrieben wird, kann eine einzige Regel so formuliert werden das die IP Adressen in einer Liste angegeben sind. Die Syntax der Liste ist so definiert das die darin vorkommenden Objekte innerhalb von geschweiften Klammern { } stehen.

Wann immer pfctl(8) während des Einlesens der Regeln auf eine Liste trifft erzeugt es mehrfache Regeleinträge daraus, einen für jeden Eintrag in der Liste. zB.:

block out on fxp0 from { 192.168.0.1, 10.5.32.6 } to any

wird erweitert zu:

block out on fxp0 from 192.168.0.1 to any
block out on fxp0 from 10.5.32.6 to any

Innerhalb einer Regel können mehrfache Listen vorkommen. Listen sind nicht darauf beschränkt nur in Filterregeln vorzukommen:

rdr on fxp0 proto tcp from any to any port { 22 80 } -> \
   192.168.0.6
block out on fxp0 proto { tcp udp } from { 192.168.0.1, \
   10.5.32.6 } to any port { ssh telnet }

Die Kommata zwischen den Listeneinträgen sind optional.

Makros

Makros sind benutzerdefinierte Variablen, die IP Adressen, Port Nummern, Schnittstellennamen usw. enthalten können. Makros vereinfachen die Komplexität eines PF Regelwerkes und die Pflege der Regeln.

Makronamen müssen mit einem Buchstaben beginnen und können außer Buchstaben noch Zahlen und Unterstriche enthalten. Reservierte Bezeichnungen wie pass, out oder queue dürfen nicht als Makroname verwendet werden.

ext_if = "fxp0"

block in on $ext_if from any to any

Dieser Eintrag erzeugt ein Makro mit dem namen ext_if. Wird ein definiertes Makro später aufgerufen, wird dem Namen ein $ vorangestellt.

Makros können auch aus Listen bestehen, wie zB.:

friends = "{ 192.168.1.1, 10.0.2.5, 192.168.43.53 }"

Es ist möglich Makros rekursiv zu definieren. Da die Werte der Makros die innerhalb von Anführungszeichen stehen nicht ausgelesen werden, muss die folgende Syntax verwendet werden:

host1 = "192.168.1.1"
host2 = "192.168.1.2"
all_hosts = "{" $host1 $host2 "}"

Das Makro $all_hosts enthält nun den Wert 192.168.1.1, 192.168.1.2.

[Zurück: Konfiguration] [Inhalt] [Weiter: Tabellen]


[back] www@openbsd.org
Originally [OpenBSD: macros.html,v 1.7 ]
$Translation: macros.html,v 1.2 2003/11/27 17:34:57 sl Exp $
$OpenBSD: macros.html,v 1.2 2003/11/27 19:39:09 horacio Exp $