Manual para instalar y configurar un Servidor DNS en Linux

Hoy les comparto un pequeño y fácil manual para la instalación y la configuración de un servidor DNS en nuestras máquinas Linux. En mi caso lo hice en Linux Mint 7, por lo que funciona también en distribuciones basadas en debian, como Ubuntu. En otros sistemas como fedora, es muy similar, lo que cambia es la ubicación de los archivos.

DNS

Para los que no saben, DNS (Domain Name Server) es una base de datos distribuida, que contiene la información para traducir los nombres de dominio, es decir, los nombres que usamos habitualmente para entrar a cualquier página en internet, como www.google.com, o www.facebook.com, a las direcciones IP de los servidores que alojan dichas web's y viceversa.

Para configurar el DNS vamos a utilizar un servidor muy conocido en la red, llamado BIND. Este es un servidor que permite configurar de una manera muy sencilla nuestro DNS, y funciona a la perfección.

Ahora empecemos con el manual.

1. Instalar el Bind, para lo que escribimos en una terminal:

sudo apt-get install bind9 dnsutils, si no te funciona, actualiza tus repositorios con el comando sudo apt-get update && apt-get upgrade, y luego vuelve a intentar.

2. Al haber finalizado la instalación, detenemos el servicio con el comando

sudo /etc/init.d/bind9 stop

3. Ahora pasamos a configurar los archivos más importantes. El primero de ellos es el Resolv.conf, donde se encuentra la información del dominio al que perteneces y el servidor de nombres de dominio que estás usando. Para entrar a configurar el archivo usamos el siguiente comando:

sudo gedit /etc/resolv.conf, dentro del archivo cambiamos los dominios, por el que nosotros queramos usar, para este manual el dominio va a ser juanse.com, pero puedes utilizar el que quieras. El archivo debe quedar de la siguiente manera:

domain juanse.com

search juanse.com

nameserver 10.0.19.21 #Esta es la dirección de red local de tu pc, en donde se va a instalar el DNS

nameserver 10.0.18.1 #Esta puede ser o tu servidor de DNS preferido o tu gateway

Hay que tener en cuenta, que este archivo se cambia automáticamente cada que se cambia la configuración de la red, o se conecta a una red diferente.

4. Ahora configuramos el archivo named.conf.options y descomentamos las lneas que dice forwarders, de la siguiente manera:

sudo gedit /etc/bind/named.conf.options

forwarders {sudo gedit /etc/bind/named.conf.options

4.2.2.2; #Utilizar DNS valida o la que tengamos con el proveedor ISP.

};

Con la dirección de ejemplo 4.2.2.2 funciona sin problemas.

5. Creación de las zonas: Para este manual, vamos a crear dos zonas, una que va a manejar mi nombre de dominio, y la otra va a manejar las direcciones reversas. Para las zonas recomiendo crear un directorio llamado zones o como quieras.

sudo mkdir /etc/bind/zones

Allí creamos la primera zona que la llamaremos como mi nombre de dominio "juanse.com":

sudo gedit /etc/bind/zones/juanse.com, allí copiamos lo siguiente

$TTL 3D


@ IN SOA ns1.juanse.com. hostmaster.juanse.com. (

200808161 ; serial, fecha AAAA-MM-DD + serial

8H ; refrescamiento, en segundos

2H ; reentrar, segundos

4W ; expira, segundos

1D ) ; minimo, segundos

;

TXT "juanse.com, servicio de DNS"

NS ns1 ; Direccion Inet del servidor de dominio

NS ns2

MX 10 mail ; Exchanger de Mail primario

localhost      A     127.0.0.1

juanse.com.    A     10.0.19.21

ns1            A     10.0.19.21

ns2            A     10.0.19.21

www            CNAME ns1

correo         CNAME ns2

No olviden cambiar juanse.com por el dominio que hayan escogido. Pueden colocar cuantos NS (Nameservers) quieran, y el CNAME (canonic name) sirve para asignarle el nombre a cualquiera de los ns. Por ejemplo al final del manual, voy a poder hacerle un ping a correo.juanse.com o www.juanse.com. El comando A, lo que hace es traducir el dominio a las direcciones ip, para que el computador las reconozca.

6. El siguiente paso es crear la zona para las direcciones en reversa, la creamos de la misma forma que la anterior y en el mismo directorio. Para este manual, la llame 10.0 por lo que estoy trabajando en ese segmento.

sudo gedit /etc/bind/zones/10.0, allí copiamos lo siguiente:

$TTL 86400

@ IN SOA juanse.com. hostmaster.juanse.com. (

200808051 ; serial (d. adams)

8H ; refresh

2H ; retry

1W ; expiry

1D ) ; minimum

;

@ IN NS juanse.com.

19.21          PTR        juanse.com.

19.21 IN       PTR        correo.juanse.com.

;Estaciones

El comando PTR sirve para convertir las direcciones ip en los nombres de dominio, no olviden cambiar juanse.com por el dominio que hayan escogido. Observen que solo estoy asignando los ultimos dos octetos de mi dirección ip 10.0.19.21. en el siguiente paso se darán cuenta porque.

7. El paso siguiente es modificar el archivo named.conf.local, de la siguiente manera:

sudo gedit /etc/bind/named.conf.local, y allí vamos a copiar las dos zonas que acabamos de crear:

zone "juanse.com" {
        type master;
        file "/etc/bind/zones/juanse.com";
	};

	zone "0.10.in-addr.arpa" IN {
        type master;
        file "/etc/bind/zones/10.0";
        allow-update { none; };
};

Fíjense en la segunda zona, llamada zone "0.10.in-addr.arpa" IN {, noten que estoy utilizando los dos primeros octetos en forma inversa, es decir 10.0, y es por esta razón que en la zona como tal, se deben utilizar los ultimos dos octetos. Esto puede ser modificado para que solo se usen uno dos o tres octetos.

Esto es todo, lo último que hay que hacer es reiniciar el servicio bind con el comando sudo /etc/init.d/bind9 restart. Para probar nuestro DNS hacemos ping desde una terminal a cualquiera de los dominios que asignamos en las zonas.

Por ejemplo ping www.juanse.com ó ns1.juanse.com ó correo.juanse.com.

ping

Hay varias herramientas con las que se pueden probar los servidores DNS, como lo son nslookup y Dig. Espero les sirva, dudas o comentarios, serán respondidos a la mayor brevedad.

r las direcciones ip en los nombres de dominio, no olviden cambiar juanse.com por el dominio que hayan
  1. Diego dice:

    Excelente aporte, me encantó.
    Saludos

  2. David dice:

    Excelente... hare unas pruebas a ver que tal.

    A ver si me monto un servidor web en mi casa 😉

  3. juanj0s3 dice:

    hola que tal la verdad es que desde hace mucho tiempo desde que escucho sobre linux y servidores me a interesado el tema nose que pase nose si no sea mi don pero me quedo siempre en la instalacion tengo algunas dudas podras ayudarme

    porque usar un servidor linux apache mysql y php
    porque instalar dns dnsbind dhcp como inicarlos una ves instalados

    ayudame xfa

    saludos desde guerrero mexico

  4. ju4ns3 dice:

    @JUANJ0S3, si lees detenidamente el manual, verás que no es neceario instalar nada referente a apache, mysql o php, tal vez se requieran para otro tipo de servicios como puede ser un proxy. Lo unico que tienes que instalar es el BiND y el porque, es que con esta herramienta podrás montar muy fácilmente el servidor, puedes googlear y buscar los beneficios de usar el BIND. El como instalar, si lees detenidamente todo el post tambien se indica, lo mas comun es utilizar el comando "apt-get install -nombre del programa-" y para inicializar los servicios en linux, vas a una terminal y ejecutas el comando "etc/init.d/ start" por ejemplo para el bind, es etc/init.d/bind9 start, para reiniciarlo es etc/init.d/bind9 restart y para detenerlo etc/init.d/bind9 stop.

    Espero haber solucionado tus inquietudes, sino hazmelo saber y seré mas explicito, Suerte!!

  5. Daniel Pro dice:

    Gracias por la información, actualmente uso windows pero como programador se desde hace rato que tendre que pasar a linux mas no lo he hecho aun, mi dudas son las siguientes, con Bind comentas que no es necesario apache, sin embargo, yo por ejemplo lo uso a diario debido a que programo en php y usare postgresql (uso MySql pero es posible que pase a comercial por eso migrare a postgresql) todas las herramientas que uso son libres menos el S.O. el cual cambiare mas adelante pues esa es mi filosofia ya que no tengo dinero ni quiero pagar licencias privadas, ahora bien la idea es tener un Dsn en mi computadora gratis con uso de Apache, Posgresql y Php, ¿Esto se puede? ya he configurado mi sistema para acceso desde internet pero entran mediante mi dirección Ip, me gustaria y seria mucho mejor tener nombre de dominio propio sin pagar asi como lo planteas con Bind, el cual yo mismo administre a mi gusto y los accesos sean limpios sin direcciones Ip, de antemano muchas gracias.

  6. juanj0s3 dice:

    hola amigo voy por pasos

    1 ya instale el dns + binds
    como hago a para arrancar estos servidores
    como configurar o explorar relacionarme con ellos entender de q forma trabajan y se relacionan con nuestras necesidades

    gracias disculpa

  7. ju4ns3 dice:

    @Daniel Pro: El uso de apache y demas servicios, para el contexto de la instalación del servidor no es necesario su uso; me explico, para instalar como tal el servidor, y la configuración de los nombres de los dominios no es necesario la instalación del apache o de mysql o postgresql. No dudo que sea posible montar ya tu pagina web con servidor apache y unirlo con otros servicios de bases de datos, pero para la instalación como tal y la configuración básica de los archivos, que es lo que intento explicar en el post, no es necesario su uso. Espero haberte solucionado tu inquietud, sino por favor hazmelo saber.

  8. ju4ns3 dice:

    @juanj0s3: Lo que tienes que hacer es configurar antes que nada los archivos de configuracion DNS y del servicio BIND, antes de poder iniciarlos para poder probar con los nombres de dominio que usaste. Si los arrancas sin configuración sacarán errores, Sigue el manual paso a paso, ahi se explica en que momentos se deben detener los servicios y en que momentos arrancarlos. Si ya pasaste el paso 1 q es la instalación, sigue con el resto de los pasos.

    Si tienes dudas escribenos.

  9. shaka dice:

    la verdad el tutorial esta muy bien, lo que pasa es que en la parte sudo gedit /etc/resolv.conf digito esto en la terminal y me aparece sudo: gedit/etc/resolv.conf: command not found, me encantaria la ayuda que me pudiera dar.

  10. ju4ns3 dice:

    Shaka, te explico:

    sudo, es un comando utilizado normalmente para ejecutar algo en modo administrador, pero si ya te encuentras en modo administrador o root no es necesario usarlo.

    Segundo, el comando gedit, se utiliza para abrir un archivo de texto y editarlo, por lo que no puede estar pegado de /etc.... también puedes utilizar nano, vi, entre otros editores de texto....

    El comando debe ser:

    sudo gedit /etc/resolv.conf

    Recuerda que entre sudo y gedit hay un espacio y entre gedit y /etc/resolv.conf hay otro espacio... Espero haberte solucionado la duda, si no es asi escribenos. Saludos

  11. angelof dice:

    hola juanse
    tengo un problema
    ya he heco todos los pasos que esplicaste en tu
    tutorial pero ala hora de realizar el ping
    me parece otra direccion
    208.73.210.27

    ientras que mis rireciones son
    nameserver 10.150.64.21
    nameserver 201.160.32.8
    nameserver 10.150.64.20

    y aparte al hacer el ping
    envia una infinidad de tatos
    a una pagina llamada
    parkinglot.information.com

    y asi se esta enviando datos mas de media hora

    espero y me alludes resolver esto
    te lo agadeceria

  12. ju4ns3 dice:

    Hola ANGELOF, te recomiendo que mires de nuevo el archivo resolv.conf, y lo configures como lo lo expliqué... recuerda que como nameserver primario, tiene que ir la dirección ip del servidor DNS, que es el computador en el que lo estas instalando... Revisa esa configuración de ese archivo en específico.... ten en cuenta tambien q ese archivo cambia cada que cambias de una red a otra.

    Si sigues con dudas escribeme.

  13. Henry dice:

    Hola, felicitaciones por el manual, muy interesante y claro, solo tengo una duda.

    Tengo una aplicación en un pequeño servidor web, contraté un dominio por ejemplo "colegio.edu.ec", ellos me piden el nameserver y dns de mi servidor, no tengo claro aún qué es lo q debo enviar, el dominio que aqupi lo llamas juanse.com sería en mi caso el dominio que contraé o es el nombre de mi servidor. Graciass

  14. Mint dice:

    Hola tengo el mismo problema, al hacer ping no me resuelve tarda mucho buscando una respuesta y ahi se queda, segui cada uno de los pasos que hace pero no me queda

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir