Control parental: router casero con OpenBSD

Fuentes: My home network observes bedtime with OpenBSD and pf

Este artículo describe cómo configurar un router doméstico con OpenBSD y el firewall pf para restringir el acceso a Internet durante la hora de dormir, de forma automática y con excepciones. El autor, frustrado con las limitaciones de un router comercial (Ubiquiti USG-3P), optó por construir su propio router utilizando un pequeño ordenador industrial Qotom Q305p con un procesador Celeron, 4GB de RAM y dos puertos Gigabit Ethernet, todo por un costo de $60. La elección de OpenBSD se justifica por su transparencia y la posibilidad de aprender sobre su funcionamiento interno.

La configuración inicial se basa en la guía del OpenBSD Handbook para crear un router básico, incluyendo la configuración de IP forwarding, interfaces de red, DHCP (con dhcpd), DNS caching (con unbound) y NAT (con pf). El núcleo del sistema es pf, un potente firewall integrado en el kernel de OpenBSD. La configuración de pf se realiza a través del archivo /etc/pf.conf, bloqueando todo el tráfico por defecto y permitiendo selectivamente el acceso según reglas definidas.

La clave para la restricción nocturna reside en el uso de tablas de direcciones IP. La tabla <leased_ips> se actualiza automáticamente por dhcpd con las direcciones IP asignadas a los dispositivos de la red local. La tabla <bedtime_exempt> se mantiene manualmente con una lista de direcciones IP de dispositivos que necesitan acceso a Internet durante la noche (por ejemplo, servidores para backups y actualizaciones). Durante la hora de dormir, pf solo permite el tráfico TCP desde las direcciones IP listadas en <bedtime_exempt>. Esto se logra mediante el uso de 'anchors', que permiten cambiar dinámicamente conjuntos de reglas sin reiniciar el firewall.

El autor también experimenta con la configuración de DNS local utilizando unbound para crear un 'DNS sinkhole' y asignar nombres de dominio locales a los dispositivos de la red. El sistema, aunque funcional, requiere ajustes adicionales para permitir el funcionamiento de ciertas aplicaciones como Discord y Roblox. La configuración completa, incluyendo los archivos de configuración, está disponible en un repositorio de GitHub. El artículo destaca la flexibilidad y la naturaleza cohesiva del sistema OpenBSD, permitiendo un control granular sobre la red doméstica y un aprendizaje profundo sobre su funcionamiento interno.