Anterior Siguiente Inicio

Servidor DNS


Servidor Básico

Para montar un servidor dns básico instalaremos el paquete bind9, y posteriormente editaremos /etc/bind/named.conf

Si queremos que nuestro dns reenvíe a otros servidores las peticiones que no tenga en su base de datos, nos aseguraremos de tener unas líneas como estas.


forwarders {
                195.235.113.3;
                62.36.220.77;
         };

Ahora agregaremos nuestra zona dns:

zone "midominio.com" {
        type master;
        file "/var/cache/bind/midominio.com";
        };

Y editamos /var/cache/bind/midominio.com

;Zone file for midominio.com

$ttl 38400
$ORIGIN midominio.com
@               IN      SOA     ns.midominio.com. administrador.midominio.com. (
1                 ; Serial
604800       ; Refresh
86400         ; Retry
2419200     ; Expire
604800 )     ; Default TTL


; We can use host.midominio.com. or host
;If we use host.midominio.com without the end period, named will extend it to host.midominio.com.midominio.com
                        ;ns.midominio.com.
                        NS      ns
                        ;mail.midominio.com.
                        MX      10      mail


localhost           A       127.0.0.1
ns                      A       192.168.0.1
pluto                  A       192.168.0.1
NULL                TXT   Servidor


Resolución inversa

La resolución inversa es necesaria en muchos casos, ya que muchos servidores de ftp, news, irc e incluso algunos servidores http no aceptarán conexiones de máquinas de las cuales no son capaces de resolver el nombre.
Crearemos un archivo para cada subred. Por ejemplo así:

; BIND reverse data file for 192.168.100.0
; /var/cache/bind/192.168.100.db
;
@     IN     SOA     foo.org. root.foo.org. (
                        1998121401 ; Serial
                        604800 ; Refresh
                        86400 ; Retry
                        2419200 ; Expire
                        604800 ) ; Default TTL

IN     NS     dns.foo.org.

10     IN     PTR     www.foo.org.
20     IN     PTR     news.foo.org.
30     IN     PTR     mail.foo.org.

El . al final de cada nombre de dominio es obligatorio, pues de lo contrario bind hará cosas raras.
Ahora añadiremos este dominio en el fichero de configuración de bind:

zone "100.168.192.in-addr.arpa" {
type master;
file "192.168.100.rev";
};


Transferencias de zona

Para montar un dns secundario, debemos transferir los ficheros de zona desde el dns primario. Para ello permitimos a los dns secundarios acceder a bind en el primario, añadiendo esto en las secciones de zona:
Si especificamos la ip dentro de allow-transfer, se permitirá a esta ip copiar los ficheros de zona para esta zona. Pero si queremos tener varios secundarios, es más sencillo definir una acl, en este caso "common-allow-transfer", y al final de named.conf especificaremos las ip's permitidas mediante esta acl.

allow-transfer {
                65.143.132.173;
                common-allow-transfer;
        };

----------------------------------------------------------
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 línea:

notify yes;

en la sección de opciones del fichero de configuración de bind, de forma que serán notificados todos los servidores dns que figuren en los ficheros de zona con el tipo NS
Pero si tenemos servidores secundarios que no están entre los registros de cada dominio, podemos usar lo siguiente para que sean notificados los dns que queramos cuando cambie cualquier zona.

also-notify {
            213.60.165.90;
            212.40.162.80;

            };

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

Ahora en los servidores secundarios definiremos una zona tal cual la definimos en los maestros, pero con algún cambio:

zone "midominio.com" {
        type slave;
        file "/var/cache/bind/midominio.com";
        masters { 65.143.132.171; };
        allow-query { a.b.c.d; };   # opcional, para especificar a quienes permitimos realizar consultas
        };

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.

NOTA: Para que funcionen correctamente las transferencias, debemos dejar abierto el puerto tcp 53 del dns maestro.

Para poder configurar un subdominio, debemos crear su zona tal y como se hizo con su dominio padre. Además, en el dominio padre debemos especificar el servidor de nombres para dicho subdomionio, de este modo (agregamos esta línea al final de la zona del dominio principal):

;podemos usar hermes.vigowireless.wl. o lo siguiente, ya que bind autocompletará el FQDN:
hermes          IN      NS      ns.hermes.vigowireless.wl.

ns.hermes.vigowireless.wl.      IN      A       10.34.92.2


Errores comunes:
1.- Si tenemos habilitados forwarders, puede que nuestro bind mande las consultas sobre subdominios a los forwarders. Simplemente desactivándolos ya funcionará correctamente
2.- Si se da el caso de que consultando desde una red ajena a al dns acerca de un dominio/subdominio que esté en otro servidor dns, es posible que no obtengamos respuesta, aunque sí un "authority section". Ello se soluciona permitiendo "allow recursion" en la configuración de bind.
Ejemplo práctico: Consultar desde 10.34.93.0/28 al DNS ubicado en 10.34.92.2 (vigowireless.wl) acerca del subdominio hermes.vigowireless.wl. Dicho subdominio está definido en otro servidor DNS, por lo que si no permitimos recursividad, 10.34.92.2 no nos dará ninguna respuesta, aunque sí nos dirá quien es el DNS encargado.


Anterior Siguiente Inicio