Balanceador de carga DNS [Domain Name System]. Herramienta de balanceo de carga para tráfico DNS con gran capacidad de detección de ataques DoS y abusos del servicio DNS. Recibe consultas DNS y las distribuye de manera eficiente a uno o más servidores DNS, garantizando que los servidores lentos o sobrecargados reciban menos consultas.
# dnsdist --local 127.0.0.1:5353 --backend 192.168.1.1:53 --backend 192.168.1.2:53
1.-
Balanceo de carga con detección de servidores lentos
# dnsdist -e
> newServer("192.168.1.1", { order = 1, qps = 100 })
> newServer("192.168.1.2", { order = 2, qps = 50 })
> setServerPolicy("leastOutstanding")
> addAction(RegexRule(".*google.com"), DropAction())
newServer: añade servidores backend con una prioridad específica (order) y una limitación de consultas por segundo (qps).
setServerPolicy("leastOutstanding"): utiliza la política de balanceo basada en el servidor con menos consultas pendientes.
addAction: añade una regla para bloquear las consultas a google.com.
2.-
Configurar dnsdist para detectar y bloquear ataques DoS
# dnsdist -e
> addDynBlockRule(ExceededQPS(50), 60)
addDynBlockRule: crea una regla dinámica para bloquear IPs que envíen más de 50 consultas por segundo [QPS] durante 60 segundos.
3.-
Reenviar consultas solo a servidores específicos
# dnsdist -e
> addAction(RegexRule(".*example.com"), PoolAction("pool1"))
> newServer("192.168.1.10", { pool = "pool1" })
Crea un grupo (pool1) para consultas dirigidas a example.com.
Sólo el servidor 192.168.1.10 manejará dichas consultas.
4.-
Supervisar el estado del tráfico
# dnsdist -e
> showServers()
> showQPS()
> topQueries()
showServers(): muestra el estado actual de los servidores backend (latencia, consultas, etc.).
showQPS(): muestra las consultas por segundo.
topQueries(): muestra las consultas más frecuentes.