lunes, 22 de octubre de 2012

Preparar un servidor DNS en Debian con bind

Buenos días/tardes/noches:

Hoy vamos a hablar de hacer un servidor DNS bajo Debian.
El servicio de nombres de dominio, DNS (Domain Name Service) es el encargado de traducir nombres legibles por humanos a direcciones de red en binario, que es lo que habla la máquina en realidad.

La dirección de mi web es contadordeprograma.blogspot.com, si te dijera que mi dirección es:
173.194.34.234 o 10101101.11000010.00100010. 11101010, seguramente no te quedarías con la copla y nuestra comunicación sería mejor por correo postal. Quizás unas cuantas, puede que si, con buena memoria, y como antaño recordando números de teléfono. Y si hay 1000, ¿podré?. Mejor hacer otra cosa: traducir. Es más fácil recordar nombres que números.
Nosotros no vemos la conversión, y lo que podemos hacer, es aún mejor, crearla y definirla.
Los sistemas tienen programas adecuados para ello. En su versión libre, presentaré BIND9 que es el estándar en esto, y lo instalaré bajo Debian 6.

Instalación:

root@nameserver:~# apt-get install bind9

Y santas pascuas,  ya está listo para empezar a usar. Lo que toca es configurarlo correctamente. 

Nuestra zona se va a llamar contador.int, que será el master de la zona. 
Nuestra red es de tipo 10.0.2.0/24

La primera operación que vamos a realizar es declarar que nuestro servidor, para sí mismo, va a ser el que resuelva los nombres. 
Para ello editaremos el archivo /etc/resolv.conf. Primero hacemos una copia de seguridad del mismo. Usaré el editor nano.

root@nameserver:~# mv /etc/resolv.conf /etc/resolv.conf.bak
root@nameserver:~# nano /etc/resolv.conf

nameserver 127.0.0.1

Guardamos y salimos (ctrl+O y ctrl+X). Con esto diremos que quien va a resolver y reducir los nombres será la misma máquina con la información que disponga.

entraremos al directorio donde trabajaremos que será /etc/bind/

root@nameserver:~# cd /etc/bind/

Si hacemos un ls -l veremos los siguientes archivos:


si hacemos un netstat -lan, veremos que la máquina está "escuchando" en el puerto 53 TCP y UDP. Que es el puerto que usa BIND.

Al lio:

Editamos el archivo named.conf.local y definiremos la zona de resolución directa e inversa. Es decir traducir de nombres a direcciones y de direcciones a nombres.

root@nameserver:/etc/bind# nano named.conf.local

añadimos las siguientes entradas:

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

//resolución directa
zone "contador.int"
{
        type master;
        file "/etc/bind/db.contador.int";
};
// resolución inversa

zone "2.0.10.in-addr.arpa"
{
        type master;
        file "/etc/bind/db.10.0.2";
};

Guardamos y salimos.

Como podemos observar en los dos casos referenciamos un archivo que aún no existe. Luego tendremos que crearlo. Para no tener que escribirlo del tirón (ya sabemos que los informáticos somos unos vagos) podemos hacer una copia de db.empty y editar.

root@nameserver:/etc/bind# cp db.empty db.contador.int
root@nameserver:/etc/bind# nano db.contador.int


; resolución directa para contador.int
$TTL    86400
@       IN      SOA     ns.contador.int. root.contador.int. (
                      201210221         ; Serial
                         604800         ; Refresh (1 semana)
                          86400         ; Retry (24 horas)
                        2419200         ; Expire (28 días)
                          86400 )       ; Negative Cache TTL (1 semana)
;
@       IN      NS      ns.contador.int.
ns      IN      A       10.0.2.253
router  IN      A       10.0.2.1
pc1     IN      A       10.0.2.2
pc2     IN      A       10.0.2.3

Lo mismo haremos para la configuración de resolución inversa.

root@nameserver:/etc/bind# cp db.empty db.10.0.2
root@nameserver:/etc/bind# nano db.10.0.2


; fichero de resolución inversa para 10.0.2.0
;
$TTL    86400
@       IN      SOA     ns.contador.int. root.contador.int. (
                      201210221         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      ns.contador.int.
253     IN      PTR     ns.contador.int.
1       IN      PTR     router.contador.int.
2       IN      PTR     pc1.contador.int.
3       IN      PTR     pc2.contador.int.

Como ultimo paso, asumimos que no vamos a ser un ISP, y tendremos que usar un redireccionador. Se puede elegir el servidor DNS más estable que queramos, google (8.8.8.8), el de nuestro ISP, o el que usaré de los chicos de openDNS(208.67.220.220)
Abrimos con nuestro editor /etc/bind/named.conf.options
y descomentamos las líneas que ponen forwaders en adelante hasta que quede así tal cual.

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

         forwarders {
                208.67.222.222;208.67.220.220;
         };

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};
   
Lo que haremos será enviar todas las peticiones que vayan más alla de nuestra red a otro servidor DNS,  que resolverá nuestra petición sin ir preguntando a los servidores raíz tal y como lo hacía con el servidor BIND9 recién instalado.

y ahora, para que todo funcione como es debido,  reiniciamos el servicio BIND

root@nameserver:/etc/bind# service bind9 restart


Ahora para que podamos sacar partido a nuestro servidor DNS, las máquinas de nuestra red, deberán apuntar a 10.0.2.253 como servidor de nombres.

Para testar la velocidad de las consultas a los servidores DNS hay un magnífico programa llamado NameBench. Recomendable para enterarnos que servidores DNS son más rápidos para nosotros y nos pueden ofrecer una experiencia de navegación más rápida.

Un excelente artículo sobre DNS en linuxsilo.net,  aqui lo puedes encontrar
De momento, es todo acerca de este tema hoy.

Espero la siguiente instrucción.

No hay comentarios:

Publicar un comentario