miércoles, 3 de noviembre de 2010

Instalación y configuración básica de un dominio con bind9 en CentOS

Para mantener un dominio es necesario instalar y configurar un servidor DNS. El más utilizado en entornos linux es el Bind (versión 9.7.2-P2 en el momento de escribir este artículo).

El primer paso es instalarlo desde los repositorios de CentOS. Esto se hace con el comando:

yum install bind

Una vez instalado se debe crear un archivo de configuración. Lo siguientes pasos cubren una configuración sencilla que permita tener en marcha un servidor DNS en poco tiempo. La configuración del servidor está en el archivo /etc/named.conf. Todas las sentencias disponibles para configurar el servidor bind se pueden consultar en el Manual de Referencia del Administrador ARMv9.6 .

El archivo se puede editar con el comando:

nano /etc/named.conf

El contenido que hay que introducir es:

options {
        directory "/var/named";
};

zone "." {
        type hint;
        file "named.root";
};

zone "trombotic.tic" {
        type master;
        file "trombotic.tic.zone";
};

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

La sentencia options permite configurar opciones globales del servidor. En este caso solo contiene la subsentencia directory que indica el directorio del sistema donde están los archivos de zona. La subsentencia type indica el tipo de zona, y en el caso de poner master significa que este servidor es el que tiene la copia original de los datos de la zona (No es un servidor secundario). Por último la subsentencia file indica el nombre del archivo de zona.

El servidor dns para definir un dominio utiliza zonas. Una zona contiene la información que maneja un dns, es decir, la relación entre los nombres de las máquinas y sus direcciones ip ( y alguna cosilla más). Esta información se representa mediante registros de recursos incluidos dentro de los archivos de zona.

Por ejemplo, en este servidor existe una zona llamada trombotic.tic que se corresponde con el dominio trombotic.tic cuyo archivo de zona se llama trombotic.tic.zone. Como dentro de la sentencia options existe la subsentencia directory con valor /var/named, el archivo de zona para trombotic.tic es /var/named/trombotic.tic.zone. Esta zona se encarga de la resolución de nombres de dominio a direcciones ip.

A parte, también existe una zona llamada 1.168.192.in-addr.arpa que es la que se encarga de la resolución inversa, es decir, a partir de una dirección ip obtener el nombre de dominio. No es obligatoria para tener resolución de nombres, pero es necesaria para que algunos servicios funcionen bien. Las zonas de resolución inversa reciben el nombre de la dirección de red o subred, sin los ceros, escritas al revés y con el sufijo .in-addr.arpa. en este caso la dirección de la red es 192.168.1.0/24 así que se coge el 192.168.1, se le da la vuelta para que quede 1.168.192 y se le añade .in-adder.arpa.

Una vez creado el archivo de configuración , hay que crear los archivos de zona.
Dentro del directorio /var/named se deben crear tres archivos:
  • named.root que contiene una copia de los servidores raíz DNS.
  • trombotic.tic.zone que contiene los registros de las zona trombotic.tic.
  • 1.168.192.in-addr.arpa.zone que contiene los registros de resolución inversa para las direcciones de la red 192.168.1.0/24.
Se puede obtener una copia actualizada de los servidores DNS raíz en www.internic.net. Para descargar el archivo de named.root se puede utilizar el comando:

wget -O - http://www.internic.net/zones/named.root > /var/named/named.root


El contenido del archivo /var/named/trombotic.tic.zone podría ser así:

@               IN      SOA ns.trombotic.tic admin.trombotic.tic (
1       ;serial
24h     ;refresh
1h      ;retry
7d      ;expire
1h      ;negative ttl
)

                IN      NS ns.trombotic.tic.

@               IN      MX 1    servidor.trombotic.tic.

servidor        IN      A 192.168.1.200
router          IN      A 192.168.1.1

ns              IN      CNAME servidor
smtp            IN      CNAME servidor
pop3            IN      CNAME servidor
www             IN      CNAME servidor
ftp             IN      CNAME servidor


Los archivos de zona contienen registros de recuros, que es la información que maneja el servidor dns acerca de la zona. Hay varios tipos de registros de recurso: soa,a,ns,mx,cname,ptr,... Como este articulo no pretende ser un manual de bind (se puede buscar el google y seguro que salen cientos), basta con decir que en este archivo se esta indicando lo siguiente (Entre paréntesis esta el tipo de registro que indica esta información):
  • que la dirección de correo del administrador de la zona es admin@trombotic.tic (SOA).
  • que esta zona la lleva un servidor dns llamado ns.trombotic.tic (NS) que realmente es un alias de servidor.trombotic.tic (CNAME).
  • que el dominio tiene un único servidor que recoge correo electrónico llamado servidor.trombotic.tic (MX).
  • que hay una máquina llamada servidor.trombotic.tic con direccion ip 192.168.1.200 (A).
  • que hay una máquina llamada router.trombotic.tic con direccion ip 192.168.1.1 (A).
  • que servidor.trombotic.tic tiene varios nombres (CNAME): ns.trombotic.tic, smtp.trombotic.tic, pop3.trombotic.tic,www.trombotic.tic y ftp.trombotic.tic.
Básicamente en esta red hay una única maquina que proporciona todos los servicios, que es servidor.trombotic.tic y otra que conecta nuestra red con Internet, que es router.trombotic.tic.

El contenido del archivo /var/named/1.168.192.in-addr.arpa.zone podría ser así:

@               IN      SOA ns.trombotic.tic admin.trombotic.tic (
1       ;serial
24h     ;refresh
1h      ;retry
7d      ;expire
1h      ;negative ttl
)

                IN      NS ns.trombotic.tic.

200             IN      PTR servidor.trombotic.tic.
1               IN      PTR router.trombotic.tic.


En este archivo de zona la información mas importante es:
  • que existe una maquina con dirección ip 192.168.1.200 que se llama servidor.trombotic.tic (PTR).
  • que existe una maquina con direccion ip 192.168.1.1 que se llama router.trombotic.tic (PTR).
Hay que tener en cuenta que en el registro de recurso sólo pone el último número de la dirección ip y que el propio servidor añade el nombre de la zona para poder obtener la dirección ip completa. Por ejemplo, en la linea que empieza por 200, hay que añadir al final 1.168.192.in-addr.arpa y de aquí se obtienen 200.1.168.192.in-addr.arpa. Se le quita el in-addr.arpa y se le da la vuelta para que quede la dirección 192.168.1.200.

Una vez configurado sólo es necesario arrancar el servidor dns con el comando:

service named start


Para resolver cualquier duda se puede utilizar los comentarios del artículo.

3 comentarios:

  1. Hola Iván, soy alumno de tu clase. Tengo tal vez una cuestión algo tonta. Me he quedado en la orden wget. Previamente has concretado que teníamos que hacer 3 archivos:
    named.root
    trombotic.tic.zone
    1.168.192.in-addr.arpa.zone
    Bien, entro en modo gráfico a var/named y ni veo la carpeta named y en var no puedo crear ningun archivo, he de estar en superusuario, en el terminal estoy logueado como tal pero sigo sin poder... seguiré buscando y probando... Un saludo y gracias.

    ResponderEliminar
  2. Bien, hasta ahora tipeando ésto como root y como dir actual /var:

    mkdir /var/named

    gedit named.root >/var/named/named.root
    gedit trombotic.tic.zone > /var/named/trombotic.tic.zone
    gedit 1.168.192.in-addr.arpa.zone > /var/named/trombotic.tic.zone

    Con eso parece que se han creado los 3 files, edito con gedit cada uno de ellos e introduzco tus ejemplos. Hasta ahí no ha dado mayores problemas, pero al intentar restaurar el servicio:

    service named start

    me dice que no lo reconoce
    "named: unreconigzed service"
    seguiría estando en /var/named... no sé si tal vez está ahí el error... algun error que esté cometiendo?

    ResponderEliminar
  3. En CentOS el script de arranque para el servidor dns se llama named, pero si estas usando Ubuntu, el script se llama bind9.

    Prueba ejecutando:
    service bind9 start

    El las distros que no tienen el comando service puedes ejecutar directamente el script de arranque de la siguiente forma para CentOS:

    /etc/init.d/named

    Y para Ubuntu:

    /etc/init.d/bind9

    ResponderEliminar