Como instalar BIND 9 en linux

BIND es el servidor de DNS mas usado en Internet. Yo monte mi primer servidor de DNS en el año 2001, y específicamente fue BIND 9 que fue la que sustituyo al famoso y temido BIND 8.

En esta guía, explicare como montar un servidor BIND 9 primario con servidores de DNS esclavos, siempre utilizando BIND 9 en todos los servidores.

Como ejemplo, vamos a utilizar las siguientes direcciones IP para los servidores de DNS:

Servidor Primario de DNS: 10.1.1.1 – ns1.hola.com

Servidor Secundario de DNS: 10.1.1.2 – ns2.hola.com

Servidor Terciario de DNS: 10.1.1.3 – ns3.hola.com

Instalemos el paquete bind9. Esto lo hacemos de la siguiente manera:

web:/etc# apt-get install bind9
Reading package lists... Done
Building dependency tree... Done
Suggested packages:
  bind9-doc
The following NEW packages will be installed:
  bind9
0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
Need to get 297kB of archives.
After unpacking 782kB of additional disk space will be used.
Get:1 http://ftp.debian.org etch/main bind9 1:9.3.4-2etch3
Fetched 297kB in 0s (760kB/s)
Selecting previously deselected package bind9.
Unpacking bind9 (from .../bind9_1%3a9.3.4-2etch3_i386.deb) ...
Setting up bind9 (9.3.4-2etch3) ...
Adding group `bind' (GID 104) ...
Done.
Adding system user `bind' (UID 104) ...
Adding new user `bind' (UID 104) with group `bind' ...
Not creating home directory `/var/cache/bind'.
wrote key file "/etc/bind/rndc.key"
Starting domain name service...: bind.

Listo, ya esta instalado bind9.

Yo necesito que el servidor lleve un historial de las peticiones que hacen al servidor, así que modifico el archivo /etc/bind/named.conf y agrego lo siguiente al final:

logging {
channel “querylog” { file “/var/log/bind9.log”; print-time yes; };
category queries { querylog; };
};

Ademas de esto, tengo que configurar el servidor BIND primario para que solo acepte peticiones hacia los dominios de los cuales es un Servidor de Dominio, (los dominios de los cuales el va a ser un name server) y también las direcciones IP de los servidores BIND esclavos.

El archivo /etc/bind/named.conf.options se encuentra configurado de la siguiente manera:

options {
directory “/var/cache/bind”;

// If there is a firewall between you and nameservers you want
// to talk to, you might need to uncomment the query-source
// directive below. Previous versions of BIND always asked
// questions using port 53, but BIND 8.1 and later use an unprivileged
// port by default.

// query-source address * port 53;

// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0’s placeholder.

// forwarders {
// 0.0.0.0;
// };

auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};

Le haré los siguientes cambios:

options {
directory “/var/cache/bind”;
allow-query { 10.1.1.1/28; } ;
allow-transfer { none; };
// If there is a firewall between you and nameservers you want
// to talk to, you might need to uncomment the query-source
// directive below.  Previous versions of BIND always asked
// questions using port 53, but BIND 8.1 and later use an unprivileged
// port by default.

// query-source address * port 53;

// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0’s placeholder.

// forwarders {
//      0.0.0.0;
// };

auth-nxdomain no;    # conform to RFC1035
recursion no;
};

acl slaves {
10.1.1.2/29;           // ns2
10.1.1.3/29;         // ns3
};

Explicare cada campo.

allow-query { 10.1.1.1/28; } ;

IP del servidor Primario de DNS

allow-transfer { none; };

Con este parámetro restringimos la transferencia de zonas a Servidores DNS esclavos que no estén autorizados. Esta es una buena medida de seguridad, ya que evitamos que personas ajenas se enteren de las direcciones IP que están dentro de la zona de DNS de un dominio.

acl slaves {
10.1.1.2/29;           // ns2
10.1.1.3/29;         // ns3
};

Listado de acceso (access list) de los servidores de DNS esclavos.

Después de hacer estos cambios vamos a crear una zona de DNS para el dominio hola.com.

Creamos un archivo llamado hola.com.hosts en el directorio /var/cache/bind. Dentro de este archivo pondremos lo siguiente:

$TTL 86400
@ IN SOA ns1.hola.com. root.hola.com. (
2008281000 ; serial
3600 ; refresh
7200 ; retry
604800 ; expire
86400 ; minimum
)
@ IN NS ns1.hola.com.
@ IN NS ns2.hola.com.
@ IN NS ns3.hola.com.
IN A 10.1.1.5
www IN CNAME hola.com.

Con esta zona de DNS de hola.com estamos apuntando, hola.com y  http://www.hola.com hacia la IP 10.1.1.5.

Hay que tener en cuenta que los sub dominios ns1.hola.com, ns2.hola.com y ns3.hola.com, los configure con mi proveedor de dominio, (Godaddy) ya que desde el proveedor del dominio (Godaddy)  indicaremos al mundo de Internet que ns1.hola.com apunta a 10.1.1.1 y asi sucesivamente con los otros servidores de DNS. Sin esto, nuestros servidores de DNS no van a funcionar.

En las zonas del dominio definiremos quien puede hacer una petición de resolución de nombre al dominio, a quien le damos permiso para que pueda copiar las zonas; que en este caso solo seria a los servidores de DNS esclavos.

Agregamos la zona en el servidor primario de DNS, del dominio hola.com en el archivo /etc/bind/named.conf.local

zone “hola.com” {
type master;
notify no;
allow-query { any; };
allow-transfer { slaves; };
file “hola.com.hosts”;
};

En los servidores esclavos de DNS la configuración seria la siguiente en /etc/named.conf.local:

zone “hola.com” {
type slave; masters { 10.1.1.1; };
allow-query { any; };
file “hola.com.hosts”;
};

Explico que significa cada campo.

En el servidor primario de DNS:

zone “hola.com” {       Definimos el dominio.
allow-query { any; };   Cualquier computadora puede hacer una petición de DNS a este dominio.
allow-transfer { slaves; };  Con este parámetro le damos permiso a los servidores esclavos de DNS que puedan hacer una copia de la zona de DNS para el dominio hola.com
file “hola.com.hosts”;   Archivo donde se encuentra los parámetros de la zona para el dominio hola.com.

En los servidores de DNS secundarios:

zone “hola.com” {  Dominio.
type slave; masters { 10.1.1.1; };  Definimos a quien le debe pedir una copia de la zona de DNS para el dominio hola.com que en nuestro caso seria el servidor de DNS primario.
allow-query { any; }; Cualquier computadora puede hacer una petición de DNS a este dominio.
file “hola.com.hosts”; Archivo donde se encuentra los parámetros de la zona para el dominio hola.com.

Reiniciaremos el servicio de BIND en el servidor primario de DNS antes que los secundarios. Esto lo hacemos con el siguiente comando:

/etc/init.d/bind9 restart

Despues de reiniciarlos, verificaremos en el el “syslog” que nuestros servidores de DNS secundarios esten copiando la zona de DNS para hola.com. Encontraremos un registro similar a este:

tail -f /var/log/syslog

Nov 5 15:43:57 ns1 named[1966]: client 10.1.1.2#48716: transfer of ‘hola.com.us/IN’: AXFR started
Nov 5 15:43:57 ns1 named[1966]: client 10.1.1.2#48716: transfer of ‘hola.com/IN’: AXFR ended

Nov 5 15:43:57 ns1 named[1966]: client 10.1.1.3#48716: transfer of ‘hola.com/IN’: AXFR started
Nov 5 15:43:57 ns1 named[1966]: client 10.1.1.3#48716: transfer of ‘hola.com/IN’: AXFR ended

Con esto confirmamos que las zonas de DNS para hola.com fueron transferidas hacia los servidores de DNS secundarios.

Ahora es necesario confirmar que los archivos de las zonas de DNS en los servidores secundarios se esten creando correctamente. Entramos a los servidores de DNS secundarios, y hacemos un “cat” al archivo hola.com.hosts en el directorio /var/cache/bind.

Si todo esta bien mirarian algo similiar a esto:

rolando@web:/var/cache/bind$ cat hola.com.hosts
$ORIGIN .
$TTL 86400 ; 1 day
hola.com IN SOA ns1.hola.com. root.hola.com. (
2008281000 ; serial
3600 ; refresh (1 hour)
7200 ; retry (2 hours)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS ns1.hola.com.
NS ns2.hola.com.
NS ns3.hola.com.
A 10.1.1.5
$ORIGIN hola.com.
www CNAME hola.com.

Felicidades, han montado un servidor de DNS primario con 2 secundarios. Cualquier duda o comentario es bienvenido.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: