Disponer de un servidor caché DNS en nuestra red local aumenta la velocidad de la conexión a Internet pues cuando navegamos por diferentes lugares, continuamente se están realizando peticiones DNS. Si nuestro caché DNS almacena la gran mayoría de peticiones que se realizan desde la red local, las respuestas de los clientes se satisfarán prácticamente de forma instantánea proporcionando al usuario una sensación de velocidad en la conexión.
Es un modo de funcionamiento de sencilla configuración ya que prácticamente lo único que hay que configurar son las direcciones IP de un DNS primario y de un DNS secundario. Muchos routers ADSL ofrecen ya este servicio de caché, tan solo hay que activarlo y configurar una o dos IPs de servidores DNS en Internet. En los PCs de nuestra red local podríamos poner como DNS primario la IP de nuestro router y como DNS secundario una IP de un DNS de Internet.
Archivo | Descripción |
---|---|
named.conf | Archivo principal de configuración |
named.conf.options | Opciones genéricas |
named.conf.local | Especificación particular de este servidor DNS |
db.127 | Especificación dirección de retorno |
db.root | DNSs de nivel superior |
otros | db.0, db.255, db.empty, db.local, rndc.conf, rndc.key, zones.rfc1918 |
// Configuración como caché DNS // Añadir IPs de los DNS de nuestro proveedor en /etc/bind/named.conf.optionsoptions { forwarders { 80.58.0.33; 80.58.32.97; }; };
Nuestro servidor DNS maestro para nuestro dominio ficticio interno 'ieslapaloma.com' será capaz de resolver peticiones internas de nombres de este dominio, tanto de forma directa como de forma inversa, es decir, si recibe una consulta acerca de quién es aula5pc7.ieslapaloma.com deberá devolver su IP, pongamos por ejemplo 192.168.0.107. Si la consulta es una consulta DNS inversa acerca de quién es 192.168.0.107, deberá responder aula5pc7.ieslapaloma.com. Por ello deberemos añadir en el archivo /etc/bind/named.conf.local la especificación de maestro para el dominio y para la resolución inversa, por ejemplo:
// Añadir en /etc/bind/named.conf.local// Archivo para búsquedas directas
zone "ieslapaloma.com" {
type master;
file "/etc/bind/ieslapaloma.db";
};
// Archivo para búsquedas inversas
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/192.rev";
};
Evidentemente será necesario crear los archivos ieslapaloma.db y 192.rev que especificarán la asociación entre nombres y direcciones IP de nuestra red en un sentido y en otro respectivamente.
// Archivo /etc/bind/ieslapaloma.db;
; BIND data file for ieslapaloma.com
;
@ IN SOA ieslapaloma.com. root.ieslapaloma.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Default TTL
IN NS dns.ieslapaloma.com.
IN MX 10 mail.ieslapaloma.com.
aula5pc1 IN A 192.168.0.101
aula5pc2 IN A 192.168.0.102
aula5pc3 IN A 192.168.0.103
aula5pc4 IN A 192.168.0.104
aula5pc5 IN A 192.168.0.105
aula5pc6 IN A 192.168.0.106
aula5pc7 IN A 192.168.0.107
aula5pc8 IN A 192.168.0.108
aula5pc9 IN A 192.168.0.109
aula5pc10 IN A 192.168.0.110
www IN A 192.168.0.111
dns IN A 192.168.0.112
mail IN A 192.168.0.112
Las primeras líneas son unos parámetros relacionados
con la actualización del DNS (número de serie y periodos
de actuación). Las dos siguientes líneas indican
quién es el servidor primario (NS = Name Server) y quien procesa
el correo electrónico del dominio (MX = Mail eXchange). Las
siguentes líneas especifican las IPs de los distintos PCs
componentes del dominio (A = Address).
Si olvidamos algún punto y coma, dará errores y no funcionará correctamente. Para revisar los archivos disponemos de los comandos named-checkconf y named-checkzone que analizan que esté correcta la sintaxis de los mismos.
// Archivo /etc/bind/192.rev;
; BIND reverse data file for 192.168.0.0
;
@ IN SOA ieslapaloma.com. root.ieslapaloma.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Default TTL
IN NS dns.ieslapaloma.com.
101 IN PTR aula5pc1.ieslapaloma.com.
102 IN PTR aula5pc2.ieslapaloma.com.
103 IN PTR aula5pc3.ieslapaloma.com.
104 IN PTR aula5pc4.ieslapaloma.com.
105 IN PTR aula5pc5.ieslapaloma.com.
106 IN PTR aula5pc6.ieslapaloma.com.
107 IN PTR aula5pc7.ieslapaloma.com.
108 IN PTR aula5pc8.ieslapaloma.com.
109 IN PTR aula5pc9.ieslapaloma.com.
110 IN PTR aula5pc10.ieslapaloma.com.
111 IN PTR www.ieslapaloma.com.
112 IN PTR dns.ieslapaloma.com.
112 IN PTR mail.ieslapaloma.com.
Una vez configurado nuestro servidor DNS, debemos indicar a nuestro servidor Linux que el servidor DNS es él mismo, lo cual se especifica en el archivo /etc/resolv.conf.
// Indicamos que nosotros mismos somos servidores DNS
// y por defecto buscamos en nuestro dominio
// Editar /etc/resolv.conf del servidor DNSnameserver 127.0.0.1
search ieslapaloma.com
En el resto de PCs de la red, indicaremos que el servidor DNS es 192.168.0.112
// En el resto de PCs de la red indicamos quién es el DNS
// Editar /etc/resolv.conf del resto de PCs de la rednameserver 192.168.0.112
Tan solo nos faltará poner en marcha nuestro servidor de nombres ejecutando en el servidor el script de inicio correspondiente:
// Arranque del servidor DNS# /etc/init.d/bind9 restart
y, mediante el comando host, el comando dig o el comando nslookup hacer alguna consulta de prueba:
Ejemplo, supongamos que el nombre del DNS maestro es dns.ieslapaloma.com (IP 192.168.0.112) y que el nombre del DNS esclavo es dns2.ieslapaloma.com. En el archivo 'ieslapaloma.db' de zona de búsqueda directa añadiremos la línea del segundo dns justo debajo de donde está la del primero:
// Añadir línea en /etc/bind/ieslapaloma.db del maestro
....
IN NS dns.ieslapaloma.com.
IN NS dns2.ieslapaloma.com. // Nueva línea
....
de esta forma indicaremos que existen más servidores DNS para dicha zona. Lo mismo haremos en el archivo '192.rev' de la zona inversa:
// Añadir línea en /etc/bind/192.rev del maestro
....
IN NS dns.ieslapaloma.com.
IN NS dns2.ieslapaloma.com. // Nueva línea
....
En el archivo /etc/bind/named.conf.local del servidor DNS esclavo debemos indicar que se trata de un servidor esclavo y también debemos indicar quién es el maestro:
// Añadir en /etc/bind/named.conf.local del esclavozone "ieslapaloma.com" {
type slave;
file "/etc/bind/ieslapaloma.db";
masters { 192.168.0.112; };
};
zone "0.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/192.rev";
masters { 192.168.0.112; };
};
En el archivo /etc/bind/named.conf.local del servidor DNS maestro podemos utilizar also-notify para mantener los DNS sincronizados. Con also-notify pasamos los cambios de zonas en el maestro al esclavo:
// Archivo /etc/bind/named.conf.local del maestrozone "ieslapaloma.com" {
type master;
file "/etc/bind/ieslapaloma.db";
also-notify {ip_del_esclavo;}
};
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/192.rev";
also-notify {ip_del_esclavo;}
};
De ésta forma dispondremos en la red de un servidor DNS esclavo que podrá satisfacer las peticiones DNS al igual que lo haría el maestro. Es interesante si el número de peticiones es muy elevado y se requiere distribuir la carga entre los dos servidores, o si deseamos disponer de servicio DNS de alta disponibilidad de forma que aunque el servidor maestro deje de funcionar, el servidor esclavo podrá seguir ofreciendo el servicio.
Cada vez que hagamos un cambio en los archivos /etc/bind/ieslapaloma.db y /etc/bind/192.rev del maestro, debemos acordarnos de actualizar el parámetro serial (incrementar en una unidad) para que los dns dependientes del maestro sepan que ha cambiado y actualicen su información para mantenerse perfectamente sincronizados.