Pequeño servidor local de nombres DNS autoritativo, diseñado para gestionar listas de bloqueo basadas en DNS [DNSBL]. Puede gestionar listas de bloqueo basadas en IP y en nombres. Ver rbl-check.
$ rbldnsd -b 127.0.0.1 -n misbloqueos:ip4tset:bloqueados.txt
-b address [Bind] --> Le dice a rbldnsd en qué IP y puerto escuchar, por defecto puerto 53.
zonespec [Especificación de zona] --> define qué zona DNS va a servir [misbloqueos], con qué tipo de dataset [ip4tset] y desde qué archivo cargar los datos [bloqueados.txt].
$ rbldnsd -u rbldns:rbldns -r /var/lib/rbldns-chroot -w /zones -b 0.0.0.0 -n mi-lista:ip4trie:bloqueados.txt
-u user[:group] --> Cambia al usuario rbldns o el creado tras arrancar como root para vincularse al puerto 53 [privilegiado]. Si alguien vulnera el servicio, no tendrá permisos de root.
-r rootdir --> Crea un entorno virtual donde el proceso solo ve ese directorio sin acceso al resto del sistema. Es el equivalente a encerrar al servicio en una jaula.
-w workdir --> Directorio de trabajo donde rbldnsd buscará los archivos de zona si no se usa rutas absolutas.
$ rbldnsd -b 0.0.0.0 -n mis-ips:ip4trie:ips-bloqueadas.txt mis-dominios:dnset:dominios-bloqueados.txt
Algunas opciones útiles:
-c 60 --> comprueba cada 60 segundos si el archivo de datos cambió y lo recarga en caliente
-f --> Mientras recarga la zona, que puede tener cientos de miles de entradas, un proceso hijo atiende las consultas para que no haya downtime pero duplica el uso de RAM.
-q --> Carga las zonas después de pasar a segundo plano. Útil para que el script de inicio no se quede colgado esperando a que cargue una lista enorme.
-a --> Omite la sección AUTH en respuestas regulares. Hace las respuestas más pequeñas y evita dar información extra sobre la infraestructura DNS.
-A --> Lo contrario de -a, incluye sección AUTH en cada respuesta.
-v --> Oculta la versión en respuestas version.bind.
-vv --> rechaza directamente esas consultas. Nadie podrá sondear la versión que se usa.