Instalar y Configurar un Servidor DNS con BIND9 en Debian Etch con Chroot

En esta oportunidad veremos como instalar y configurar un servidor DNS con Bind9 en Debian 4.0 Etch. El protocolo de DNS (Domain Name System) es el que básicamente permite realizar la traducción entre un nombre de una página Web como lo entendemos nosotros (por ejemplo www.vensign.com) a una dirección IP (172.30.30.1) que es lo que realmente entienden los servidores en Internet. Es un servicio fundamental y sin el simplemente no existiría Internet como la conocemos hoy en día.

BIND9 es un servidor de DNS de código abierto, gratis y que es utilizado por la gran mayoría de los servidores DNS que existen en Internet.

Voy a suponer que tienes un cierto nivel de conocimientos de Linux (no mucho se requiere realmente) solo que sepas abrir un terminal y escribir comandos eso es todo. Te aconsejo que sigas esta guía paso a paso para que le saques el mayor provecho.

Esta instalación fue probada en servidores Debian Etch 4.0. Funciona bien en servidores basados en Debian y en versiones de Ubuntu previas a 8.04.

Vamos a comenzar…

En este caso vamos a hacer la configuración típica de servidores DNS con un servidor primario o maestro con dirección IP 192.168.249.1 y un servidor secundario con dirección IP 192.168.249.2 en caso de que falle el primero. Se utilizará como dominio ejemplo ejemplo.lan

Instalando BIND 9.5

Esta parte aplica tanto para instalar el servidor maestro como el secundario, para esto ejecutamos los siguientes comandos como root:

apt-get update && apt-get upgrade

Para asegurarnos de tener actualizados nuestros repositorios:

apt-get bind9 dnsutils

Con esto se instala el servidor Bind9 y los dnsutils son varias utilidades de DNS que nos serviran más adelante para comprobar nuestro servidor.

Chroot Bind

Cuando se habla de realizar un Chroot a un servicio en Linux se refiere que se va a crear una jaula a su alrededor, esto se hace para medidas de seguridad sobre todo en servidores que están expuestos a Internet como es el caso de nuestros servidores DNS. Esto hace que el servicio se ejecute con su propio usuario dentro de directorios que no tienen privilegios de root para que si llegan a quedar comprometidos el atacante no pueda accesar a otros recursos del sistema.

Para hacer el Chroot de Bind ejecutamos los siguientes pasos:

/etc/init.d/bind9 stop

Para detener el bind

Luego apuntamos el archivo de configuración al directorio que vamos a crear para el Chroot:

vim /etc/default/bind9

Puedes utilizar el editor de tu preferencia en cambio de vim (puede ser nano, emacs, etc)

Y modificamos la línea que dice OPTIONS=”-u bind” por:

OPTIONS="-u bind -t /var/lib/named"

Luego creamos los directorios necesarios para el Chroot

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run

Ahora movemos la configuración del Bind de /etc a /var/named/etc:

mv /etc/bind /var/lib/named/etc

Creamos un link simbólico entre la configuración vieja y la nueva para no tener problemas cuando se actualice el Bind:

ln -s /var/lib/named/etc/bind /etc/bind

Luego creamos los dispositivos necesarios para la jaula:

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8

Y por último modificamos los permisos necesarios:

chmod 666 /var/lib/named/dev/*
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

Con esto ya creamos la Jaula y Bind tiene su propio espacio de directorios para sus procesos.

Ahora debemos modificar sysklogd para que se registren (log) los eventos del Bind:

vim /etc/default/syslogd

Puedes utilizar el editor de tu preferencia en cambio de vim (puede ser nano, emacs, etc)

Y modificamos la línea que dice SYSLOGD=”” por:

SYSLOGD="-a /var/lib/named/dev/log"

Ahora debemos modificar el archivo resolv.conf de nuestro servidor:

vim /etc/resolv.conf

Y agregamos la siguientes líneas (recuerda cambiar ejemplo.lan por tu nombre de dominio):

search ejemplo.lan
nameserver 127.0.0.1

Reiniciamos el sysklogd:

/etc/init.d/sysklogd restart

E iniciamos el Bind:

/etc/init.d/bind9 start

Este procedimiento lo tenemos que repetir para el servidor secundario.

Ahora vamos a configurar nuestros servidores.

Configurar Servidor Maestro

Ahora que tenemos el Bind9 instalado vamos a proceder a configurarlo, lo primero que vamos a hacer es decirle que envie las peticiones externas hacia el servidor DNS de nuestro ISP o hacia cualquiera que queramos, yo en lo personal utilizo OpenDNS. Para esto modificamos el archivo /etc/bind/named.conf.options:

vim /etc/bind/named.conf.options

Y descomentamos las líneas que dicen forwarders para que quede de la siguiente forma:

forwarders { 208.67.222.222 };

Recuerda utilizar la IP del DNS de tu ISP, también puedes utilizar la que está en el ejemplo ya que es la de OpenDNS.

Luego vamos a crear nuestra zona que no es más que lo que va a manejar nuestro dominio de ejemplo.lan para esto seguimos los siguientes puntos:

mkdir /etc/bind/zones/
vim /etc/bind/zones/master_ejemplo.lan

Luego dentro de este archivo colocamos la siguiente configuración:

$TTL 3D

@       IN      SOA     ns1.ejemplo.lan. hostmaster.ejemplo.lan. (
                        200808161       ; serial, fecha AAAA-MM-DD + serial
                        8H              ; refrescamiento, en segundos
                        2H              ; reentrar, segundos
                        4W              ; expira, segundos
                        1D )            ; minimo, segundos
;
                TXT     "Ejemplo.LAN, 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
ns1          A    192.168.249.1
ns2          A    192.168.249.2
www          CNAME    ns1

Este es un archivo de Zona básico donde declaramos el dominio de ejemplo.lan, los servidores de dominio ns1 y ns2, además declaramos como servidor www (servidor web) a ns1 pero podría ser cualquier otro servidor donde tengas instalado Apache o algún otro servidor Web.

Ahora editamos el archivo /etc/bind/named.conf.local:

vim /etc/bind/named.conf.local

Y escribimos las siguientes líneas:

zone "ejemplo.lan" {
        type master;
        file "/etc/bind/zones/master_ejemplo.lan";
};

Ya con esto podemos probar nuestro servidor master a ver si funciona:

/etc/init.d/bind9 restart

ping ns1.ejemplo.lan

Deberia responder nuestro servidor ns1, recuerda que el servidor debe tener una dirección IP fija y que no debe estar corriendo ningún cliente dhcp.

Tambien podemos probar ejecutando:

host ns1.ejemplo.lan

Debería responder con la dirección de nuestro servidor.

Por útilmo para configurar nuestro servidor master modificamos el archivo /etc/bind/named.conf.options y agregamos la siguiente línea:

dnssec-enable yes;

Creamos una llave segura esto es para que la comunicación entre el servidor master y el secundario sea encriptada.

dnssec-keygen -a hmac-md5 -b 128 -n host ejemplo.lan

Anota el resultado ya que lo utilizaremos tanto en el servidor MASTER como en el SECUNDARIO.

Modificamos el archivo /etc/bind/named.conf y agregamos las siguientes líneas:

include "/etc/bind/rndc.key";

key "TRANSFER" {
        algorithm hmac-md5;
        secret "---HASHKEY---";
};

server 192.168.249.2 {
        keys {
        TRANSFER;
    };
};

Donde dice HASHKEY colocas la clave que generamos anteriormente. Y luego reiniciamos el servidor Bind:
/etc/init.d/bind9 restart

Con esto ya tenemos configurado nuestro servidor master vayamos ahora con nuestro servidor secundario.

Configurar Servidor Secundario o Esclavo DNS

La instalación del servidor Bind en el Secundario es exactamente igual que la del servidor Maestro, voy a mostrar sólo los archivos de configuración que necesitan modificación:

mkdir /etc/bind/zones/
vim /etc/bind/zones/slave_ejemplo.lan

Luego dentro de este archivo colocamos la siguiente configuración:

$TTL 3D

@       IN      SOA     ns1.ejemplo.lan. hostmaster.ejemplo.lan. (
                        200808161       ; serial, fecha AAAA-MM-DD + serial
                        8H              ; refrescamiento, en segundos
                        2H              ; reentrar, segundos
                        4W              ; expira, segundos
                        1D )            ; minimo, segundos
;
                TXT     "Ejemplo.LAN, 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
ns1          A    192.168.249.1
ns2          A    192.168.249.2
www          CNAME    ns1

Esto es idéntico al master solo que identificamos como slave al archivo. Luego modificamos el archivo:

vim /etc/bind/named.conf.local

Y escribimos:

zone "ejemplo.lan" {
        type slave;
        file "/etc/bind/zones/slave_ejemplo.lan";
        masters { 192.168.249.1; };
        allow-notify { 192.168.249.1; };
};

Luego modificamos:

vim /etc/bind/named.conf

Y agregamos las siguientes líneas

server 192.168.249.1 {
        keys {
        TRANSFER;
    };
};

Y repetimos lo que hicimos de último con el servidor Maestro.

Modificamos el archivo /etc/bind/named.conf y agregamos las siguientes líneas:

include “/etc/bind/rndc.key”;

key “TRANSFER” {
algorithm hmac-md5;
secret “—HASHKEY—“;
};

server 192.168.249.1 {
keys {
TRANSFER;
};
};

Donde dice HASHKEY colocas la clave que generamos anteriormente. Y luego reiniciamos el servidor Bind:

/etc/init.d/bind9 restart

Ya con esto tenemos configurado el servidor Esclavo o Secundario, ahora debes indicarle a tus PC que que estan son las direcciones de servidores DNS primario y secundario que deben utilizar y si quieres probar que uno funciona cuando el otro se cae puedes detener el bind en cualquiera de los dos.

Espero que les haya servido este tutorial, cualquier duda, pregunta o sugerencia puedes dejar tu comentario y lo responderé a la brevedad posible.

Saludos

Olivers

Si quieres recibir notificaciones de cuando se publican nuevos artículos y tutoriales en Vensign por favor subscribete a nuestro boletín RSS.

69 comments

  1. Hola Olivers, muchas gracias por la guía, he aquí dos pequeños inconvenientes que me aparecieron.
    1) Nunca pude configurar el SYSLOGD, dado a que no existe el archivo en cuestión (etc/default/syslogd).
    2) a pesar de esto seguí adelante y continué, modifique resolv.conf y al momento de iniciar el servicio del bind (/etc/init.d/bind9 start) aparece lo siguiente
    * Starting domain name service… bind9 [fail]
    reviso el log del sistema y me dice lo siguiente:
    “Apr 27 18:48:52 Server named[4696]: starting BIND 9.8.1-P1 -u bind -t /var/lib/named
    Apr 27 18:48:52 Server named[4696]: built with ‘–prefix=/usr’ ‘–mandir=/usr/share/man’ ‘–infodir=/usr/share/info’ ‘–sysconfdir=/etc/bind’ ‘–localstatedir=/var’ ‘–enable-threads’ ‘–enable-largefile’ ‘–with-libtool’ ‘–enable-shared’ ‘–enable-static’ ‘–with-openssl=/usr’ ‘–with-gssapi=/usr’ ‘–with-gnu-ld’ ‘–with-geoip=/usr’ ‘–enable-ipv6′ ‘CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2′ ‘LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro’ ‘CPPFLAGS=-D_FORTIFY_SOURCE=2′
    Apr 27 18:48:52 Server named[4696]: adjusted limit on open files from 4096 to 1048576
    Apr 27 18:48:52 Server named[4696]: found 2 CPUs, using 2 worker threads
    Apr 27 18:48:52 Server named[4696]: using up to 4096 sockets
    Apr 27 18:48:52 Server named[4696]: initializing DST: openssl failure
    Apr 27 18:48:52 Server named[4696]: exiting (due to fatal error)”
    Estoy trabajando sobre Ubuntu 12.04
    Saludos!!!

    1. Hola Ignacio, en Ubuntu hay un par de cosas que cambian:

      1. El SYSLOGD lo vas a encontrar en

      /etc/init.d/sysklogd

      Ahí colocas la misma línea SYSLOGD=”-a /var/lib/named/dev/log”

      2. Este fallo se debe a AppArmor hay dos opciones deshabilitarlo (que no es para nada recomendable) o seguir los pasos que encuentras aquí:

      http://ubuntuforums.org/showthread.php?t=800471&page=2&p=5828381#post5828381

      Que es básicamente modificar el archivo de configuración de AppArmor en /etc/apparmor.d/usr.sbin.named (sino existe tienes que crearlo) y luego agregar las líneas que aparecen en ese link y también especificar un directorio diferente para el archivo PID de bind9.

      No he probado esta configuración si te funciona por favor dímelo, igual cuando tenga tiempo la pruebo y haré un nuevo tutorial con estás instrucciones para Ubuntu.

      Saludos

  2. Hola, tengo un problema he hecho muchas veces server bind en ubuntuserver y solo logro que se vea localmente pero por internet no se ve.. he visto muchos tutos pero siempre me queda igual.. tambien quisiera como configurar los ns por ejemplo ns1.ejemplo.com que es lo que me piden para comprar dominio gracias por su respuesta…

  3. Para los que tengan el error con los permisos (permission denied) es porque, obviamente, la carpeta no tiene los suficientes permisos.
    Para eso, fijense qué archivo no les levanta debido a eso… para luego hacer un chmod a la carpeta a donde se encuentra el archivo, y le dan los permisos de lectura y escritura.

    ej: a mi no me levantaba mi dominio.txt en /var/cache/bind

    asi que tuve que hacer un:
    sudo chmod 666 /var/cache/bind/*

    reiniciar bind, y listo

  4. Gracias Olivers por la respuesta….!

    pues he hecho las lineas, de seguro algo me falta de permisos, aunqe no encuentro que….

    me sigue apareciendo…:

    * Stopping domain name service… bind9
    rndc: connect failed: 127.0.0.1#953: connection refused
    …done.
    * Starting domain name service… bind9
    …fail!

    ahora.. mientras logro (o logramos) desifrar que paso.. en que me equivoque.. como hago para “desenjaular” al bind9?

    de antemano te agradezco infinitamente tu ayuda!!!

    Saludazos!!

  5. Que tal amigos….

    pues resulta que hize la jaula para el bind, pero algo hize mal ya que no puedo levantar el servicio bind9

    me aparece:

    /etc/init.d/bind9 restart
    * Stopping domain name service… bind9
    rndc: connect failed: 127.0.0.1#953: connection refused
    …done.
    * Starting domain name service… bind9
    …fail!

    en dmesg me dice cada que lo quiero levatar;

    [1278195.137882] type=1503 audit(1292466587.396:64): operation=”inode_permission” requested_mask=”r::” denied_mask=”r::” fsuid=115 name=”/var/lib/named/etc/bind/named.conf” pid=2935 profile=”/usr/sbin/named”

    y en el syslog me aparece que:

    Dec 15 20:29:47 cs named[2929]: starting BIND 9.5.1-P2.1 -4 -u bind -t /var/lib/named
    Dec 15 20:29:47 cs named[2929]: found 4 CPUs, using 4 worker threads
    Dec 15 20:29:47 cs named[2929]: using up to 4096 sockets
    Dec 15 20:29:47 cs named[2929]: loading configuration from ‘/etc/bind/named.conf’
    Dec 15 20:29:47 cs named[2929]: none:0: open: /etc/bind/named.conf: permission denied
    Dec 15 20:29:47 cs named[2929]: loading configuration: permission denied
    Dec 15 20:29:47 cs named[2929]: exiting (due to fatal error)

    obviamente se trata de un problema de permisos… pero para serles honesto, me he quedado sin ideas…. :(

    ojala alguien de ustedes pueda ayudarme….

    la parte de los fw y reverse no tengo problemas (funcionaba antes de la jaula jejeje) asi que aparentemente el problema es el permiso…..

    alguna idea de favor??

    Saludos y excelente manual!!!

  6. Hola!!

    antes que nada gracias por el manual, creo que es el mas completo que he leido hasta ahora, pero continuo teniendo un problema, cuando levanto bind9 me lanza el error:

    rndc: connect failed: 127.0.0.1#953: connection refused
    * Starting domain name service… bind9 [fail]

    me suena a permisos…. he hecho la primer parte de este manual pero aun continua el problema (no levanta bind9)

    en /etc/passwd en la ultma linea tengo:

    bind:x:115:124::/var/cache/bind:/bin/false

    y aparentemente todo lo que esta dentro de la “jaula” el own y group es bind

    alguna idea de donde puedo estar mal?

    mi ubuntu es: 9.04 jaunty (no lo puedo actualizar debido al libc6 :( necesito esa libreria y dejo de tener soporte y ya no esta en las demas….pero esa es otra historia :)

    de antemano agradezco la ayuda!!

  7. Hola, que tal.
    Muy bueno y muy útil el tutorial.

    Pero tengo una duda. ¿Cómo configuro el reenvío condicional en BIND9?

    Resulta que tengo un dominio Active Directory del tipo ad-domain.local (con un PDC Windows 2003 y un BDC Windows 2008) funcionando Ok.
    Además, tengo un enrutador GNU/Linux Debian Lenny (que está unido al dominio AD como miembro). La función de este linux es servir una DB MySQL, un servidor proxy SQUID y eventualmente un enrutador hacia internet para ciertos equipos para los cuales necesito la salida directa (y no a través del proxy). Pero ahora además, necesito servir nombres (e IPs) a una subred del tipo subnet.ad-domain.local
    Entonces quería configurar un servidor DNS en este linux, de forma tal que:
    resuelva los nombres de subred.ad-domain.local, reenvíe las consultas para ad-domain.local a los DNS del dominio ad-domain.local, y que para el resto los reenvíe al servidor DNS de mi ISP.
    He estado probando configuraciones pero no se como hacerlo de forma correcta.

  8. Los clientes XP estan unidos al windows server 2003. Ahora ¿Le puedo decir al server 2003 que mi ubuntu es DNS? Disculpa mi ignorancia. Yo he hecho lo siguiente, configuro bind como dns en mi red local y coloco la direccion ip en el XP de mi servidor linux en la parte de servodres DNS y no resuelve. Ahora tu sugerencia se refiere si no me equivoco es que el servidor dhcp le asigne la direccion de mi servidor a los clientes automaticamente. Se las he colocado estatico y no resuelve. Bueno seguire intentando. Espero me puedas seguir ayudando y un millon de gracias.

    1. Hola nuevamente, en teoria lo que debo hacer es que mi servidor linux sea dns secundario y configurar en el windows server indicar que este existe. Ahora alguien sabe como hacer eso en el windows server, porq el server linux ya esta super recontra configurado porque ya hice la prueba sin dominio windows y resuelve perfectamente, pero cuando uso un cliente xp que esta en el dominio es donde no resuelve. La unica forma que resuelva es “nombre.dominio-windows”. Gracias

  9. Saludos, tremenda explicacion, funciona todo ok.
    En mi empresa tenemos un servidor de dominio en windows server 2003, el dns funciona bien, nos hacemos ping por ip y por nombre. La red esta conformada por VLAN y esta configurado todo por DHCP. El problema es el siguiente: Tengo un equipo con ubuntu 10.04 el cual tiene instalado Apache2, Mysql 5.0, postgresql 8.4 y todos los sistemas corren bien. Configure el bind y localmente no arroja ningun tipo de error pero cuando intento acceder por nombre a la aplicacion desde un cliente XP no resuelve.
    Cree Hosts Virtuales y si resuelven pero asi “nombre-de-mi-servidor-linux.dominio-de-mi-empresa” cuando deberia ser solo el nombre del host virtual, aunque de igual forma no me gustaria resolver el problema a traves de apache si no por bind. Espero me puedas ayudar

    1. Hola Felix, gracias por tu comentario.

      Tengo una duda a quien tienes como Servidor de Dominio configurado en los Clientes XP? porque según dices al principio tu servidor de dominio principal es un Windows Server 2003 si vas a utilizar a Bind como tu servidor de dominio principal o secundario debes configurarlo en el cliente o configurarlo en tu servidor DHCP para que se asigne automáticamente. Esa es uno de los problemas que pueden estar ocurriendo.

      Verifica esto y cualquier duda vuelve a escribir estamos a la orden por aqui

      Saludos

  10. Hola Olivers estube haciendo la instalación de un servidor dns con el bind9 para colocarlo como esclavo una vez que yo reinicio el bind /etc/init.d/bind9 restart me sale el siguiente error:

    Stopping domain name service…: bind9rndc: connect failed: 127.0.0.1#953: connection refused
    .
    Starting domain name service…: bind9 failed!

    Cuando busco el los log /var/log/syslog me dice algo de “TRANSFER” si me puedes ayudar de que se trata lo del TRANSFER

    loading configuration from ‘/etc/bind/named.conf’
    using default UDP/IPv4 port range: [1024, 65535]
    using default UDP/IPv6 port range: [1024, 65535]
    listening on IPv4 interface lo, 127.0.0.1#53
    listening on IPv4 interface eth0, 172.16.5.7#53
    /etc/bind/named.conf:13: configuring key ‘TRANSFER’: bad base64 encoding
    loading configuration: bad base64 encoding
    exiting (due to fatal error)

    1. Hola Gerardo el error está cerca de la línea 3 de tu configuración en /etc/bind/named.conf como te lo dice el error.

      Revisa si cerca de esa línea hay una línea que dice algo como :

      secret “use /usr/sbin/dns-keygen to generate TSIG keys”;

      Si es así simplemente ejecuta esto en el terminal:

      /usr/sbin/dns-keygen

      Y copias el resultado de ese comando dentro de las comillas dobles de la línea anterior (borrando lo que estaba antes entre las comillas)

      Con esto se debería solucionar tu problema

      Dinos como te fue
      Saludos

  11. Hola Juan, este es un problema con el SELinux en Fedora, RedHat etc, que no permite que se modifiquen los archivos master del servidor Bind.

    Debes modificar SELinux para que permita modificar los archivos maestros (master) en el servidor maestro por el named (menos seguro) o llevar los archivos que quieras modificar a los directorios que crea SELinux para estos archivos:

    named_zone_t : para los archivos de zonas – $ROOTDIR/var/named/*
    named_conf_t : archivos de configuracion named – $ROOTDIR/etc/{named,rndc}.*
    named_cache_t: archivos modificables por named – $ROOTDIR/var/{tmp,named/{slaves,data}}

    Si quieres saber quien es $ROOTDIR simplemente ejecuta echo $ROOTDIR.

    Quizas esto te sirva de ayuda:

    http://www.bind9.net/BIND-FAQ (Busca la parte de SELinux)

    https://lists.isc.org/pipermail/bind-users/2005-December/060469.html

    Espero que esto te sirva

    Saludos
    Olivers

  12. Cordial Salido Olivers

    Mira tengo el siguiente problema y me gustaria que me colaboraras si no es molestia… te pego el error:

    Sistema Fedora 13
    [root@redes named]# service named start
    Starting named: [FAILED]

    [root@redes named]# tail -f /var/log/messages
    May 30 04:28:56 redes named[3768]: starting BIND 9.7.0-P1-RedHat-9.7.0-9.P1.fc13 -u named -t /var/named/chroot
    May 30 04:28:56 redes named[3768]: built with ‘–build=i386-redhat-linux-gnu’ ‘–host=i386-redhat-linux-gnu’ ‘–program-prefix=’ ‘–disable-dependency-tracking’ ‘–prefix=/usr’ ‘–exec-prefix=/usr’ ‘–bindir=/usr/bin’ ‘–sbindir=/usr/sbin’ ‘–sysconfdir=/etc’ ‘–datadir=/usr/share’ ‘–includedir=/usr/include’ ‘–libdir=/usr/lib’ ‘–libexecdir=/usr/libexec’ ‘–sharedstatedir=/var/lib’ ‘–mandir=/usr/share/man’ ‘–infodir=/usr/share/info’ ‘–with-libtool’ ‘–localstatedir=/var’ ‘–enable-threads’ ‘–enable-ipv6’ ‘–with-pic’ ‘–disable-static’ ‘–disable-openssl-version-check’ ‘–with-pkcs11=/usr/lib/pkcs11/PKCS11_API.so’ ‘–with-dlz-ldap=yes’ ‘–with-dlz-postgres=yes’ ‘–with-dlz-mysql=yes’ ‘–with-dlz-filesystem=yes’ ‘–with-gssapi=yes’ ‘–disable-isc-spnego’ ‘build_alias=i386-redhat-linux-gnu’ ‘host_alias=i386-redhat-linux-gnu’ ‘CFLAGS= -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables’ ‘CPPFLAGS= -DDIG_SIGCHASE’
    May 30 04:28:56 redes named[3768]: adjusted limit on open files from 1024 to 1048576
    May 30 04:28:56 redes named[3768]: found 1 CPU, using 1 worker thread
    May 30 04:28:56 redes named[3768]: using up to 4096 sockets
    May 30 04:28:56 redes named[3768]: loading configuration from ‘/etc/named.conf’
    May 30 04:28:56 redes named[3768]: reading built-in trusted keys from file ‘/etc/named.iscdlv.key’
    May 30 04:28:56 redes named[3768]: using default UDP/IPv4 port range: [1024, 65535]
    May 30 04:28:56 redes named[3768]: using default UDP/IPv6 port range: [1024, 65535]
    May 30 04:28:56 redes named[3768]: listening on IPv4 interface lo, 127.0.0.1#53
    May 30 04:28:56 redes named[3768]: listening on IPv4 interface eth1, 192.168.1.1#53
    May 30 04:28:56 redes named[3768]: listening on IPv6 interface lo, ::1#53
    May 30 04:28:56 redes named[3768]: generating session key for dynamic DNS
    May 30 04:28:56 redes named[3768]: could not configure root hints from ‘named.ca’: permission denied
    May 30 04:28:56 redes named[3768]: loading configuration: permission denied
    May 30 04:28:56 redes named[3768]: exiting (due to fatal error)

    Mil Gracias

  13. Hola Jorge,

    Si entiendo bien quieres que desde Internet puedan accesar a tu dominio, para hacer esto tienes que tener el dominio registrado (hay muchos sitios de registro de dominios), y ellos normalmente te dan un acceso a un panel de configuración donde colocas las IPs publicas de tu DNS, en este caso del que configuraste.

    Eso tarda unas horas en propagarse a través de los servidores en Internet. Ahora por lo que pude ver ese dominio ya está registrado a estas personas SOLE – The International Society of Logistics.

    No se si sea tu empresa si no lo es tendrías que registrar otro nombre.

    Espero que esto aclare tus dudas, cualquier otra pregunta vuelve a escribir

    Saludos
    Olivers

  14. Hola Oliver bueno para empezar he seguido al pie el tutorial y me ha resultado bien, localmente dentro de mi pc ejecuto http://www.sole.org y me da la pagina todo chido.
    dentro del Fordware bueno esa cosa tengo 4 isp 3 de la compañia que me da el servicio de internet y el otro es que publicaste, bueno ahora el problema es como le hago para que pueda verlo en otra maquina que de este dentro de la red o sea desde internet, para empezar en mi modem tango direccionado el puerto 80 y el 53 hacia mi ip 192.168.0.12 OK. Bueno yo he provado desde otra maquina ajena a mi red
    con http://www.sole.org y me da error pero si escribo mi ip publica que podriamos decir que es esta 201.170.20.90 si puedo ver mi pagina a que se debe esto. si puedes ayudarme te agradeceria mucho.

  15. Hola Oliver

    Se puede montar un servicio DNS con BIND teniendo una IP DINAMICA??
    Si se usa un servicio como no-ip o dyndns o cdmon podrias pasarme un ejemplo via coreo o mejor postearlo… ya que deseo montar un server de correo y tengo problemas con el MX.

    Muchas Gracias
    Miguel

  16. Hola, estoy tratando de configurar un DNS en Ubunto 9.10Server, pero tengo un error: **SERVER CAN´T FIND X.X.X.10.in-addr.arpa; SERVFAIL cuando intento que en el comando nslookup me resuelva el servidor tecleando la direccion ip. Cuando utilizo sistemas.com (nombre del dominio) si resuelve correcto el servidor DNS. Cual puede ser error?

  17. Hola victor, yo me equivoque en el comentario un lapsus mental y coloque mal el directorio donde se encuentran los logs, el correcto es:

    /var/log/syslog

    El problema que te sale me parece que es debido a que no estás ejecutando como root, debes ser root para poder ejecutar este comando

    Saludos
    Olivers

  18. Oliver
    Hola, sabes me muestra el siguiente error cuando reinicio bin

    etc/init.d/bind9 restart
    Stopping domain name service…: bind9rndc: connect failed: 127.0.0.1#953: connection refused

    busque el ficherosyslog en /etc/log/syslog pero en etc no existe el directorio log, como puedo solucionar este problema.

    te lo agradecería.

  19. Hola, he realizado todos los pasos que has realizado para crear el servidor dns, pero al arrancarlo me da un problema de permisos, esto es lo que me sale en el log: (uso ubuntu server 9.10)

    Sep 14 15:18:19 srvblackpearl named[15795]: starting BIND 9.5.1-P2 -u bind -t /var/lib/named
    Sep 14 15:18:19 srvblackpearl named[15795]: found 4 CPUs, using 4 worker threads
    Sep 14 15:18:19 srvblackpearl named[15795]: using up to 4096 sockets
    Sep 14 15:18:20 srvblackpearl named[15795]: loading configuration from ‘/etc/bind/named.conf’
    Sep 14 15:18:20 srvblackpearl named[15795]: none:0: open: /etc/bind/named.conf: permission denied
    Sep 14 15:18:20 srvblackpearl named[15795]: loading configuration: permission denied
    Sep 14 15:18:20 srvblackpearl named[15795]: exiting (due to fatal error)
    Sep 14 15:18:20 srvblackpearl kernel: [16970.350478] type=1503 audit(1252934300.001:34): operation=”inode_permission” requested_mask=”r::” denied_mask=”r::” fsuid=108 name=”/var/lib/named/etc/bind/named.conf” pid=15799 profile=”/usr/sbin/named

  20. Muy buena olivers he seguido tu tutorial pero me da error, comentarte que soy un poco novato el sistema que tengo es Ubuntu 8.10 .
    cuando escribo:
    /etc/init.d/bind9 start
    sale
    Starting domain name service…: bind9 failed!
    si pengo esto me sale
    /etc/init.d/bind9 restart
    Stopping domain name service…: bind9rndc: connect failed: 127.0.0.1#953: connection refused

    y con esto:
    cat /etc/log/syslog
    da este error
    cat: /etc/log/syslog: No such file or directory

    no se que hacer llevo mas de dos meses buscado informacion pero no soy capaz de hechar a funciona esto

    un saludo

  21. Hola erika, me preguntas que si es necesario tener internet para que este servicio pueda instalarse, pues si lo quieres instalar a través de apt-get pues si necesitas Internet o algún repositorio local, si tienes el CD o Imagen de Debian puedes probar instalarlo desde ahí. Hay muchos tutoriales en Internet de como colocar el CD como repositorio.

    Si ya instalaste el Bind que no me quedó muy claro por tu comentario, el error que te da debe ser un error en la configuración, debes ver en /etc/log/syslog cual es el error que está arrojando para poder ayudarte mejor. Busca las líneas que digan algo de Bind.

    Puedes ejecutar:

    cat /var/log/syslog

    Para ver los logs

    Saludos
    Olivers

  22. buenas tardes mi problema radica en que tengo el debian instalado en una maquina virtual y pues en el momento de restaurar el bind me dice Stopping domain name service….: bindrndc: connect failed: 127.0.0.1#953: connection refused
    failed!
    Starting domain name service…: bind failed!
    el mismo que le salia a algunos sera que me pueden ayudar ahhh y otra pregunta es necesario tener internet para qeu este servicio pueda instalarce

  23. Hola Gerson, para este caso que tu proveedor solo te da una IP dinámica debes utilizar un servicio como mydns (hay muchos disponibles la mayoria gratis) que te permite que con direcciones dinámicas tengas una dirección “fija”. Lo otro que debes tener si quieres poner tu propio servidor Web con dominio (ejemplo.com .net o lo que sea) tienes que tener el dominio registrado.

    Disculpa la tardanza en responder

    Saludos
    Olivers

  24. Hola Oliver

    Te felicito por tu brilante tutorial, solo necesito saber, ¿si mi ISP entrega solo IP DHCP como hago para cambiarla la ip, en esta configuracion de tu tutorial o solo tomo una ip dinamica de ese pool de direcciones del ISP y la coloco en el archivo de la zona vim /etc/bind/zones/master_ejemplo.lan, y con eso condeno la IP de ese pool, hermano agradezco la respuesta.

    Otro pregunta como hago para que configurar el servidor de correo y el WEB salgan por este mismo servidor DNS y lo tengo instalado en el mismo equipo.

    Nota: el sercio de comunicacion que utilizo son el ISP es un ADSL con IP DHCP

    Gracias de antemano por tu respuesta

  25. hola Oliver, te saludo un joven estudiante de informatica de Peru y te deseo agradecer y felicitar pues tu informacion es muy valioza, para nostros que iniciamos y tenemos alguna duda yo estoy aprendiendo estos temas por internet y me sirvio mucho tu tutorial y tus respuestas gracias, un saludo

    Marco A…

  26. Hola Mari, tienes que revisar los logs en busca del error porque con esa información no es suficiente, puedes ver unos comentarios más arriba como verificar el log, debes ejecutar:

    cat /var/log/syslog

    Y ver las líneas que tengan referencia a Bind para ver el error

    Verifica esto y coloca aquí las líneas donde especifica los errores con Bind

    Saludos
    Olivers

  27. Hola henser, creo que tienes una pequeña confusión, son dos servidores distintos el maestro y el esclavo (una pc es el master y una pc es el slave) si no no hay redundancia, y en el archivo /etc/bind/named.conf.local del esclavo solo debe ir:

    zone “ejemplo.lan” {
    type slave;
    file “/etc/bind/zones/slave_ejemplo.lan”;
    masters { 192.168.249.1; };
    allow-notify { 192.168.249.1; };
    };

    Por eso el error.

    En cuanto a la última pregunta no te entendí muy bien pero para detener el servicio bind ejecutas:

    /etc/init.d/bind9 stop

    Si estas en un ambiente de prueba puedes utilizar máquinas virtuales para simular los dos servidores

    Espero que te sirva cualquier cosa vuelve a preguntar.

    Saludos
    Olivers

  28. saludos olivers amigo si coloco asi falla

    //
    // Do any local configuration here
    //

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

    zone “compuhenser.no-ip.org” {
    type master;
    file “/etc/bind/zones/master_compuhenser.no-ip.org”;
    };

    zone “compuhenser.no-ip.org” {
    type slave;
    file “/etc/bind/zones/slave_compuhenser.no-ip.org”;
    masters { 192.168.0.1; };
    allow-notify { 192.168.0.1; };
    };

    pero asi no

    //
    // Do any local configuration here
    //

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

    zone “compuhenser.no-ip.org” {
    type master;
    file “/etc/bind/zones/master_compuhenser.no-ip.org”;
    };

    zone “compuhenser2.no-ip.org” {
    type slave;
    file “/etc/bind/zones/slave_compuhenser.no-ip.org”;
    masters { 192.168.0.1; };
    allow-notify { 192.168.0.1; };
    };

    otra pregunta como hago para detener el bind el el primer servidos en ns1. saludos

  29. Claro henser pero si te fijas bien una es en el archivo master_ejemplo.lan y otro en /etc/bind/named.conf.local según el error que veo que tienes lo declaraste dos veces dentro del archivo /etc/bind/named.conf.local (es decir está repetido):

    May 13 00:17:35 Zeus named[5719]: /etc/bind/named.conf.local:16: zone ‘compuhenser.no-ip.org’: already exists previous definition: /etc/bind/named.conf.local:10

    Según el error en la línea 10 y 16 tienes definido lo mismo.

    Revisa este archivo y verifica que no repites dos veces al misma zona.

    Saludos
    Olivers

  30. hola olivers.

    tu colocas esto

    Y escribimos las siguientes líneas:

    zone “ejemplo.lan” {
    type master;
    file “/etc/bind/zones/master_ejemplo.lan”;
    };

    y luego esto

    Luego modificamos el archivo:

    vim /etc/bind/named.conf.local

    Y escribimos:

    zone “ejemplo.lan” {
    type slave;
    file “/etc/bind/zones/slave_ejemplo.lan”;
    masters { 192.168.249.1; };
    allow-notify { 192.168.249.1; };
    };

    las zonas se llaman igual por eso en las dos coloque compuhenser.no-ip.org

    Saludos

  31. saludos eh logrado corregir varios errores mios pero al configurar el segundo servidor y reiniciar bind me da error

    tail /var/log/syslog
    May 13 00:12:49 Zeus named[2010]: loading configuration: failure
    May 13 00:12:49 Zeus named[2010]: exiting (due to fatal error)
    May 13 00:17:02 Zeus /USR/SBIN/CRON[5274]: (root) CMD ( cd / && run-parts –report /etc/cron.hourly)
    May 13 00:17:35 Zeus named[5719]: starting BIND 9.5.1-P1 -u bind -t /var/lib/named
    May 13 00:17:35 Zeus named[5719]: found 2 CPUs, using 2 worker threads
    May 13 00:17:35 Zeus named[5719]: using up to 4096 sockets
    May 13 00:17:35 Zeus named[5719]: loading configuration from ‘/etc/bind/named.conf’
    May 13 00:17:35 Zeus named[5719]: /etc/bind/named.conf.local:16: zone ‘compuhenser.no-ip.org’: already exists previous definition: /etc/bind/named.conf.local:10
    May 13 00:17:35 Zeus named[5719]: loading configuration: failure
    May 13 00:17:35 Zeus named[5719]: exiting (due to fatal error)

  32. Hola henser, el primer error se debe a que el bind aún no está corriendo deberia ser el comando:

    /etc/init.d/bind9 start

    El segundo debe ser un error en la configuración, debes ver en /var/log/syslog cual es el error que está arrojando para poder ayudarte mejor. Busca las líneas que digan algo de Bind.

    Puedes ejecutar:

    cat /etc/log/syslog

    Para ver los logs

    Saludos
    Olivers

  33. saludos ya me responde el host

    pero despues que coloco el haskey no funciona el bind

    /etc/init.d/bind9 restart
    Stopping domain name service…: bind9rndc: connect failed: 127.0.0.1#953: connection refused
    .
    Starting domain name service…: bind9 failed!

  34. Hola Nanos, disculpa la tardanza en responder, cual es el mensaje de error que te arroja el bind?

    Puedes ver los logs después de correr bind ejecutando tail /var/log/messages y tail/var/log/syslog

    Para ver cual es el problema, si quieres pega los resultados aqui solo lo que tengo que ver con bind porque puedes tener muchos mensajes ahi y vemos como te podemos ayudar mejor

    Saludos
    Olivers

  35. Intento e intento pero nada.. ingreso el master, y el servicio se inicia sin problema alguno, pero cuando intento meter el slave, siguiendo los pasos que indicas, no anda mas el bind.. :( ya no se que hacer

    “rndc: connect failed: 127.0.0.1#953: connection refused”

    tengo esto en el name.conf.local

    zone “midominio.com” {
    type master;
    file “/etc/bind/zones/midominio.com”;
    };

    y esto en zones/midominio.com

    $TTL 3D

    @ IN SOA ns1.midominio.com. hostmaster.midominio.com. (
    200808161 ; serial, fecha AAAA-MM-DD + serial
    8H ; refrescamiento, en segundos
    2H ; reentrar, segundos
    4W ; expira, segundos
    1D ) ; minimo, segundos
    ;
    TXT “midominio.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
    ns1 A MIIP
    ns2 A MIIP
    www CNAME ns1

    Hasta hay el bind9 funciona.. pero..

    ahora cuando trato de poner el slave lo primero que hago es crear el slave_midominio.com

    y dejo esto

    $TTL 3D

    @ IN SOA ns1.midominio.com. hostmaster.midominio.com. (
    200808161 ; serial, fecha AAAA-MM-DD + serial
    8H ; refrescamiento, en segundos
    2H ; reentrar, segundos
    4W ; expira, segundos
    1D ) ; minimo, segundos
    ;
    TXT “midominio.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
    ns1 A MIIP
    ns2 A MIIP
    www CNAME ns1

    ahora edito el name.conf.local y agrego esto

    zone “midominio.com” {
    type slave;
    file “/etc/bind/zones/slave_midominio.com” masters { MIIP; };
    allow-notify { MIIP; };
    ;
    };

  36. Hola Carlos, gracias por tu comentario. Si si puedes colocar tu servidor web con esa IP, tienes que tener cuidado sin embargo de proteger lo más que puedas ese servidor (bloquear puertos, servicios, etc) un firewall sería una buena idea.

    En cuanto al dominio si lo tienes que registrar y colocarlo en tu servidor DNS o en algún servidor de dominio que apunte hacia tu servidor Web, creo que OpenDNS tiene un servicio parecido pero no estoy seguro, solo lo he utilizado como servidor DNS particular.

    Espero que compartas la experiencia de montar tu servidor Web con nosotros, cualquier duda puedes escribir aquí.

    Saludos
    Olivers

  37. Antes que nada gracias por el material,la duda que tengo es la siguiente, mi proveedor me ofrece un ip estatica que es privada 10.201.xx.xxx y yo quisiera saber si podria en esa ip colocar un servidor web? tengo que registrar el nombre del dominio o opendns me soluciona eso?
    desde ya muchas gracias

  38. Hola amigo Olivers:
    Bien el problema que tenia con el error de la linea 15 lo pude resolver creando un directorio de nombre “log” yo no me envio el error desde el “cron”

    Ahora que me dices que puedo usar el “bind” desde una red publica, quiero entonces preguntar si el servidor de dominios “cdmon.com” seria el que a mi me puede servir porque tengo cuenta alli, ellos me dicen que tienen tres NS para esa funcion, seria ns1.net, ns2.net y ns3.net, bien me puedes sugerir donde colocar eos ns, para que apunten a cdmon.com.

    Muchas gracias.

  39. Hola PedroCol, por lo que veo en las últimas líneas este error no tiene nada que ver con Bind, sino con alguna línea del Cron (que es un servicio que se ejecuta periódicamente) puedes revisar este archivo donde te lo indica en /etc/cron.daily/sysklogd y revisar la línea 15.

    En cuanto a la otro que me preguntas que si solo funciona para una red privada, la respuesta es no, los DNS pueden ser utilizados y se utilizan de hecho para resolver direcciones tanto públicas como privadas, eso si para utilizarlo como me dices con una IP pública tendrías que tener el nombre de dominio registrado y una IP fija o con algún servicio como mydns.

    Espero que te sirva

    Saludos
    Olivers

  40. Hola Olivers, un saludo.
    Hice todo como aparece en la guia, pero me da un mensaje a diario como que falta el archivo “log” yo lo creo y sigue indicando lo mismo.

    /etc/default/syslogd: line 15: /var/lib/named/dev/log:
    Eso aparece en el archivo en la linea 15 sin los dos puntos al final.

    Otra pregunta yo estoy probando con una IP publica, es decir la que me asigna el proveedor desde mi DHCP.

    Creo que eso solo debe funcionar si se utiliza una red privada, sacame de esa duda, muchas gracias.

    Asunto: Cron test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.daily )
    Fecha: Tue, 3 Feb 2009 06:25:12 -0430

    /etc/cron.daily/sysklogd:
    /etc/default/syslogd: line 15: /var/lib/named/dev/log: No existe el fichero o el directorio

  41. Hola javier, revisa bien el tutorial y verifica que hayas seguido todos los pasos. Tambien tienes que ver el archivo lo tienes que colocar dentro de la carpeta /etc/bind/zones a menos que lo hayas cambiado en tu archivo de configuración de bind.

    Como te digo verifica bien el tutorial si sigues con problemas por favor escribe

    Saludos
    Olivers

  42. hola esto me permitiria ver las demas computadoras y viceversa claro que habria que asignarle un ip a c/u ya que son 5 que corren en windows xp y 2 servidores en fedora una esta en wireless y todas estan conectadas a traves de un swicth linksys sd208

    de antemano gracias

  43. Hola a todos..
    En la empresa donde estoy existe un servidor dns primario y secundario donde solo dan servicio de resolucion de nombres al correo, intranet y da salida hacia el proveedor de internet, el problema q tengo es que necesito realizar un servidor dns unicamente para resolucion de nombres internos de algunos servidores.

    He creado un archivo en /etc/bind/db.midominio.com

    El cual contiene lo siguiente:
    ;
    ; BIND data file for local loopback interface
    ;
    $TTL 604800
    @ IN SOA ns.midominico.com. root.localhost. (
    1 ; Serial
    604800 ; Refresh
    86400 ; Retry
    2419200 ; Expire
    604800 ) ; Negative Cache TTL
    ;
    @ IN NS ns
    host1 A 10.50.1.40
    host2 A 10.50.1.34

    luego reinicio el servicio bind del servidor y coloco en el /etc/resolv.conf del host1

    nameserver ip-del-servidor-dns

    Y no resuelve el nombre… alguna sugerencia que puedan darme?…

    Gracias

  44. Hola voce, el primer error lo más seguro es que se deba a que no tienes ningún servidor llamado ns1.mmitalia.org. Tienes que llamar a tu servidor maestro así (ojo no tiene que ser necesariamente ns1.algo) puedes llamarlo como quieras solo lo tienes que cambiar en el archivo de configuración, y recuerda que al cambiarle el nombre lo tienes que colocar en tu archivo /etc/hostname.

    Con respecto a la duda esa IP tiene que ser la de un servidor DNS externo en el que confies, ya sea el de tu ISP o algún otro servidor externo del cual va a depender tu servidor DNS.

    Espero que te sirva, cualquier otra duda vuelve a escribir

    Saludos
    Olivers

  45. Lo siento disculpame, la anterior fue un error que cometi, el error que me sale es la siguiente.

    host ns1.mmitalia.org not found 2 (SERVFAIL)

    podria indicarme donde esta el error.
    la otra duda que tengo es: se debe configurar en forwarders { 208.67.222.222 }; con la IP PUBLICA o Con la IP de mi red interna.
    Te agradesco la ayuda.
    saludos
    voce

  46. tengo instalado como servidor ubuntu 8.04,me configura muy bien hasta la configuracion del servidor maestro, despues empieza con errores, cuando se realiza la encriptacion empieza el problema, y peor cuando se configura el servidor secundario o esclavo, ya directamente no reponde podrias indicarme donde esta el problema.
    gracias.
    saludos.

  47. Hola
    Te comento que todo salio bien solo la parte de la seguridad “llave incriptada ” que no funciona me salta el siguiente error
    Stopping domain name service….: bindrndc: connect failed: 127.0.0.1#953: connection refused
    failed!
    Starting domain name service…: bind failed!

    Si pudieras darme algun consejo como superarlo te lo agradesco

    Atte
    neco