DNS: configurar bind como Forward Only

Si queremos que nuestro servidor DNS actúe a modo de proxy DNS y reenviar todas las peticiones que reciba a otros servidores DNS debemos configurarlo como «Forward Only«. Esto tiene todos los beneficios que puede darte un proxy y otros como por ejemplo, si tenemos Bind configurado con vistas, especificar el forwarding para la vista externa pero mantener las consultas a las zonas locales en el propio DNS.

Únicamente hay que prestar atención a dos directivas en la sección de opciones (options), marcadas en negrita:

options {
listen-on port 53 { 127.0.0.1; 10.0.0.100; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
 allow-query { redes_privadas; }; forward only;
forwarders { 8.8.8.8; };
};

La directiva «forward» permite los valores «only» y «first». Si especificamos «only» todas las consultas serán reenviadas a los nameserver especificados después. Si ponemos «first» se realizará un primer intento contra los NS forward, si estos no responden la consulta se intentará resolver en local.

Después, en forwarders podemos especificar los servidores DNS contra los que vamos a enrutar las peticiones DNS. En este caso he configurado el de google, 8.8.8.8.

Tras reiniciar named, podemos verificar (con un tcpdump por ejemplo) que las consultas efectivamente se están enrutando a esos DNS:

# dig @localhost www.rm-rf.es
...
...

Y efectivamente vemos el tráfico en el tcpdump contra el NS de google:

# tcpdump -n -s 1500 -i eth0 udp port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes
23:19:21.230065 IP 192.168.1.101.22581 > 8.8.8.8.domain: 31993+ [1au] A? www.rm-rf.es. (41)
23:19:21.371260 IP 8.8.8.8.domain > 192.168.1.101.22581: 31993 3/0/1 CNAME rm-rf.es., A 93.93.112.55, RRSIG (239)
23:19:38.683764 IP 192.168.1.128.57988 > 192.168.1.1.domain: 64751+ A? rm-rf.es. (26)
23:19:38.722404 IP 192.168.1.1.domain > 192.168.1.128.57988: 64751 1/0/0 A 93.93.112.55 (42)

6 comentarios en “DNS: configurar bind como Forward Only

  1. de este modo se redirecciona todo el trafico? es decir, incluso para una zona master de ese DNS pasara el query a los forwarders?

    un saludo

  2. Buen post ,

    Creo que mi comentario llega demasiado tarde pero me gustaría saber si tengo un servidor en mi red local y quiero que las peticiones http sean reenviadas pero que mi dns local pueda resolver un dominio local (Instalaré apache) ¿ésta configuración me permite hacer lo anterior?

    Saludos.

    • Perdón pero creo que estás mezclando términos. Para redirigir HTTP, hay varios métodos para hacerlo, pero creo que no tiene nada que ver con este post.

      Para hacer que tu DNS resuelva un dominio «local», sólo configúralo correctamente a tal efecto. Sinceramente no entiendo tu pregunta.

      Saludos.

  3. Esta configuración me permite resolver los nombres locales y a la vez los externos?. Tengo un servidor dns01 en mi red local y quiero que siga resolviendo los nombres en mi dominio, sin embargo cdo reciba la peticion de un nombre que no maneje lo reenvie hacia el dns02 especificado en el forwarder (q este servidor si conoce como resolver ese nombre).

Comments are closed.