Bind9 en Debian
Berkeley Internet Name Domain (BIND) es una implementación del protocolo Domain Name System (DNS), ampliamente usado para resolver nombres y números IP en Internet.
BIND sirve como DNS autoritativo primario o secundario y para mantener una tabla local con todos los nombres que resuelve el DNS autoritativo de la red.
Configuración de un DNS local
Instala el paquete bind9,
# apt-get install bind9
Edita el archivo /etc/bind/named.conf.options para que lea,
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 {
100.10.0.3;
100.10.0.7;
};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};En forwarders enumera los números IP de los servidores de nombre autoritativos de la red. Estos deberían ser los mismos del archivo /etc/resolv.conf indicados en el instructivo nameserver.
Edita /etc/resolv.conf y modifícalo para que lea,
search mi.dominio nameserver 127.0.0.1
En donde search indica el dominio de la red.
Reinicia el daemon de BIND (named) con,
# /etc/init.d/bind9 restart
y luego reinicia la red,
# /etc/init.d/networking restart
Lo que hemos hecho es transformar a localhost (127.0.0.1) en el servidor de nombres, que a través de BIND hace requerimientos a los DNS autoritativos de la red.
Para ver el servidor DNS local en acción da el comando,
$ dig www.debian.org
Retornará a la pantalla la consulta al DNS autoritativo,
$ dig www.debian.org ; <<>> DiG 9.7.2-P3 <<>> www.debian.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51914 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.debian.org. IN A ;; ANSWER SECTION: www.debian.org. 102 IN A 206.12.19.7 www.debian.org. 102 IN A 128.31.0.51 ;; Query time: 804 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Mar 20 09:45:39 2011 ;; MSG SIZE rcvd: 158
La primera consulta tardó 804 milisegundos (Query time). Repetir el mismo requerimiento será prácticamente instantáneo. El servidor ahora consulta su propia tabla, en dónde existe guardada una entrada con la información sobre www.debian.org,
$ dig www.debian.org ; <<>> DiG 9.7.2-P3 <<>> www.debian.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7423 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.debian.org. IN A ;; ANSWER SECTION: www.debian.org. 300 IN A 128.31.0.51 www.debian.org. 300 IN A 206.12.19.7 ;; Query time: 15 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Mar 20 09:47:22 2011 ;; MSG SIZE rcvd: 158