Admin Libre - Administración de sistemas y redes

Router firewall con OpenBSD
Por Francisco Gaitán el 1 de Abril de 2022

Tabla de Contenidos

Para configurar este router con funciones de firewall usaré OpenBSD en un EdgeRouter Lite, un pequeño router de bajo consumo con tres interfaces Gigabit ethernet:

  • cnmac0 va conectado al cablemodem y en modo cliente DHCP
  • cnmac1 y cnmac2 están configurados como un puente de red
  • cnmac0, cnmac1 y cnmac2 corresponden a eth0, eth1 y eth2 en la carcasa del router

Este router se encargará del enrutado de toda la red, tanto del ordenador conectado directamente al router como los clientes del punto de acceso inalámbrico que va conectado en cnmac2, de forma que se evita el doble NAT y todos los equipos conectados son accesibles entre sí. En el caso de que quieras separar la red LAN de la red Wifi te recomiendo que leas el artículo Separación de redes en un router OpenBSD.

La versión de OpenBSD que he utilizado es la 7.1-current del día 20 de Marzo de 2022.

Lectura recomendada

Configuración del puente de red

Entre las interfaces cnmac1 y cnmac2 haré un puente de red usando veb(4) / vport(4), una implementación software de un switch ethernet que es el reemplazo moderno de bridge(4) y vether(4), con mayor rendimiento y más adecuado para trabajar en paralelo con múltiples CPUs de forma concurrente.

/etc/hostname.vport0
inet 192.168.10.1 255.255.255.0 192.168.0.255
up
/etc/hostname.veb0
add vport0
add cnmac1
add cnmac2
up
/etc/hostname.cnmac1
up
/etc/hostname.cnmac2
up

Configuración de Packet Filter

Esta es una configuración básica con política de denegación por defecto, permitiendo conexiones salientes y tráfico interno de la red:

int_if = "vport0"
set block-policy drop
set loginterface egress
set skip on lo

match in all scrub (no-df random-id max-mss 1440)
match out on egress inet from !(egress:network) to any nat-to (egress:0)
antispoof quick for egress
block in quick log from { no-route urpf-failed }

block log all 
pass out inet
pass in on $int_if inet

Para cargarlo:

# pfctl -f /etc/pf.conf

Configuración del servidor DHCP

Se usará una configuración similar a la del ejemplo de la documentación salvo que la interfaz donde escuchará el servidor será vport0:

/etc/rc.conf.local
[...]
dhcpd_flags="vport0"
[...]

Encontrarás una configuración completa de dhcpd en Separación de redes con un router OpenBSD.

Configuración de reenvío de IP

# echo 'net.inet.ip.forwarding=1' >> /etc/sysctl.conf
# sysctl net.inet.ip.forwarding=1

Configuración en modo sólo lectura

Este artículo indica cómo configurar OpenBSD con las particiones de disco en modo sólo lectura, haciendo el sistema más estable al reiniciar tras un apagón.

Destacado

Contacto

Si has encontrado algún error o quieres comentarme algo mándame un correo a webmaster@adminlibre.org