[OpenBSD]

[Anterior: Listas y Macros] [Contenidos] [Siguiente: Filtrado de Paquetes]

PF: Tablas


Índice de Contenidos


Introducción

Una tabla se usa para contener un grupo de direcciones de IPv4 y/o IPv6. Las búsquedas (lookups) en una tabla son muy rápidas y consumen menos memoria y recursos del procesador que las listas. Por ello, una tabla es ideal para contener un grupo grande de direcciones, ya que el tiempo que tarda una búsqueda en una tabla con 50.000 direcciones es poco más que el tiempo que se tarda para otra con 50 direcciones. Las tablas se pueden usar de las siguientes formas:

Las tablas se crean bien en pf.conf, o mediante la orden pfctl(8).

Configuración

En pf.conf, las tablas se crean usando la directiva table. Se pueden especificar los siguientes atributos para cada tabla:

Ejemplo:

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

También se pueden especificar direcciones usando el modificador de negación, "!" (o "not"), como:

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

Ahora, en la tabla goodguys concordarán todas las direcciones en la red 192.0.2.0/24 excepto la dirección 192.0.2.5.

Nótese que los nombres de las tablas siempre van entre < >.

En las tablas también se pueden incluir ficheros de texto que contengan una lista de direcciones IP y redes:

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

block in on fxp0 from <spammers> to any

El fichero /etc/spammers contendría una lista de direcciones IP y/o de bloques de red CIDR, una/o por línea. Cualquier línea que empiece con un carácter # se tratará como un comentario y no se procesará.

Manipulación con pfctl

Las tablas se pueden manipular sobre la marcha usando pfctl(8). Por ejemplo, para añdir entradas a la tabla <spammers> que se ha creado antes:

# pfctl -t spammers -Tadd 218.70.0.0/16

Esto también creará la tabla <spammers> si no existía anteriormente. Para ver un listado de las direcciones en una tabla:

# pfctl -t spammers -Tshow

El argumento -v también se puede usar con -Tshow para mostrar estadísticas por cada entrada de la tabla. Para eliminar direcciones de una tabla:

# pfctl -t spammers -Tdelete 218.70.0.0/16

Para más información sobre la manipulación de tablas con pfctl, véase pfctl(8).

Especificación de Direcciones

Además de especificarse por la dirección IP, los anfitriones (hosts) también se pueden especificar por su nombre de anfitrión (hostname). Cuando el nombre de anfitrión se resuelve en una dirección IP, todas las direcciones IPv4 y IPv6 resultantes se introducen en la tabla. Las direcciones IP también se pueden introducir en una tabla especificando un nombre de interfaz válido o la clave self, en cuyo caso se añadirán a la tabla todas las direcciones asignadas a la interfaz o interfaces.

Concordancia de Direcciones

La búsqueda de una dirección en una tabla devolverá la entrada que concuerde con más precisión. Esto permite la creación de tablas como:

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

La dirección de origen de cualquier paquete que entre a través de dc0 tendrá una concordancia en la tabla <goodguys>:

[Anterior: Listas y Macros] [Contenidos] [Siguiente: Filtrado de Paquetes]


[Índice] www@openbsd.org
Originally [OpenBSD: tables.html,v 1.9 ]
$OpenBSD: tables.html,v 1.8 2004/01/04 22:29:12 horacio Exp $
$Translation: tables.html,v 1.9 2004/01/04 21:32:07 horacio Exp $