[OpenBSD]

[Précédent : Principes de Base] [Index] [Suivant : Tables]

PF : Listes et Macros


Table des Matières


Listes

Une liste permet d'utiliser plusieurs critères similaires dans une même règle PF. Par exemple, plusieurs protocoles, plusieurs numéros de ports, plusieurs adresses IP, etc. Ainsi, au lieu d'écrire une règle de filtrage pour chaque adresse IP qui doit être bloquée, une seule règle peut être écrite en créant une liste avec les adresses IP à bloquer. Les listes sont définies en mettant des éléments entre accolades { }.

Quand pfctl(8) rencontre une liste durant le chargement de la base de règles, il crée de multiples règles : une règle pour chaque élément de la liste. Par exemple :

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

devient :

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

Plusieurs listes peuvent être utilisées dans une même règle. Elles ne sont pas uniquement limitées aux règles de filtrage :

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 }

Les virgules entre les éléments d'une même liste sont optionnelles.

Macros

Les macros sont des variables définies par l'utilisateur et pouvant contenir des adresses IP, des numéros de ports, des noms d'interfaces, etc. Les macros peuvent réduire la complexité d'une base de règles PF et facilitent la maintenance d'une base de règles.

Les noms de macros doivent commencer par une lettre et peuvent contenir des lettres, des chiffres, et des barres de soulignement "_". Les noms des macros ne doivent pas être des noms réservés tels que pass, out, ou queue.

ext_if = "fxp0"

block in on $ext_if from any to any

L'exemple précédent montre comment créer une macro nommée ext_if. Quand une macro est appelée après avoir été créée, son nom est précédé d'un caractère $.

Les macros peuvent aussi représenter des listes tel que le montre l'exemple suivant :

friends = "{ 192.168.1.1, 10.0.2.5, 192.168.43.53 }"

Elles peuvent être définies de manière récursive. Vu qu'elles ne sont pas traduites dans des quotes "", la syntaxe suivante doit être employée :

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

La macro $all_hosts correspond maintenant à la liste d'adresses IP {192.168.1.1 192.168.1.2}.

[Précédent : Principes de Base] [Index] [Suivant : Tables]


[back] www@openbsd.org
Originally [OpenBSD: macros.html,v 1.9 ]
$Translation: macros.html,v 1.3 2004/02/19 20:31:29 saad Exp $
$OpenBSD: macros.html,v 1.3 2004/02/20 06:33:11 jufi Exp $