En RedHat/CentOS
Para poner a funcionar Bind9 en Red Hat/CentOS, utilizaremos yum para instalar el paquete bind, y configuraremos el archivo named.conf para modificar las directivas y añadir todos los archivos de zona que tengamos.
Así que, eso, instalamos con yum...
[root@localhost ~]# yum install bind
Y si todo va bien, ya está instalado bind. Solo nos falta arrancarlo y activar que se inicie el servicio automáticamente al reiniciar la máquina...
!!! - En Red Hat y CentOS, el servicio de bind se llama named.
Para eso, ejecutaremos chkconfig para comprobar si Bind se ejecuta en los niveles de ejecución 2345, o directamente los añadiremos.
También podemos utilizar, de forma más sencilla, el comando system-config-services, que nos permitirá activar el servicio en una ventana gráfica, con el ratón.
Todo lo demás será configurar el servidor para que resuelva correctamente. Para eso, necesitamos modificar el archivo
/etc/named.conf. Podemos empezar por echarle un vistazo al archivo de ejemplo localizado en
/usr/share/doc/bind-9.3.6/sample/etc/named.conf. Incluso podemos copiarlo y utilizarlo como base para nuestra configuración...
[root@localhost ~]# cp /usr/share/doc/bind-9.3.6/sample/etc/named.conf /etc/named.conf
Si a este fichero le quitamos los comentarios, es tal que así:
options
{
directory "/var/named";
dump-file "data/cache_dump.db";
statistics-file "data/named_stats.txt";
memstatistics-file "data/named_mem_stats.txt";
};
logging
{
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view "localhost_resolver"
{
match-clients { localhost; };
match-destinations { localhost; };
recursion yes;
include "/etc/named.root.hints";
include "/etc/named.rfc1912.zones";
};
view "internal"
{
match-clients { localnets; };
match-destinations { localnets; };
recursion yes;
include "/etc/named.root.hints";
zone "my.internal.zone" {
type master;
file "my.internal.zone.db";
};
zone "my.slave.internal.zone" {
type slave;
file "slaves/my.slave.internal.zone.db";
masters { /* put master nameserver IPs here */ 127.0.0.1; } ;
// put slave zones in the slaves/ directory so named can update them
};
zone "my.ddns.internal.zone" {
type master;
allow-update { key ddns_key; };
file "slaves/my.ddns.internal.zone.db";
};
};
key ddns_key
{
algorithm hmac-md5;
secret "use /usr/sbin/dns-keygen to generate TSIG keys";
};
view "external"
{
match-clients { any; };
match-destinations { any; };
recursion no;
zone "my.external.zone" {
type master;
file "my.external.zone.db";
};
};
Como vemos, tiene una sección de opciones, otra de login, otra de claves de seguridad, y tres vistas: interna, local y externa. Básicamente, no sirve para nada porque está sin modificar. Más aún, no incluye ni lo necesario. El archivo de ejemplo ni siquiera respeta el estandar de la industria
RFC1035, que el que no se tiene en cuenta ningún tipo de autenticación para consultas DNS...
En primer lugar, nos hacen falta ficheros de zona para que nuestro servidor DNS sepa resolver al menos lo mínimo. Ofrezco un tarball con las zonas incluidas en la instalación de Ubuntu directamente
para descargar desde aquí para quien no las tenga y quiera descargarlas desde aquí. En Red Hat y CentOS, hay que descomprimirlas directamente en
/var/named/, o en el directorio de trabajo de Bind que hayamos definido en nuestro
/etc/named.conf.
Ahora vamos a modificar el archivo para que sea seguro y con opciones propias, pero respetando lo principal: los estándares y la jerarquía de ficheros de Red Hat. Como vemos, el fichero por defecto en el que trabaja el servicio named es
/var/named. Ahí situaremos los archivos de zonas, de las distintas zonas básicas (las de los root servers) y de las que queramos.
Vamos a ello...
options {
directory "/var/named";
forwarders {
mi.ip.publica.aqui;
};
auth-nxdomain no;
listen-on-v6 { any; };
allow-transfer { 127.0.0.1; };
// allow-query { 127.0.0.1; };
// allow-recursion { 127.0.0.1; };
};
zone "." {
type hint;
file "db.root";
};
/*
zone "localhost" {
type master;
file "db.local";
};
zone "127.in-addr.arpa" {
type master;
file "db.127";
};
zone "0.in-addr.arpa" {
type master;
file "db.0";
};
zone "255.in-addr.arpa" {
type master;
file "db.255";
};
*/
zone "ejemplo.net" {
type master;
file "db.ejemplo.org";
};
zone "ejemplo.org" {
type master;
file "db.ejemplo.org";
};
Como puede verse, de paso hemos definido dos zonas extra llamadas ejemplo.net y ejemplo.org, las dos definidas en el archivo db.ejemplo.org dentro de
/var/named/, el directorio de trabajo fijado en las opciones.
En Debian/Ubuntu
Para poner a funcionar Bind9 en Debian/Ubuntu, utilizaremos apt-get para instalar el paquete bind9, y configuraremos distintos archivos del directorio de configuración de bind.
Así que eso, instalamos con apt-get...
root@lampserver:~# apt-get install bind9
Y si todo va bien, ya está instalado bind y se iniciará solo cuando se arranque el ordenador. Para la configuración, veremos que en Ubuntu se distribuye en distintos ficheros dentro de
/etc/bind/...
root@lampserver:~# ls /etc/bind
bind.keys db.empty named.conf.default-zones zones.rfc1918
db.0 db.local named.conf.local
db.127 db.root named.conf.options
db.255 named.conf rndc.key
Como vemos, Ubuntu distribuye en distintos ficheros toda la configuración de Bind9. El archivo
named.conf simplemente incluye los archivos
named.conf.default-zones,
named.conf.local y
named.conf.options, de modo que en cada uno de ellos tenemos cada una de las cosas: las opciones, las zonas locales, y las zonas por defecto. Si queremos añadir más zonas, es tan fácil como editar un nuevo archivo y enlazarlo en el
named.conf...
Un ejemplo:
root@lampserver:/etc/bind# echo "include "/etc/bind/allzones.conf";"
/ >> /etc/bind/named.conf
root@lampserver:/etc/bind# touch /etc/bind/allzones.conf
Ahora tenemos el archivo
/etc/bind/allzones.conf listo para incluir las zonas que queramos, por ejemplo...
zone "ejemplo.net" {
type master;
file "db.ejemplo.org";
};
zone "ejemplo.org" {
type master;
file "db.ejemplo.org";
};
Así, tanto ejemplo.net como ejemplo.org quedarán definidos por el fichero de zona db.ejemplo.org.
Pero... ¿Dónde hay que poner el archivo db.ejemplo.org? Pues eso está en las opciones:
root@ekip:/etc/bind# cat /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// 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; };
};
Ahí lo tenemos, el directorio de trabajo de Bind en Ubuntu es
/var/cache/bind, y dentro de ese directorio tendremos que colocar nuestros archivos de zona.