Problema
Los administradores de firewalls basados en pfSense Plus empiezan a recibir la versión Release Candidate 26.07, que introduce el controlador Netgate Nexus. El nuevo GUI está escrito en Go y reemplaza al legado PHP, pero su activación no es automática. En entornos de producción o laboratorios de pruebas, la transición al Nexus suele generar:
- Inaccesibilidad al puerto 8443 después de habilitar el controlador.
- Fallos en servicios dependientes (DNS Resolver, IPsec, OpenVPN) que siguen usando la pila antigua.
- Incompatibilidades con máquinas virtuales que no exponen la información de hardware requerida por Nexus.
- Dificultad para validar que componentes como CoreDNS, Threatgate o Snort v3 están realmente activos.
El reto es habilitar el Nexus de forma segura, validar su correcto funcionamiento y volver atrás sin interrumpir el tráfico crítico.
Causa
-
Activación manual incompleta – El controlador Nexus requiere que se habilite en System → Advanced → Netgate Nexus y que el firewall se reinicie. Si el reinicio falla o se omite, el proceso queda a medio camino y el GUI no responde.
-
Entorno virtualizado sin datos de hardware – Nexus necesita información de la CPU, número de núcleos y arquitectura para decidir la cantidad de hilos que asigna a CoreDNS y Threatgate. En hypervisores que ocultan estos datos (por ejemplo, algunos contenedores LXC o VMs con CPU pinning), el controlador se queda en modo “fallback” y no abre el puerto 8443.
-
Conflicto de puertos – Si otro servicio ya está escuchando en 8443 (por ejemplo, un proxy inverso o una instancia previa de Nexus), el nuevo GUI no puede enlazarse y el firewall queda sin acceso web.
-
Persistencia de configuraciones antiguas – Configuraciones de DNS Resolver, DHCP o OpenVPN que todavía apuntan a los procesos PHP pueden impedir que los nuevos componentes tomen el control, generando errores de arranque.
Solución
1. Preparación del entorno
- Verificar que el firewall tenga al menos 2 CPU y 2 GB de RAM; Nexus ajusta sus hilos en función de estos recursos.
- Confirmar que el puerto 8443/TCP esté libre. En caso de conflicto, liberar o reconfigurar el servicio que lo ocupa.
- Si se ejecuta en una VM, habilitar la exposición de la información de CPU al huésped (por ejemplo,
hypervisor -> CPU model = hosten VirtualBox o--cpu-model hosten QEMU/KVM).
2. Habilitar Netgate Nexus
- Acceder al GUI clásico (PHP) en
https://<IP>/. - Navegar a System → Advanced → Netgate Nexus.
- Marcar Enable Netgate Nexus y guardar.
- Reiniciar el firewall desde Diagnostics → Reboot o mediante CLI (
pfctl -d && reboot).
3. Verificar que el nuevo GUI esté activo
- Conectar a
https://<IP>:8443/. El certificado será auto‑firmado; aceptar la excepción del navegador. - La pantalla de login mostrará la marca Netgate Nexus y ofrecerá acceso a los módulos CoreDNS, Threatgate y Snort v3.
4. Validar componentes críticos
CoreDNS
- Crear una zona de prueba en Services → CoreDNS y añadir un registro A.
- Desde un cliente, ejecutar
dig @<IP> test.example.comy comprobar que la respuesta proviene del puerto 53 del firewall.
Threatgate
- Importar una lista pública de IP maliciosas (por ejemplo,
https://rules.emergingthreats.net/blockrules/emerging-Block-IPs.txt) mediante Services → Threatgate. - Crear una regla de firewall que bloquee la lista y probar con
ping -c 1 <malicious_ip>; el ping debe ser bloqueado sin latencia significativa.
Snort v3
- Activar el motor en Services → Snort y cargar el conjunto de reglas “community”.
- Generar tráfico de prueba (por ejemplo, un escaneo nmap) y observar que los eventos aparecen en el log de Snort.
5. Reversión segura (si algo falla)
- Acceder al CLI mediante consola o SSH.
- Desactivar Nexus editando
/conf/config.xmly cambiando<netgate_nexus>enabled</netgate_nexus>adisabled, o usar el comando:
pfSsh.php playback disable_nexus
- Reiniciar el firewall. El GUI clásico volverá a estar disponible en el puerto 443.
Cuándo aplicar esta solución
- Entorno de pruebas: siempre que se quiera validar la nueva arquitectura antes de un despliegue en producción.
- Implementaciones nuevas: al instalar pfSense Plus 26.07 en hardware dedicado que cumpla los requisitos mínimos.
- Actualizaciones graduales: cuando se necesite migrar gradualmente los servicios críticos (DNS, IPS) al nuevo stack sin interrumpir la operación.
No aplicar si:
- El firewall está bajo alta carga y no se puede permitir un reinicio inmediato.
- Se ejecuta en un hypervisor que no permite exponer la información de CPU (ej. algunos entornos de contenedores sin privilegios).
- Se depende de plugins PHP no compatibles con Nexus.
Código
# Verificar puerto 8443 libre
netstat -an | grep 8443
# Habilitar Nexus desde CLI (alternativa a la GUI)
pfSsh.php playback enable_nexus
# Reiniciar firewall
pfctl -d && reboot
Verificación
- Acceso al GUI Nexus: abrir
https://<IP>:8443/y confirmar que la página carga sin errores de certificado. - CoreDNS:
dig @<IP> test.example.com→ respuesta con TTL y dirección configurada. - Threatgate:
ping -c 1 <malicious_ip>→ sin respuesta y sin salto de paquetes. - Snort v3:
tcpdump -i <interface> -nn -vvv port 443mientras se genera tráfico sospechoso; observar eventos en Status → System Logs → Snort.
Si alguno de los pasos falla, revisar los logs en /var/log/nexus/ y /var/log/snort/ para identificar errores de inicialización.
Notas adicionales
- En hardware limitado, ajustar los hilos de CoreDNS y Threatgate desde System → Advanced → Netgate Nexus → Advanced Settings puede evitar saturación de CPU.
- El certificado auto‑firmado de Nexus expira cada 90 días; programar su renovación o reemplazo por uno propio en entornos productivos.
- Algunas extensiones de terceros (por ejemplo, paquetes de captura de paquetes) todavía dependen del GUI PHP y pueden dejar de funcionar hasta que se migren a la API de Nexus.
- Mantener una copia de seguridad del archivo
config.xmlantes de cualquier cambio estructural; una restauración rápida evita pérdida de configuración.