Desde hace algún tiempo (Julio del 2003) el software de
filtrado de paquetes más eficiente de todos los que conozco (olé la imparcialidad) ha sido portado a
FreeBSD. Activarlo, dependiendo de la versión instalada, puede resultar no tan obvio como se desea.
Configurando kernel
En
FreeBSD 6.2 es necesaria una recompilación de kernel para activar
pf, con lo que debemos configurarlo primero. Copiamos el kernel activo (podemos mirar cual es con un
uname -a) en el nuevo:
# cd /usr/src/sys/i368/conf/
# cp GENERIC MYKERNEL
Y editamos
MYKERNEL con nuestro editor favorito, agregando las siguientes opciones:
# PF
device pf
device pflog
device pfsync
# ALTQ
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
Aprovechamos para habilitar también ALTQ (gestor de colas) por si algún día hiciera falta.
Compilando kernel
Una vez configurado toca compilar, dependiendo del procesador utilizado los tiempos cambiarán notablemente. Si tienes una máquina antigua no te desesperes:
# config MYKERNEL
# cd ../compile/MYKERNEL
# time make depend
real 0m39.811s
user 0m27.356s
sys 0m6.668s
# time make
real 11m45.862s
user 10m26.758s
sys 0m43.905s
# time make install
real 0m29.533s
user 0m5.498s
sys 0m1.832s
Activando pf
El siguiente paso antes de reiniciar la máquina con el nuevo kernel es la activación de
pf al inicio, para ello como siempre, tocamos
rc.conf:
pf_enable="YES" # Enable PF (load module if required)
pf_rules="/etc/pf.conf" # rules definition file for pf
pf_flags="" # additional flags for pfctl startup
pflog_enable="YES" # start pflogd(8)
pflog_logfile="/var/log/pflog" # where pflogd should store the logfile
pflog_flags="" # additional flags for pflogd startup
gateway_enable="YES" # if NAT or forwarding is active
Una vez reiniciado el equipo tendremos funcionando el sistema de filtrado de paquetes, solo queda configurar las reglas en
pf.conf(5)y familiarizarse con
pfctl(8).
Comentarios