Cuando tenemos varios servidores DNS, bien porque la red es grande o porque servimos dominios de varias redes, podemos replicar la información de un servidor sobre el otro, y viceversa. Por defecto las transferencias de zona están abiertas a todo el mundo. Esto permite que cualquiera con una simple consulta a nuestro servidor DNS pueda obtener la lista completa de máquinas de nuestro dominio.
El comando "dig @ns.midominio.com midominio.com axfr" nos devolvería dicho listado.
Podemos restringir esto sólo a los servidores DNS secundarios, o bien denegar cualquier petición de transferencia.
En /etc/bind/named.conf.options, añadimos:
allow-transfer {"none";}; // Especificaremos manualmente en el fichero de zona a quien permitimos hacer transferencias |
Ahora agregaremos lo siguiente en la sección correspondiente a la zona primaria (master) que queramos replicar, dentro del fichero /etc/bind/named.conf.
No nos olvidemos de agregarlo también para la zona inversa |
allow-transfer { 65.143.132.173; common-allow-transfer; }; |
Con esta configuración, permitiremos acceso al DNS secundario 65.143.132.173, y a todos los contenidos en la acl "common-allow-transfer", que quedará definida de este modo al final de /etc/bind/named.conf:
acl common-allow-transfer { 213.60.165.90; 212.40.162.80; }; |
Además, es recomendable que el maestro notifique a los secundarios cuando se realicen cambios en sus registros. Para ello podemos añadir la siguiente línea en /etc/bind/named.conf.options:
notify yes; |
De esta forma serán notificados todos los servidores DNS que figuren en los ficheros de zona con el tipo NS. Si tenemos servidores secundarios que no figuran entre los registros NS de las zonas maestras, podemos forzar su notificación mediante añadiendo sus direcciones en la sección "also-notify":
also-notify { 213.65.125.91; 212.35.152.84; }; |
En los servidores secundarios definiremos cada zona tal cual la definimos en los maestros, pero con algún cambio:
zone "midominio.com" { type slave; file "/var/cache/bind/db.midominio.com"; masters { 65.143.132.171; }; }; |
Si bind tiene permisos de escritura en /var/cache/bind, ya no tendremos que hacer nada más. En cuanto reiniciemos bind, se copiarán los ficheros de zona y nuestro secundario comenzará a funcionar.
Por último y muy importante, para que los DNS secundarios actualicen sus zonas no llega con que en los maestros se añada o cambie algún registro, sino que es especialmente importante que cambie el nº de serie de la zona. Una buena práctica es poner la fecha en el campo para el número de serie, seguida de dos cifras que definirán el nº de cambio realizado en dicha fecha. Por ejemplo, este sería el segundo cambio realizado el 18 de agosto de 2005: |
2005081802 ; Serial |
Para que funcionen correctamente las transferencias, debemos dejar abierto el puerto tcp 53 del dns maestro. |