Configuración servidor DNS (bind9) en Ubuntu

By marble - Last updated: Sunday, January 29, 2006 - Compartir - 13 Comentarios

* Fragmentos de texto extraídos del tutorial “Cómo configurar BIND” de Hugo Madrid Luna (Crowley) bajo FDL.

BIND es el servidor de nombres de dominio más popular en Internet, que trabaja en todas las plataformas informáticas principales y se caracteriza por su flexibilidad y seguridad.

Domain Name Service (DNS) es el servicio que resuelve los nombres de dominio asociados a una dirección IP para direccionar las peticiones a un servidor en específico. Se utiliza cuando un nodo (o host) en Internet contacta a otro mediante el nombre de domino de la máquina y no por su dirección IP.

A través de este documento se verán las generalidades del servicio de resolución de nombres, la configuración y mantenimiento de un servicio de nombres con BIND, bajo la plataforma Linux, aunque la mayoría de estos conceptos se pueden aplicar a la cualquier servicio de DNS sobre otras plataformas.

Regularmente, todos los equipos que están en Internet o una Intranet tienen una dirección IP única que las identifica, generalmente dividido en cuatro segmentos u ‘octetos’, cuya representación es, por ejemplo, ‘172.29.183.217′, pero el recordar todas las direcciones en este formato sería sumamente difícil, por lo que utilizamos los nombres de dominio para referenciarlos.

Existen varios productos que realizan esta función y en todas las plataformas, pero el más usado es BIND (Berkeley Internet Name Domain), que es distribuido bajo la GNU GPL.

La estructura básica del DNS es similar a un árbol, donde se tiene una raíz o root, los Dominios de Nivel Principal (Top Level Domains) y los dominios de segundo nivel.

Los nombres de dominio completamente calificados o FQDN (fully qualified domain name) se componen por lo general del nombre del host, un nombre de dominio secundario y un nombre de dominio primario o de nivel máximo (top-level domain), que son secciones organizadas jerárquicamente.

Por ejemplo: ‘www.ejemplo.com’. Leyéndolo de derecha a izquierda tenemos un dominio primario (‘COM’), un dominio secundario (‘EJEMPLO’) y el nombre del host (‘WWW’). Algunos dominios primarios son:

org – Organizaciones no lucrativas.
com – Organizaciones lucrativas.
net – Organizaciones en Internet.
gob – Agencias gubernamentales en latinoamérica.
mx – Sufijo de México.
es – Sufijo de España.

Existen cuatro tipos diferentes de servidores de resolución de nombres:

Tipos de registros.

Para ofrecer suficiente flexibilidad en la configuración, se pueden declarar diversos tipos de registros, que hacen referencia a la función del host. A continuación veremos los más importantes.

Configuración

Veamos como configurar BIND9 para disponer de un servidor DNS en una intranet, que resuelva dominios internos. Por ejemplo, en la intranet se utilizaran dominios que terminen en “marblestation.homeip.net” como “saturno.marblestation.homeip.net” o “luna.marblestation.homeip.net”. El servidor DNS se encargará de resolver esos dominios en sus respectivas IPs, además de resolver otros dominios de Internet como “google.com”.

Instalamos BIND9 y nos desplazamos a su directorio de configuración:

aptitude install bind9
cd /etc/bind/

Editamos named.conf.local y añadimos la zona “marblestation.homeip.net”, haciendo referencia a su fichero de configuración:

zone "marblestation.homeip.net" {
    type master;
    file "/etc/bind/db.marblestation";
};

Creamos el fichero de configuración “db.marblestation” a partir de “db.local”:

cp db.local db.marblestation

Editamos “db.marblestation”, reemplazamos la palabra “localhost” por “marblestation.homeip.net”, cambiamos la IP “127.0.0.1″ por la que queramos asignar al dominio y añadimos al final del fichero todos los A, MX y CNAME que queramos, quedando:

;
; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA marblestation.homeip.net. root.marblestation.homeip.net. (
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@           IN      NS          marblestation.homeip.net.
@           IN      A           192.168.48.32
@           IN      MX      0   marblestation.homeip.net.
www         IN      A           192.168.48.32
saturno     IN      CNAME       marblestation.homeip.net.

En este ejemplo vemos primeramente el dominio a resolver, ‘marblestation.homeip.net.’ y el segundo es la cuenta de correo del administrador, ‘root.marblestation.homeip.net.’ (sustituyéndo el primer punto por arroba, lo que dejaría ‘root@marblestation.homeip.net’). Debemos notar que al final de cada dominio viene un punto, que identifica la raíz de este. El resto de los parámetros son:

A continuación se definen los registros necesarios, cuyos tipos ya han sido explicados anteriormente en este documento.

Cada vez que se cambia la configuración de BIND9, debemos reiniciar el demonio:

/etc/init.d/bind9 restart

Para que nuestra máquina utilice el servidor de DNS que hemos configurado, debemos editar “/etc/resolv.conf” y dejamos únicamente la línea:

nameserver 127.0.0.1

Se debería hacer lo mismo con el resto de máquinas de la intranet que vayan a utilizar el servidor, con la única diferencia que habrá que substituir la IP 127.0.0.1 por la IP que tenga el servidor en la red.

Para comprobar el correcto funcionamiento, utilizamos el comando “host” el cual sirve para resolver dominios:

$ host marblestation.homeip.net
marblestation.homeip.net has address 192.168.48.32
marblestation.homeip.net mail is handled by 0 marblestation.homeip.net.
$ host saturno.marblestation.homeip.net
saturno.marblestation.homeip.net is an alias for marblestation.homeip.net.
marblestation.homeip.net has address 192.168.48.32
saturno.marblestation.homeip.net is an alias for marblestation.homeip.net.
saturno.marblestation.homeip.net is an alias for marblestation.homeip.net.
marblestation.homeip.net mail is handled by 0 marblestation.homeip.net.

Si deseamos también disponer de resolución de dominios inversa, es decir, que podamos preguntar por la IP “192.168.48.32″ y el servidor DNS nos diga que pertenece a marblestation.homeip.net, debemos añadir a “/etc/bind/named.conf.local”:

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

Creamos el archivo de configuración “/etc/bind/db.192″ a partir del “/etc/bind/db.127″:

cd /etc/bind/
cp db.127 db.192

Editamos “/etc/bind/db.192″, substituimos “localhost” por “marblestation.homeip.net” y cambiamos la última línea:

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@   IN  SOA marblestation.homeip.net. root.marblestation.homeip.net. (
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@   IN  NS  marblestation.homeip.net.
32.48.168   IN  PTR marblestation.homeip.net.

De forma que, la última linea indica que la IP [192.]168.48.32 (escrita a la inversa y omitiendo el 192 que ya se especifico en “named.conf.local”) corresponde al dominio marblestation.homeip.net.

Podemos comprobar su funcionamiento reiniciando el demonio BIND9 y realizando una consulta:

$ /etc/init.d/bind9 restart
$ host 192.168.48.32
32.48.168.192.in-addr.arpa domain name pointer marblestation.homeip.net.
Categoría(s): Castellano • • Ir al principio de la página

13 Responses to “Configuración servidor DNS (bind9) en Ubuntu”

Comment from darkness
Hora Saturday 4 November 2006 at 21:06:07

Que tal, el articulo me parece bien, yo soy nuevo usando UBUNTU tengo instalado el 5.10 y quiero configurar el DNS para despues configurar OpenLDAP, pero no trae BIND instalado, y no he podido conectarlo a internet para utilizar los repositores, converti .RPM a DEB. pero me marcan error al instalarlos, si pudieras mandarme el paquete .deb de BIND9 y si no fuera mucha molestia el de OpenLDAP, gracias de antemano…

Comment from Yo
Hora Saturday 10 February 2007 at 18:13:08

No se que poner, ya que no se nada de UBUNTU!!!,, pero esta buena la explicación

Comment from Felipe
Hora Wednesday 14 November 2007 at 17:33:38

Muchas gracias por el aporte.

Comment from eneida
Hora Tuesday 27 November 2007 at 13:41:09

Muchas gracias, se necesitan mas paginas como esta

Comment from Aldo
Hora Thursday 20 December 2007 at 0:57:58

Me la pase una semana tratando de acer esto en centos probando con 80 mil articulos y nada de nada , en cambio en ubuntu y este articulo lo hice en 15 min. :P

Comment from jairo prada
Hora Tuesday 29 April 2008 at 6:00:56

muchas gracias despues de intentar 1000 mil veces pude hacerlo con este tutorial, saludos a la parranda de x%3#&% de la unab de clase redes que andan en estas orita, jaja.

Comment from Williamcito
Hora Tuesday 3 June 2008 at 7:49:16

Muchas gracias, buen aporte :)

Comment from nicolas
Hora Tuesday 17 June 2008 at 2:24:21

HOla… estaba leyendo el tutorial, que me parece muy claro. de todos modos no logro imaginar como hacer lo que deseo: (explico) me interesa (tengo un acces point wifi, con openWRT) configurar un servidor DNS para que cualquiera que se conecte a el (entrega IP, y DNS por dhcp), luego de conectado -y al intentar conectarse con cualquier IP .com; .com.ar; .com.es, etc- termine dirigido a mi página web que los invita a colaborar económicamente con el mantenimiento del servicio de internet… ¿cómo puedo hacer????
Muchas gracias.-

Comment from Micho
Hora Saturday 15 November 2008 at 22:34:27

Muy bueno y sencillo. Saludos

Comment from Csanchez
Hora Wednesday 17 June 2009 at 16:24:17

Ese tipo de aportes, son los que se necesitan.
Gracias por la ayuda.

Comment from ING.ARMENTA
Hora Saturday 1 August 2009 at 7:18:24

SOY NUEVO EN UBUNTU POR UNA MATERIA DE LA UNI ESTE TUTO SI ESTA BIEN COOL

Comment from Luis
Hora Wednesday 9 September 2009 at 1:58:42

Hola. esta muy buena la explicación, bueno mi consulta es que quisiera implentar un servicio de nombres de dominios para una red la cual tiene instalado ubuntu en todas las maquinas las q van a tener internet siendo que el servidor de internet es un proxy instalado en una maquina aparte.
quisiera saber si puede instalar el servidor de nombres de dominio de la red local en una pc con ubunto o debian y administrar toda la red desde ese host, la red tendria por el momento 45 maquinas aproximadamente.

desde ya muchas gracias Luis.

Comment from Nestor
Hora Friday 30 October 2009 at 16:55:22

Sin duda es una excelente explicación.

Me quedan unas dudas:
1. ¿Todas las computadoras que se conecten a la red y hagan la solicitud el servidor resolverá sin problemas para esto el IP de DNS de cada maquina deberá cambiar al del servidor local?

2. ¿como hago para que este servidor con bind también pueda resolver para sitios externos de internet?

3. es decir todas las maquinas entraran a este equipo para resolver nombre local OK
si se solicita nombre de internet (www.google.com) como este servidor sabrá donde buscar \"la salida\" al proveedor ADSL para servicio web.

Dejar un comentario

You need to enable javascript in order to use Simple CAPTCHA.
Security Code: