lunes, 17 de marzo de 2008

Servidor DNS en Linux

Publicado por Covent en 13:59 ,
Con los siguientes pasos y explicaciones cualquiera con unos mínimos conocimientos podrá configurar un servicio DNS en una máquina linux. En este caso utilizaré Ubuntu:

Introducción

Un servidor DNS permite una asociación directa entre el hostname y una ip.

Ejemplo: Si tenemos una máquina que se llama Servidor10 con la ip 192.168.1.10 con un servicio web podremos hacer lo siguiente, ya que obtendremos la misma respuesta:

Desde consola:

ping servidor10
ping 192.168.1.10

En un navegador:

http://192.168.1.10
http://servidor10

En internet cada servidor tiene una ip, que esta asociada a un hostname que quedan englobados dentro de un dominio.

Ejemplo:

www.google.com => www es el servidor web

gmail.google.com => gmail es el servidor



¿Cómo trabaja?

El servidor DNS recibe una petición de resolución, este consulta en su base de datos y devuelve una respuesta. Así de sencillo.


Términos que hay que conocer

Zona de búsqueda directa: Las resoluciones devuelven una ip
Zona de búsqueda inversa: Las resoluciones devuelven un nombre
Reenviador: Los dns locales consultan a ese dns sobre otros dominios


Instalación de la aplicación. Bind

# sudo apt-get install bind9

===================================================================

-Configuración como DNS Maestro. Nuestro servidor DNS maestro para nuestro dominio ficticio interno 'empresa.com' será capaz de resolver peticiones internas de nombres de este dominio, tanto de forma directa como de forma inversa, es decir, si recibe una consulta acerca de quién es contabilidadpc.empresa.com deberá devolver su IP, pongamos por ejemplo 192.168.1.107. Si la consulta es una consulta DNS inversa acerca de quién es 192.168.1.107, deberá responder contabilidadpc.empresa.com. Por ello deberemos añadir en el archivo /etc/bind/named.conf.local la especificación de maestro para el dominio y para la resolución inversa, por ejemplo:




// Añadir en /etc/bind/named.conf.local
// Archivo para búsquedas directas
zone "empresa.com" {
type master;
file "/etc/bind/empresa.db";
};
// Archivo para búsquedas inversas
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/192.rev";
};

Ahora habrá que crear los dos archivos mencionados empresa.db que tendrá los datos para la búsqueda directa y 192.rev que servirá para la búsqueda inversa.

empresa.db






; BIND data file for empresa.com
;
@ IN SOA empresa.com. root.empresa.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Default TTL

IN NS dns.empresa.com.
IN MX 10 correo.empresa.com.

contabilidadpc1 IN A 192.168.1.101
contabilidadpc2 IN A 192.168.1.102
contabilidadpc3 IN A 192.168.1.103
contabilidadpc4 IN A 192.168.1.104
contabilidadpc5 IN A 192.168.1.105
contabilidadpc6 IN A 192.168.1.106
contabilidadpc7 IN A 192.168.1.107
contabilidadpc8 IN A 192.168.1.108
contabilidadpc9 IN A 192.168.1.109
contabilidadpc IN A 192.168.1.110
www IN A 192.168.1.111
dns IN A 192.168.1.112
mail IN A 192.168.1.112

Las primeras líneas son unos parámetros relacionados con la actualización del DNS (número de
serie y periodos de actuación). Las dos siguientes líneas indican quién es el servidor primario (NS
= Name Server) y quien procesa el correo electrónico del dominio (MX = Mail eXchange). Las
siguentes líneas especifican las IPs de los distintos PCs componentes del dominio (A = Address).
Si olvidamos algún punto y coma, dará errores y no funcionará correctamente. Para revisar los
archivos disponemos de los comandos named-checkconf y named-checkzone que analizan que esté correcta la sintaxis de los mismos.

192.rev





; BIND reverse data file for 192.168.1.0
;
@ IN SOA miempresa.com. root.miempresa.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Default TTL
IN NS dns.empresa.com.
101 IN PTR contabilidadpc1.empresa.com.
102 IN PTR contabilidadpc2.empresa.com.
103 IN PTR contabilidadpc3.empresa.com.
104 IN PTR contabilidadpc4.empresa.com.
105 IN PTR contabilidadpc5.empresa.com.
106 IN PTR contabilidadpc6.empresa.com.
107 IN PTR contabilidadpc7.empresa.com.
108 IN PTR contabilidadpc8.empresa.com.
109 IN PTR contabilidadpc9.empresa.com.
110 IN PTR contabilidadpc10.empresa.com.
111 IN PTR www.empresa.com.
112 IN PTR dns.empresa.com.
112 IN PTR mail.empresa.com.
Ahora solo quedará editar en el mismo servidor DNS el archivo /etc/resolv.conf con los siguientes datos:





nameserver 127.0.0.1
search empresa.com
Y ya solo hay que reiniciar el servicio DNS en la máquina


$ /etc/init.d/bind9 restart


===================================================================

-Configuración como DNS Esclavo (Actúa de servidor espejo del maestro.Se utiliza para repartir las peticiones.Es muy rara que se de esta configuración en redes locales). Si deseamos configurar nuestro servidor DNS para que actúe como esclavo de un servidor DNS maestro, únicamente será necesario indicar en el DNS esclavo quién es el servidor DNS maestro, y en el DNS maestro, la IP del DNS esclavo.

Añadir línea en /etc/bind/empresa.db del maestro



....
IN NS dns.empresa.com.
IN NS dns2.empresa.com. // Nueva línea
....

Añadir línea en /etc/bind/192.rev del maestro




....
IN NS dns.empresa.com.
IN NS dns2.empresa.com. // Nueva línea
....

Añadir en /etc/bind/named.conf.local del esclavo




zone "empresa.com" {
type slave;
file "/etc/bind/empresa.db";
masters { 192.168.1.112; };
};

zone "1.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/192.rev";
masters { 192.168.1.112; };
};

En el archivo /etc/bind/named.conf.local del servidor DNS maestro podemos utilizar also-notify
para mantener los DNS sincronizados. Con also-notify pasamos los cambios de zonas en el maestro
al esclavo:




zone "empresa.com" {
type master;
file "/etc/bind/empresa.db";
also-notify {ip_del_esclavo;}
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/192.rev";
also-notify {ip_del_esclavo;}
};

De esta forma dispondremos en la red de un servidor DNS esclavo que podrá satisfacer las
peticiones DNS al igual que lo haría el maestro. Es interesante si el número de peticiones es muy
elevado y se requiere distribuir la carga entre los dos servidores, o si deseamos disponer de
servicio DNS de alta disponibilidad de forma que aunque el servidor maestro deje de funcionar, el
servidor esclavo podrá seguir ofreciendo el servicio.

Cada vez que hagamos un cambio en los archivos /etc/bind/miempresa.db y /etc/bind/192.rev del maestro, debemos acordarnos de actualizar el parámetro serial (incrementar en una unidad) para que los dns dependientes del maestro sepan que ha cambiado y actualicen su información para mantenerse perfectamente sincronizados.

===================================================================

-Configuración como caché DNS. Traslada las peticiones al servidor maestro, pero guarda las recibidas para volver a responer a siguientes peticiones sin pasar por el DNS maestro. Se obtiene mayor rápidez en resoluciones)

Editar el archivo /etc/bind/named.conf.options




// Configuración como caché DNS
// Añadir IPs de los DNS de nuestro proveedor o de nuestra empresa en /etc/bind/named.conf.options
forwarders {
194.179.1.100; 80.58.32.97;
};


Back Top

0 comentarios:

Publicar un comentario