Una primera nota para la configuración de DNS, muy útil para usuarios de módem, cable-módem, ADSL y similares.
En Red Hat y distribuciones derivadas puedes conseguir los resultados prácticos de esta primera sección del COMO instalando los paquetes bind, bind-utils y caching-nameserver. Si usa Debian simplemente instala bind (o bind9, al escibir esto, BIND 9 no está soportado por Debian Stable (potato))y bind-doc. Desde luego, que sólo instalando estos paquetes no aprenderás más que leyendo este COMO. Así pues, instala los paquetes, lee y verifica los ficheros instalados.
Un servidor de "sólo cache" encontrará las respuestas a las consultas de nombres y las recordará para la próxima vez que las necesites. Esto acorta el tiempo de espera significativamente para la próxima vez, especialmente si dispones de una conexión lenta.
Lo primero que necesitas es un fichero llamado /etc/named.conf (Debian: /etc/bind/named.conf). Este fichero se lee cuando arranca named. Por ahora simplemente contendrá:
// Fichero de configuración para servidor de sólo cacheo
// La version que lea de este COMO puede contener espacios
// iniciales (espacios previos a los caracteres de estas
// líneas) en este u otros ficheros. Debe eliminarlos para
// que las cosas funcionen.
//
// Observe que los nombres de ficheros y directorio pueden
// ser distintos, aunque los ultimos contenidos deben
// ser muy parecidos.
options {
directory "/var/named";
// Descomentar esto podría ayudar si tiene que salir a través
// de un cortafuegos y las cosas no funcionan fuera. Sin embargo, de
todas
// formas necesitarás hablar con el administrador del cortafuegos.
// query-source port 53;
};
controls {
inet 127.0.0.1 allow { localhost; } keys { rndc_key; };
};
key "rndc_key" {
algorithm hmac-md5;
secret
"c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
Los paquetes de las distribuciones Linux pueden usar diferentes nombres para cada uno de los ficheros mencionados aquí; el contenido sigue siendo el mismo.
La línea `directory' le indica a named donde buscar los ficheros. Todos los ficheros mencionados están relativos a esta ruta. Así pz es un directorio bajo /var/named, i.e., /var/named/pz. /var/named es el directorio correcto de acuerdo con la distribución estándar de directorios en Linux (Linux File system Standard).
Aquí describimos el fichero /var/named/root.hints. /var/named/root.hints debería contener lo siguiente: (si cortas y pegas este fichero de una versión electrónica del documento, ten en cuenta que no deberían haber espacios en blanco iniciales en este fichero, i.e. todas las líneas deberían comenzar con un carácter que no sea espacio. Algún software de procesamiento de documentos inserta espacios al comienzo de las líneas y causan confusión. En este caso, elimina los espacios iniciales).
; ; Puede haber comentarios aquí si ya tenías el fichero. ; Si no no te preocupes. ; . 6D IN NS A.ROOT-SERVERS.NET. . 6D IN NS B.ROOT-SERVERS.NET. . 6D IN NS C.ROOT-SERVERS.NET. . 6D IN NS D.ROOT-SERVERS.NET. . 6D IN NS E.ROOT-SERVERS.NET. . 6D IN NS F.ROOT-SERVERS.NET. . 6D IN NS G.ROOT-SERVERS.NET. . 6D IN NS H.ROOT-SERVERS.NET. . 6D IN NS I.ROOT-SERVERS.NET. . 6D IN NS J.ROOT-SERVERS.NET. . 6D IN NS K.ROOT-SERVERS.NET. . 6D IN NS L.ROOT-SERVERS.NET. . 6D IN NS M.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 6D IN A 198.41.0.4 B.ROOT-SERVERS.NET. 6D IN A 128.9.0.107 C.ROOT-SERVERS.NET. 6D IN A 192.33.4.12 D.ROOT-SERVERS.NET. 6D IN A 128.8.10.90 E.ROOT-SERVERS.NET. 6D IN A 192.203.230.10 F.ROOT-SERVERS.NET. 6D IN A 192.5.5.241 G.ROOT-SERVERS.NET. 6D IN A 192.112.36.4 H.ROOT-SERVERS.NET. 6D IN A 128.63.2.53 I.ROOT-SERVERS.NET. 6D IN A 192.36.148.17 J.ROOT-SERVERS.NET. 6D IN A 198.41.0.10 K.ROOT-SERVERS.NET. 6D IN A 193.0.14.129 L.ROOT-SERVERS.NET. 6D IN A 198.32.64.12 M.ROOT-SERVERS.NET. 6D IN A 202.12.27.33
Este archivo describe los servidores de nombres raíz en el mundo. Este
archivo cambiará a lo largo del tiempo y tiene que ser mantenido
y actualizado con una cierta regularidad. Vea la sección de (
(mantenimiento)) para saber cómo mantenerlo
actualizado.
La siguiente sección de named.conf es la última zone. Explicaré su uso en un capítulo posterior: Por ahora, crea un archivo llamado 127.0.0 en el subdirectorio pz:(De nuevo, por favor borra los espacios iniciales si cortas y pegas esto).
$TTL 3D
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
1 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
1D) ; Minimum TTL
NS ns.linux.bogus.
1 PTR localhost.
Las secciones llamadas key y controls juntas especifican que tu named se puede controlar remotamente mediante un programa llamado rndc si se conecta desde el host local y se identifica con la llave secreta codificada. Esta llave es como una contraseña. Para que rndc funcione necesita que /etc/rndc.conf cumpla esto:
key rndc_key {
algorithm "hmac-md5";
secret
"c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};
options {
default-server localhost;
default-key rndc_key;
};
Como puedes ver la clave es idéntica. Si quieres usar rndc desde otras máquinas sus tiempos tiene que estar dentro de un margen de 5 minutos la una de la otra. Recomiendo usar el software the ntp (xntpd y ntpdate) para hacer esto.
A continuación, necesitas un /etc/resolv.conf parecido a este:(De nuevo: ¡borrar espacios!)
search subdomain.your-domain.edu your-domain.edu nameserver 127.0.0.1
La línea `search' especifica en qué dominios buscar para cualquier nombre de máquina al que te quieras conectar. La línea `nameserver' especifica la dirección de tu servidor de nombres, en este caso tu misma máquina ya que es donde se ejecuta named (127.0.0.1 está bien, no importa si la máquina tiene otra dirección también). Si quieres incluir varias máquinas como servidores de nombres basta añadir líneas `nameserver' para cada uno.(Nota: Named nunca lee este fichero, lo lee la aplicación que busca un servidor de nombres. Nota 2: En algunos ficheros resolv.conf puedes encontrar una línea "domain". Es correcto, pero no uses a la vez "search" y "domain", sólo una de ellas funcionará).
Para ilustrar lo que hace este archivo:
Si un cliente intenta
buscar a fulano, primero se probará
fulano.subdominio.su-dominio.edu, a continuación
fulano.su-dominio.edu, y finalmente fulano. Si un
cliente intenta buscar sunsite.unc.edu,
sunsite.unc.edu.subdominio.su-dominio.edu se prueba primero
(sí, es tonto, pero es así como tiene que ser), después
sunsite.unc.edu.su-dominio.edu, y finalmente
sunsite.unc.edu.
Puede que no quieras poner demasiados dominios en la línea
search, lleva su tiempo el efectuar las búsquedas.
El ejemplo supone que pertenece al dominio subdominio.su-dominio.edu, tu máquina probablemente se llame su-máquina.subdominio.su-dominio.edu. La línea search no debería contener tu TLD (Top Level Domain o Dominio de Nivel Superior, `edu' en este caso). Si necesitas conectar frecuentemente con máquinas de otro dominio, puedes añadir ese dominio a la línea search como sigue:(Recuerda eliminar los espacios iniciales, si los hay)
search subdominio.su-dominio.edu su-dominio.edu otro-dominio.com
y así. Obviamente necesitas poner un dominio real en su lugar. Esto es importante; por favor observa la ausencia de puntos al final de los nombres de dominio.