[OpenBSD]

[Précédent : Listes et Macros] [Index] [Suivant : Règles de Filtrage]

PF : Tables


Table des Matières


Introduction

Une table est une structure utilisée pour regrouper un ensemble d'adresses IPv4 et/ou IPv6. Chercher une adresse IP dans une table est une opération très rapide qui consomme moins de mémoire et de temps processeur qu'une recherche dans une liste. C'est pourquoi une table est idéale pour contenir un grand ensemble d'adresses IP vu que le temps nécessaire pour consulter le contenu d'une table de 50 000 adresses prend un tout petit peu plus de temps que la consultation d'une table de 50 adresses. Les tables peuvent être utilisées d'une des manières suivantes :

Une table peut être créée dans pf.conf ou en utilisant pfctl(8).

Configuration

Dans pf.conf, les tables sont créées en utilisant la directive table. Les attributs suivants peuvent être spécifiés pour chaque table :

Exemple :

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

Les adresses peuvent aussi être spécifiées en utilisant l'opérateur de négation (ou "not"). Voici un exemple :

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

La table goodguys contient alors toutes les adresses dans le réseau 192.0.2.0/24 excepté 192.0.2.5.

Notez que les noms de tables sont toujours entourées des caractères < et >.

Les tables peuvent aussi être peuplées à partir de fichiers texte contenant une liste d'adresses et de réseaux IP :

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

block in on fxp0 from <spammers> to any

Le fichier /etc/spammers doit contenir une liste d'adresses IP et/ou des blocs réseau en notation CIDR, une entrée par ligne. Toute ligne commençant par # est traitée comme un commentaire. Elle est donc ignorée.

Manipulation des Tables avec pfctl

Les tables peuvent être manipulées à la volée en utilisant pfctl(8). Par exemple, pour ajouter des entrées à la table <spammers> précédemment créée :
# pfctl -t spammers -Tadd 218.70.0.0/16

Ceci aura aussi pour effet de créer la table <spammers> si elle n'existe pas encore. Pour afficher le contenu d'une table :

# pfctl -t spammers -Tshow
L'argument -v peut aussi être utilisé avec - Tshow pour afficher des statistiques pour chaque entrée de la table. Pour supprimer des adresses de la table :
# pfctl -t spammers -Tdelete 218.70.0.0/16

Pour plus d'informations concernant la manipulation des tables avec pfctl, veuillez consulter pfctl(8).

Spécification des Adresses

Les hôtes peuvent être spécifiés par adresse IP ou par nom. Lorsque le nom est résolu en adresse IP, toutes les adresses IPv6 et IPv4 résultantes sont placées dans la table. Les adresses IP peuvent aussi être saisies dans la table en spécifiant le nom d'une interface valide ou le mot-clé self dans quel cas toutes les adresses IP assignées à l'interface ou aux interfaces configurées sur le pare- feu (si le mot-clé self est utilisé) seront insérées dans la table.

Recherche des Adresses Correspondantes

La recherche d'une adresse dans une table retournera l'entrée la plus proche de cette adresse. Ceci permet la création de tables telles que :
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

Tout paquet arrivant vers dc0 verra son adresse source recherchée dans la table <goodguys>:

[Précédent : Listes et Macros] [Index] [Suivant : Filtrage de Paquets]


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