Análisis de logs RPZ en bajo nivel (BIND)
Introducción
El análisis de logs en resolvers DNS con RPZ permite:
Detectar bloqueos (NXDOMAIN)
Identificar clientes (IPs origen)
Analizar comportamiento de tráfico
Detectar errores de acceso
Validar políticas de seguridad
Este documento está orientado al análisis práctico en entornos productivos.
Quick Start (para soporte)
Si ves en los logs:
NXDOMAIN→ bloqueo por RPZPASSTHRU→ permitido explícitamentedenied→ problema de ACL
Comandos rápidos:
tail -F dns_rpz.log | grep -F "NXDOMAIN"
tail -F dns_rpz.log | grep -F "<IP>"
tail -F dns_rpz.log | grep -F "<dominio>"
Truco
Siempre comenzar filtrando por IP del cliente.
Flujo básico de análisis
Cliente → Resolver (BIND + RPZ) → Internet
↓
Logs (dns_rpz.log)
Estructura de una línea de log RPZ
Ejemplo:
23-Feb-2026 04:50:25.520 client @0x7f136318ec00 45.191.233.142#15203 (cdn98.adtp1.xyz): rpz QNAME NXDOMAIN rewrite cdn98.adtp1.xyz/A/IN via cdn98.adtp1.xyz.planisys.threats
Desglose:
timestamp→ fecha y horaclient @0x...→ identificador interno de BIND45.191.233.142→ IP cliente#15203→ puerto origen(cdn98.adtp1.xyz)→ dominio consultadoNXDOMAIN rewrite→ acción aplicadaA/IN→ tipo de consultavia ...planisys.threats→ lista RPZ aplicada
Bloqueos (NXDOMAIN)
Identificación:
rpz QNAME NXDOMAIN rewrite
Interpretación:
El dominio fue bloqueado por RPZ
Se responde NXDOMAIN de forma intencional
Impacto:
La aplicación puede dejar de funcionar
Puede romper carga parcial de sitios
Puede generar tickets de usuario
Ejemplo:
(ads.nexage.com): rpz QNAME NXDOMAIN rewrite ads.nexage.com/A/IN via ads.nexage.com.planisys.threats
Nota
NXDOMAIN en RPZ no es un error, es una política aplicada.
Consultas permitidas (PASSTHRU)
Ejemplo:
rpz QNAME PASSTHRU rewrite www.google.com/A/IN via www.google.com.allowlist.rpz
Interpretación:
El dominio coincide con una regla RPZ
Está permitido explícitamente
No se bloquea
Casos típicos:
Google
Amazon
servicios críticos
Consultas denegadas (ACL)
Ejemplo:
client 172.31.18.61 (...) (api16-core.tiktokv.com): query (cache) 'api16-core.tiktokv.com/A/IN' denied (allow-query-cache did not match)
Interpretación:
El cliente no está autorizado
No cumple reglas ACL (ej: trusted_blocks)
Posibles causas:
Cliente mal configurado
NAT incorrecto
tráfico inesperado
Advertencia
Esto no es un bloqueo RPZ, es un rechazo del resolver.
Visualización en tiempo real
tail -F dns_rpz.log
Filtros útiles:
tail -F dns_rpz.log | grep -F "NXDOMAIN"
tail -F dns_rpz.log | grep -F "<IP>"
tail -F dns_rpz.log | grep -F "<dominio>"
Uso de grep -F
El parámetro -F indica búsqueda literal (sin regex).
Ventajas:
Mayor velocidad
Menor uso de CPU
Coincidencias exactas
Ejemplo incorrecto:
grep "45.191.233.142" dns_rpz.log
Ejemplo correcto:
grep -F "45.191.233.142" dns_rpz.log
Truco
En logs de alto volumen, usar siempre grep -F.
Rastreo de IPs cliente
grep -F "45.191.233.142" dns_rpz.log
Dominios consultados:
grep -F "45.191.233.142" dns_rpz.log | awk -F'[()]' '{print $2}' | sort | uniq -c | sort -nr
Top dominios bloqueados
awk -F'[()]' '{print $2}' dns_rpz.log | sort | uniq -c | sort -nr | head
Top IPs que generan tráfico
awk '{print $5}' dns_rpz.log | cut -d'#' -f1 | sort | uniq -c | sort -nr | head
Uso de screen para troubleshooting
Crear sesión:
screen -S dns-debug
Comandos básicos:
Ctrl + A + C # nueva ventana
Ctrl + A + N # siguiente
Ctrl + A + P # anterior
Ctrl + A + D # detach
Reconectar:
screen -r dns-debug
Ejemplo práctico:
Ventana 1:
tail -F dns_rpz.log
Ventana 2:
tail -F dns_rpz.log | grep -F "NXDOMAIN"
Ventana 3:
tail -F dns_rpz.log | grep -F "<IP>"
Caso práctico: usuario sin acceso
Obtener IP del cliente
Buscar en logs:
grep -F "<IP>" dns_rpz.log
Analizar:
NXDOMAIN→ bloqueo RPZdenied→ problema ACLsin resultados → problema externo a DNS
Detección de comportamiento sospechoso
Indicadores:
alto volumen de consultas
dominios aleatorios
múltiples NXDOMAIN
Ejemplo:
grep -F "<IP>" dns_rpz.log | wc -l
Consideraciones sobre logrotate
Problemas comunes:
pérdida de seguimiento con
tail -fprocesos colgados
alto consumo de CPU
Recomendaciones:
usar
tail -Fusar
grep -Fevitar regex complejas
Errores comunes
interpretar NXDOMAIN como error DNS
no usar
-Fen grepanalizar logs sin filtrar
usar comandos pesados en producción
Conclusión
El análisis de dns_rpz.log permite:
entender bloqueos en tiempo real
identificar clientes
detectar anomalías
validar políticas
El uso eficiente de tail -F, grep -F y screen es clave para operar en entornos de alto volumen sin impactar la infraestructura.