Tuesday, November 23, 2010

Configuración básica de BIND en CentOS [DNS]

Saludos mis estimados lectores, les dejo esta pequeña guía para configurar nuestro servidor de nombres de dominio en CentOS con Bind, en esta guía abarcare la configuración de una zona inversa y una directa, para que asi tengamos una idea de como trabaja este servidor de nombres de dominio, la guia esta basada en CentOS pero facilmente se puede aplicar a otras distribuciones (En Debian la ruta de los archivos de configuracion cambia), en caso de que tengan problemas en otras distribuciones pueden contactarme por esta via y les ayudare tan pronto pueda, a continuación la guía.


Para su instalacion necesitaremos unos cuantos paqueticos:


  • bind
  • chroot-bind
  • bind-utils
  • caching-nameserver
Para su comodidad, pueden copiar el comado:

yum -y install bind chroot-bind bind-utils caching-nameserver

Despues de instalado correctamente todos los paquetes requeridos, nos dirigimos a la ruta "/var/named/chroot/etc/" y editamos el archivo "named.conf", los parámetros que debemos editar o añadir en este archivo son los siguientes:

options { 
 directory "/var/named";
forwarders {
X.X.X.X;
X.X.X.X;
};
forward first;
};

Empeze escribiendo las opciones, en directory la ruta de bind, y los otros parametros son los archivos de estadísticas y cache, donde escribi X.X.X.X debemos de poner los forwarders o reenviadores, los cuales serán los servidores DNS a los cuales nuestro servidor DNS reenviara las consultas si no la encuentra en nuestro servidor local (Podemos poner aquí la IP de el router que tiene esos DNS si queremos, y no es necesario que pongamos dos reenviadores), y el parámetro forward first es opcional escribirlo, este sirve para decirle a nuestro servidor DNS que las consultas las reenvie primero, segun nuestras necesidades lo ponemos o no, en mi caso quedo asi:

options { 
 directory "/var/named";
forwarders {
192.1.64.180;
192.22.40.80;
};
forward first;
};

Luego debemos configurar nuestra primera zona, la zona de búsqueda directa, para ello creamos un archivo el cual tendrá un nombre que definirá nuestra zona, por ejemplo db.puntolibre.org, y lo creamos en el directorio /var/named/chroot/var/named/, para nuestra comodidad, este comando:

vim /var/named/chroot/var/named/db.puntolibre.org

Y escribimos nuestra zona de busqueda directa:

$TTL 7D
@                IN                SOA                puntolibre.org.  hostmaster.puntolibre.org. (
                    2010112301                        ;Serial
                    3H                                       ;Refresh
                    2H                                       ;Retry
                    15D                                     ;Expire
                     2D                                      ;Negative Cache TTL
                     )
@                  IN                NS                dns.puntolibre.org.
@                  IN                MX               10        mail.puntolibre.org.
@                  IN                TXT              "Punto Libre DNS"
@                  IN                A                   192.168.1.100 
dns                IN                A                  192.168.1.100
mail               IN                A                  192.168.1.100
www              IN                A                  192.168.1.100
router           IN                A                  192.168.1.1
equipo2        IN                A                  192.168.1.2
equipo3        IN                A                  192.168.1.3
equipo4        IN                A                  192.168.1.4
equipo5        IN                A                  192.168.1.5
equipo6        IN                A                  192.168.1.6
equipo7        IN                A                  192.168.1.7
                   
Ahora le explico el archivo de configuracion de esta zona por linea:

1) Se definio el TTL (Time to Live~Tiempo de vida), es el tiempo de vida de la informacion contenida en el fichero, se definio 7D, como abreviatura a 7 dias.

2) Se declaro un registro SOA (Start Of Autority), en el cual se especifico Servidor de nombres principal, y el correo de el administrador del servidor de nombres (Tener en cuenta el punto al final, y que el correo en vez de @ tiene un punto y que tambien termina en punto), tambien se aperturo un parentesis para continuar con los demas datos de este registro.

3) Aqui ponemos el numero de serie, este lo deberemos incrementar cada vez que se modifica este fichero, en caso de que no modifiquemos este numero, nuestro servidor bind no notara el cambio en la zona, por lo cual los servidores esclavos tampoco, una regla cultural es poner el año, mes, dia y numeros de dos cifras, para poder identificar facilmente el ultimo cambio realizado, por ejemplo en mi caso puse 2010112201 (año 2010, mes de noviembre, dia 22 y el primer cambio realizado)

4) Aqui ponemos el intervalo de refresco, el cual es el tiempo que deben esperar los servidores esclavos antes de preguntar por cambios en la zona.

5) Aqui ponemos el tiempo de reintentos, aqui se pone el tiempo que deben esperar los servidores esclavos antes volver a solicitar una actualizacion en la zona, en caso de que el servidor maestro no responda.

6) Aqui ponemos el tiempo de expiracion, si nuestro servidor maestro no a respondido a las peticiones de los servidores esclavos antes de que expire este tiempo, los esclavos dejaran de actuar como servidores autorizados para esta zona.

7) Aqui ponemos el tiempo minimo de vida, aqui se especifica el tiempo minimo que los otros servidores almacenaran en cache esta zona.

8) Cerramos el parentesis, para terminar de definir el registro SOA.

9) Aqui creamos un registro NS (Name Server), en nuestro caso dns.puntolibre.org. (Fijate el punto al final)

10) Aqui creamos un registro MX (Mail Exchanger), el cual indica a donde debemos mandar el correo de esta zona, y se especifico un valor el cual indica la prioridad de este, con respecto a otros, mientras mas bajo sea mas prioridad tendra.

11) Aqui creamos un registro TXT (Plain Text), este es un registro descriptivo (No necesario).

12) Se declaro un registro A, el cual resuelve de nombres a direcciones IP, en esta linea nosotros especificamos en nuestro ejemplo la IP de nuestro servidor, el cual resolvera el nombre puntolibre.org a 192.168.1.100.

13) Se declaro otro registro A, el cual resuelve el nombre dns.puntolibre.org a 192.168.1.100.

14) Se declaro otro registro A, el cual resuelve el nombre mail.puntolibre.org a 192.168.1.100.

15) Se declaro otro registro A, el cual resuelve el nombre www.puntolibre.org a 192.168.1.100.

16) Se declaro otro registro A, el cual resuelve el nombre router.puntolibre.org a 192.168.1.1.

17) Se declaro otro registro A, el cual resuelve el nombre equipo2.puntolibre.org a 192.168.1.2.

18) Se declaro otro registro A, el cual resuelve el nombre equipo3.puntolibre.org a 192.168.1.3.

19) Se declaro otro registro A, el cual resuelve el nombre equipo4.puntolibre.org a 192.168.1.4.

20) Se declaro otro registro A, el cual resuelve el nombre equipo5.puntolibre.org a 192.168.1.5.

21) Se declaro otro registro A, el cual resuelve el nombre equipo6.puntolibre.org a 192.168.1.6.

22) Se declaro otro registro A, el cual resuelve el nombre equipo7.puntolibre.org a 192.168.1.7.

Luego guardamos el fichero de configuración de nuestra zona de búsqueda directa, y editamos de nuevo el archivo named.conf ubicado en /var/named/chroot/etc/, agregándole la zona recién creada:

zone "puntolibre.org" {
type master;
file "/var/named/db.puntolibre.org";
};

En seguida lo explico por linea:

1) Se declaro el nombre de la zona, el cual en mi caso es puntolibre.org, y se aperturo una llave para introducir los otros datos necesarios.
2) Se declaro que la zona es maestra (hay un punto y coma al final).
3) Se declaro la ruta de el archivo que contiene la informacion de la zona (hay un punto y coma al final)
4)Se cerro el corchete (hay un punto y coma al final)

El siguiente paso es reiniciar el servicio, en CentOS se llama named (en debian bind9).

/etc/init.d/named restart

Luego probamos nuestra zona, editando el archivo /etc/resolv.conf, este archivo se encuentran los DNS que consulta nuestro servidor, en el parametro nameserver ponemos 127.0.0.1 o nuestra IP, guardamos el archivo, y ya podremos probar nuestro servidor.

Podemos hacer ping a nuestros nombres declarados en nuestra zona, y veremos que nuestro servidor los esta resolviendo, ahora vamos a crear nuestra zona de resolución inversa, la cual resolverá de direcciones IP a nombres, en mi caso mi red es 192.168.1.0, con una mascara de red 255.255.255.0, en su caso puede ser diferente, creamos nuestra zona de resolución inversa creando un nuevo archivo en /var/named/chroot/var/named/ llamado db.1.168.192 (Como nuestra red es 192.168.1.0, nuestro archivo de zona inversa se llamara db.1.168.192 (Por simple regla general, nada obligatorio).

Y lo editamos de la siguiente manera, según las necesidades que tengamos:

$TTL 7D
@               IN               SOA               puntolibre.org.               hostmaster.puntolibre.org. (
                   2010112301                      ;Serial
                   3H                                     ;Refresh
                   2H                                     ;Retry
                   15D                                   ;Expire
                    2D                                    ;Negative Cache TTL
                    )
@               IN               NS               dns.puntolibre.org.
100             IN               PTR             dns.puntolibre.org.
1                 IN               PTR             router.puntolibre.org.
2                 IN               PTR             equipo2.puntolibre.org.
3                 IN               PTR             equipo3.puntolibre.org.
4                 IN               PTR             equipo4.puntolibre.org.
5                 IN               PTR             equipo5.puntolibre.org.
6                 IN               PTR             equipo6.puntolibre.org.
7                 IN               PTR             equipo7.puntolibre.org.

En seguida explico el archivo de configuracion por linea:

1) Se definio el TTL (Time to Live~Tiempo de vida), es el tiempo de vida de la informacion contenida en el fichero, se definio 7D, como abreviatura a 7 dias.

2) Se declaro un registro SOA (Start Of Autority), en el cual se especifico Servidor de nombres principal, y el correo de el administrador del servidor de nombres (Tener en cuenta el punto al final, y que el correo en vez de @ tiene un punto y que tambien termina en punto), tambien se aperturo un parentesis para continuar con los demas datos de este registro.

3) Aqui ponemos el numero de serie, este lo deberemos incrementar cada vez que se modifica este fichero, en caso de que no modifiquemos este numero, nuestro servidor bind no notara el cambio en la zona, por lo cual los servidores esclavos tampoco, una regla cultural es poner el año, mes, dia y numeros de dos cifras, para poder identificar facilmente el ultimo cambio realizado, por ejemplo en mi caso puse 2010112201 (año 2010, mes de noviembre, dia 22 y el primer cambio realizado)

4) Aqui ponemos el intervalo de refresco, el cual es el tiempo que deben esperar los servidores esclavos antes de preguntar por cambios en la zona.

5) Aqui ponemos el tiempo de reintentos, aqui se pone el tiempo que deben esperar los servidores esclavos antes volver a solicitar una actualizacion en la zona, en caso de que el servidor maestro no responda.

6) Aqui ponemos el tiempo de expiracion, si nuestro servidor maestro no a respondido a las peticiones de los servidores esclavos antes de que expire este tiempo, los esclavos dejaran de actuar como servidores autorizados para esta zona.

7) Aqui ponemos el tiempo minimo de vida, aqui se especifica el tiempo minimo que los otros servidores almacenaran en cache esta zona.

8) Cerramos el parentesis, para terminar de definir el registro SOA.

9) Aqui creamos un registro NS (Name Server), en nuestro caso dns.puntolibre.org. (Fijate el punto al final)

10) Se declaro un registro PTR (Pointer), el cual sirve para resolver de nombres a direcciones IP, en esta linea se declaro que la direccion 192.168.1.100 tiene el nombre de dominio dns.puntolibre.org.

11) Se declaro un registro PTR, el cual traduce la direccion 192.168.1.1 a el nombre router.puntolibre.org.

12) Se declaro un registro PTR, el cual traduce la direccion 192.168.1.2 a el nombre equipo2.puntolibre.org.

13) Se declaro un registro PTR, el cual traduce la direccion 192.168.1.3 a el nombre equipo3.puntolibre.org.

14) Se declaro un registro PTR, el cual traduce la direccion 192.168.1.4 a el nombre equipo4.puntolibre.org.

15) Se declaro un registro PTR, el cual traduce la direccion 192.168.1.5 a el nombre equipo5.puntolibre.org

16) Se declaro un registro PTR, el cual traduce la direccion 192.168.1.6 a el nombre equipo6.puntolibre.org

17) Se declaro un registro PTR, el cual traduce la direccion 192.168.1.7 a el nombre equipo7.puntolibre.org

Guardamos el archivo, y volvemos a editar el archivo /var/named/chroot/etc/named.conf, agregandole la zona:

zone "1.168.192.in-addr.arpa" {
type master;
file "db.1.168.192";
};

Para finalizar reiniciamos el servicio (/etc/init.d/named restart), mucho cuidadito al escribir la primera linea: zone "1.168.192.in-addr.arpa", ya que influira en el funcionamiento de la zona inversa, y tambien tener en cuenta que escribí eso basandome en mi red, en su caso puede ser distinto.

Ahora basta probar con el comando host:

host dns.puntolibre.org

Y devolvera:

dns.puntolibre.org has address 192.168.1.100

Y listo ya tendremos nuestro servidor de nombres de dominio BIND funcionando perfectamente, espero que les haya servido esta humilde guía, aclaraciones, aporte o duda pueden comentarlas y les respondere tan pronto pueda, gracias y nos vemos en la proxima.




5 comentarios:

Migue13 said...

Me sirvio mucho tu guia brother, thanks so much!

Saludos!

FemTux said...

gracias por la info, muy interesante y aumenta mi predilección por centos para servidores junto con debian..

Ramphis Che said...

Que gusto que les haya gustado la guia, bienvenidos a el blog :)

Pablo Barbecho said...

Estimado esto sirve solo para resolver direcciones localmante? o si tengo un portforwarding en otro equipo a este equipo vale para una red publica ?

Anonymous said...

Está muy buena la guía, en realidad es la mejor que he visto hasta el momento. Muy explicativa. No sé como no la había encontrado antes ...jaja.
Tengo un problemita con mi dns centos 6 pues yo le defino los forwarders y no me reenvía las peticiones y no sé como se define si las encuestas será iterativas o recursivas. Gracias (me puedas o no ayudar), Yaily

Post a Comment