Problema
Al actualizar a una versión reciente de pfSense Plus, muchos administradores descubren que el nuevo Netgate Nexus controller no está disponible o que, una vez habilitado, el firewall muestra comportamientos extraños: caída del DNS, reglas de firewall que no se aplican o incluso bloqueos de tráfico. El patrón típico es: después de la actualización, el GUI tradicional sigue activo, pero la opción “Enable Nexus” está gris o, al activarla, el puerto 8443 no responde. En entornos de producción, donde la disponibilidad del DNS interno y la consistencia de las listas de bloqueo (Threatgate) son críticas, este tipo de interrupción puede generar alertas de monitoreo y tickets de soporte.
Causa
- Compatibilidad de hardware virtual – El controlador Nexus necesita información de la máquina física (CPU, número de sockets, etc.). En máquinas virtuales o en plataformas de terceros (Hyper‑V, Proxmox) esa información a veces falta, lo que impide que el proceso arranque.
- Configuración residual del GUI legado – Si la opción “Enable Nexus” se dejó desactivada en una versión anterior, los archivos de configuración (
config.xml) pueden contener referencias obsoletas que bloquean la carga del nuevo controlador. - Servicios colisionantes – CoreDNS y el antiguo
dnsmasqpueden intentar escuchar en el mismo puerto 53 si no se desactivan correctamente, provocando que el DNS resolver falle al iniciar Nexus. - Listas de Threatgate demasiado grandes – En dispositivos con poca RAM (≤ 2 GB), cargar listas de varios cientos de miles de dominios puede agotar la memoria y hacer que el proceso se termine antes de que el GUI quede disponible.
- Actualizaciones parciales – En algunos casos la actualización de paquetes (por ejemplo, Snort 3) se interrumpe, dejando dependencias rotas que impiden que el controlador arranque.
Solución
1. Verificar requisitos de hardware y entorno
- En hardware físico, confirma que la BIOS exponga al menos 2 CPU sockets y que el número de núcleos sea visible para el sistema operativo.
- En máquinas virtuales, añade los siguientes parámetros al descriptor de la VM (ejemplo para KVM/QEMU):
cpu: hostsockets: 2cores: 4feature: pmu=on
- Si la plataforma no permite exponer sockets, considera migrar a hardware real o a una VM que sí lo haga; de lo contrario, Nexus no podrá iniciarse.
2. Respaldar y limpiar la configuración
- Exportar la configuración actual desde System > Configuration > Backup & Restore y guarda el archivo
config-backup.xml. - Accede al shell (SSH o consola) y abre
config.xmlconvionano. Busca la sección<system>y elimina cualquier entrada relacionada conguique haga referencia alegacy. - Añade o verifica la siguiente clave bajo
<system>:
<enable_nexus>1</enable_nexus>
- Guarda y cierra el archivo. Reinicia el firewall para que el cambio tome efecto:
pfSsh.php playback reboot
3. Desactivar servicios conflictivos
Ejecuta los siguientes comandos para asegurarte de que dnsmasq y unbound no compitan con CoreDNS:
# Desactivar dnsmasq si está activo
service dnsmasq stop
sysrc dnsmasq_enable="NO"
# Desactivar el resolver DNS tradicional
service unbound stop
sysrc unbound_enable="NO"
Una vez desactivados, Nexus iniciará su propio CoreDNS sin colisiones de puertos.
4. Optimizar listas de Threatgate
- Divide listas muy grandes en varios archivos de menos de 100 000 entradas cada uno.
- Usa la opción “Load on demand” dentro Services > Threatgate para que solo se carguen los bloques necesarios en memoria.
- En dispositivos con menos de 2 GB de RAM, limita el número total de entradas a 250 000.
5. Habilitar y validar el controlador
- Desde la GUI tradicional, navega a System > Advanced > Netgate Nexus y marca Enable Nexus.
- Confirma que el puerto 8443 está escuchando:
sockstat -4 -l | grep 8443
- Si el proceso no aparece, revisa el log de Nexus:
cat /var/log/nexus.log | tail -n 50
Los mensajes típicos de error (missing cpu topology, out of memory) indican cuál de los pasos anteriores necesita ajuste.
6. Reiniciar y validar la funcionalidad
pfSsh.php playback reboot
Una vez el firewall haya arrancado, abre un navegador y accede a https://<IP_DEL_FIREWALL>:8443. Acepta el certificado autofirmado y verifica que el nuevo GUI carga sin errores.
Cuándo aplicar esta solución
- Síntomas: GUI legado sigue activo después de la actualización, el puerto 8443 no responde, o los logs muestran fallos de CoreDNS/Threatgate.
- Entorno: pfSense Plus 26.xx o superior, con intención de usar las funcionalidades exclusivas de Nexus (CoreDNS, Threatgate, Snort 3).
- No aplica: Cuando el firewall se ejecuta en hardware que no permite exponer sockets (ej. appliances de bajo coste sin BIOS) o cuando el objetivo es permanecer en la GUI PHP por motivos de compatibilidad con scripts legacy.
Código
# Paso 1: Respaldar configuración
cp /conf/config.xml /conf/config-backup-$(date +%F).xml
# Paso 2: Habilitar Nexus en config.xml (ejemplo con xmlstarlet)
xmlstarlet ed -L -u "/system/enable_nexus" -v "1" /conf/config.xml
# Paso 3: Desactivar servicios conflictivos
service dnsmasq stop && sysrc dnsmasq_enable="NO"
service unbound stop && sysrc unbound_enable="NO"
# Paso 4: Reiniciar
pfSsh.php playback reboot
Verificación
- Puerto 8443 activo:
sockstat -4 -l | grep 8443debe devolver una línea connexus. - Acceso al GUI: Navegador →
https://<IP>:8443. La pantalla de inicio debe mostrar el logo de Netgate Nexus y la barra lateral con CoreDNS, Threatgate y Snort 3. - DNS funcional: Desde un cliente, ejecuta
dig @<IP_FIREWALL> example.com. La respuesta debe provenir de CoreDNS (TTL bajo, sin errores). - Reglas de Threatgate: Crea una regla de alias que incluya una lista de dominios y verifica que el tráfico a esos dominios sea bloqueado con
tcpdump -i em0 host <dominio>.
Notas adicionales
- Backup obligatorio: Siempre guarda una copia de
config.xmlantes de tocarla; una restauración errónea puede dejar el firewall inoperable. - Máquinas virtuales: Si el controlador sigue sin arrancar, revisa los logs de la hipervisor para asegurarte de que la VM está recibiendo la información de CPU correcta. Algunas versiones de VMware requieren la opción
hypervisor.cpuid.v0 = "FALSE". - Actualizaciones futuras: Netgate suele lanzar parches que mejoran la detección de entornos virtuales; mantén el firmware actualizado para evitar incompatibilidades.
- Monitorización: Añade una alerta en tu sistema de monitoreo (Zabbix, Prometheus) que verifique la escucha en el puerto 8443 y la salud del proceso
nexus. - Desactivación temporal: Si necesitas volver al GUI legado, basta con revertir el valor
<enable_nexus>a0y reiniciar; la configuración anterior del GUI PHP se restaurará automáticamente.