Configurar DNS Server en modo chroot con BIND en CentOS 6/7

(Esta entrada ha sido actualizada el 5 de julio del 2017)

En las versiones 6 en adelante de RedHat y sus distribuciones asociadas, entre ellas CentOS 6, han habido cambios en la forma en cómo se configura y administra el servicio Servidor DNS, el cual está asociado a la versión 9.x del paquete BIND.

Ahora CentOS nos permite descargar una versión mínima, que es ideal para servidores, y que no trae toda la paquetería que a veces resulta inútil.

Vamos a descargar e instalar la última versión de CentOS. Para ello, podemos visitar alguno de los siguientes enlaces:

CentOS 6.x

CentOS 7.x


Para una guía de instalación, favor visitar el link: http://landoflinux.com/linux_install_centos_69_server_minimal.html

Para una guía paso a paso de la configuración inicial, favor viisitar el siguiente link: http://evollution.net/?p=363


Una vez instalada la distro, necesitaremos algunos paquetes útiles:


1
2
yum -y install nano
yum -y install bind bind-chroot

I. Editar /etc/hosts

El archivo debe contener una línea que haga referencia a nuestro servidor. La sintaxis es: [Direccion IP] [FQDN] [hostname]. Supongamos que nuestro servidor se va a llamar dns1 (este nombre debió definirse durante el proceso de instalación del sistema operativo)


1
 Ej: 192.168.0.8    dns1.evollution.com     dns1

II. Configurar Bind chroot

Una vez instalados los paquetes bind y bind-chroot,el sistema crea una estructura a manera de ejemplo en /usr/share/doc/bind-9.x.x/sample/var/named. Debemos copiar estos archivos a nuestro directorio real.


1
2
3
4
5
6
7
8
9
cp -R /usr/share/doc/bind-9.9.4/sample/var/named/* /var/named/chroot/var/named/
touch /var/named/chroot/var/named/data/cache_dump.db
touch /var/named/chroot/var/named/data/named_stats.txt
touch /var/named/chroot/var/named/data/named_mem_stats.txt
touch /var/named/chroot/var/named/data/named.run
mkdir /var/named/chroot/var/named/dynamic
touch /var/named/chroot/var/named/dynamic/managed-keys.bind
chown -R root:named /var/named/chroot/var/named/data
chown -R root:named /var/named/chroot/var/named/dynamic

Si no usamos IPv6, debemos ejecutar la siguiente linea. (no lo hagan si usan IPv6)


1
echo 'OPTIONS="-4"' >> /etc/sysconfig/named

Luego, hay que generar nuestra propia llave RNDC.


1
2
rndc-confgen -a -c /etc/rndc.key
chmod 755 /etc/rndc.key

El proceso de generar la llave RNDC puede tomar hasta 15 minutos, dependiendo del equipo, por lo que es buena idea que el proceso se ejecute en background agregando un “&” al final de la línea


1
rndc-confgen -a -c /etc/rndc.key &

Una vez generada la llave, debemos copiarla en nuestro entorno ‘chrooted’


1
2
cp /etc/rndc.key /var/named/chroot/etc
chmod 755 /var/named/chroot/etc/rndc.key

Los archivos de zona deben crearse en /var/named/chroot/var/named/data. Ejemplo de un archivo de zona para evollution.com:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$TTL 300
@       IN      SOA     dns1.evollution.com.  mr.evollution.net. (
                2017050801
                7200
                7200
                1604800
                10800 )

@       IN      NS      dns1.evollution.com.

@       IN      MX      10      dns1.evollution.com.

@               IN      A       192.168.0.8
dns1            IN      A       192.168.0.8
www             IN      A       192.168.0.8
mail            IN      A       192.168.0.8

Ejemplo del archivo named.conf

Este es el archivo ‘core’ de nuestra configuración. Este es un ejemplo básico pero bien útil para empezar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
include "/etc/rndc.key";

controls {       
  inet 127.0.0.1
  allow { localhost; }
  keys { "rndc-key"; };
};
acl "trusted" { 11.22.33.44; 11.22.33.45; };

options {    
     listen-on port 53 { 127.0.0.1; 11.22.33.44; 11.22.33.45; };
     directory "/var/named";
     dump-file "/var/named/data/cache_dump.db";
     statistics-file "/var/named/data/named_stats.txt";
     memstatistics-file "/var/named/data/named_mem_stats.txt";
     allow-query     { any; };
     allow-recursion { trusted; };
     dnssec-enable yes;
     dnssec-validation yes;
     dnssec-lookaside auto;

/* Path to ISC DLV key */
     bindkeys-file "/etc/named.iscdlv.key"; };

logging {
     channel default_debug {
           file "data/named.run";
           severity dynamic;
           };
         };

zone "." IN {
         type hint;
         file "named.ca";
};

zone "evollution.com" {
         type master;
         file "data/evollution.com.zone";
};

include "/etc/named.rfc1912.zones";
Como siempre, cualquier consulta, estoy a la orden ..

11 thoughts on “Configurar DNS Server en modo chroot con BIND en CentOS 6/7

  1. wil

    Estiamado soy principiante en gnu con linux y sinceramente no entiendo tu tuto esmuy general y no detallado por fa si pudieras exolicar un poco mas detallado gracias

    1. mr.evo Post author

      Hola Wil. Lo que pasa es que yo lo he puesto pensando en aquellos administradores que ya tienen algo de experiencia. Pero si tienes alguna duda en particular, no dudes en preguntarme.

      En general, lo que tenés que hacer es instalar el CentOS 6, para entornos de servidor te recomiendo la versión minimal que viene en CD (son menos de 400MB). Esta no tiene interfaz gráfica y tampoco la gran cantidad de utilitarios que vienen en el DVD. Este lo descargás desde el sitio de CentOS (www.centos.org) en formato .iso

      Una vez que tengas descargada la imagen, quemala en un CD y la instalás. Durante la instalación vas a definir varios aspectos de configuración del sistema, como la zona horaria, contraseña del root, etc. Una vez que instalés y tengás configurado, podés empezar con la información que está aquí para configurar el servidor DNS.

      Pero nuevamente, si tienes preguntas puntuales, tú me las haces para irte aclarando, que para eso estamos .. 😉

      Saludos

  2. Jose Luis Urbina

    Hola.
    Bueno primero que todo tu explicacion esta buena pero necesito saber un poco mas de la configuracion te agradesco de antemano si puedes decirme donde buscar mas informacion

  3. Jose Luis Urbina

    Hola Mr. Evo creo que Wil tiene razon en lo de tu explicacion ya que es mas avanzada y para empezar es muy general verdaderamente necesito algo mas detallado ya ojie la pagina que publicastes en tu repuesta y aun no encuentro lo que busco.
    Bien te explico…
    No tengo el gran conocimiento en servidores y quiero actualizar uno de centos 5 a la distribucion 6 bueno y creo que tu esperas consultas avanzadas.
    Saludos.

    1. mr.evo Post author

      Qué tal José Luis? Yo nunca he optado por hacer un upgrade de versión de software. La última vez que lo intenté se echó todo a perder y tuve al final que reinstalar nuevamente.

      En el sitio de CentOS hay una guia de como hacer la migración, sin embargo la misma empieza con una advertencia que pueden producirse daños al filesystem o al sistema operativo si no se sigue al pie de la letra, por lo que la recomendación sigue siendo hacer un respaldo de las configuraciones y reinstalar todo el sistema.

      La versión 6 de CentOS trae muchas diferencias con respecto a la versión 5. Por ejemplo, CentOS 6 utiliza el filesystem ext4 en vez del ext3 que viene con la versión 5. Esto representa un gran avance en cuanto al desempeño del filesystem.

      Otros cambios están en la versión de los paquetes, que permiten utilizar las versiones más actualizadas.

      Y otro cambio importante y recomendado, es utilizar la versión de 64 bits, por lo que si tienes una versión a 32 bits, lo mejor es reformatear por completo el disco para aprovechar todas las nuevas ventajas que la versión 6 trae.

    2. mr.evo Post author

      Voy a tomar en cuenta su consideración y escribir los post más detallados para que sirvan de guía general a una mayor cantidad de personas.

      Gracias y nos estamos leyendo 😉

  4. Jose Luis Urbina

    Hola Mr. Evo
    Esta vez te te explicare bien lo que deseo hacer ya que tienes toda la razon en lo que comentaste.
    Bien…..
    Tengo un servidor que es donde actualmente esta instalado el centos 5 de 32 bit y donde esta corriendo todo bien.
    Tengo uno donde estoy trabajando con la distribucion nueva de centos ya esta instalado puesto en la red actualizado y con lo necesario, instale bind, pero ahi es donde tengo el problema no he encontrado una configuracion de bind que logre entender ya que hay cosas que estan fuera de mi alcanse.
    Estoy utilizando arquitectura de 64 bit aun no he tocado nada en bin o configurado para montar el dns como te decia antes no he entendido muy bien.
    Gracias por tus respuestas.

  5. mr.evo Post author

    @José Luis. Si ya tenés el sistema operativo instalado y configurado a nivel de red, basta con que sigas paso a paso lo que está aquí. Puedes seguirlo sin problemas que te garantizo que funciona. Empieza donde está la instalación del nano y el bind

    yum -y install nano
    yum -y install bind bind-chroot

    y sigue luego las instrucciones. Paso a paso.

    Si tienes un pegón en algún punto en particular me lo hacés saber.

    Saludos

Leave a Reply

Your email address will not be published. Required fields are marked *