DNS notas VGB

De CURE - Informática
Ir a la navegación Ir a la búsqueda

Notas de instalación de Víctor González Barbone (VGB) 2011-11-21 10:43:34

Instalación

Instalar: bind9, bind9utils (dependencia), bind9-doc (opcional) En tasksel es la tarea dns-server, instala estos paquetes.

Arrancar y detener bind9

Forma actual:

 sudo rndc start
 sudo rndc stop
 sudo rndc reload
 rndc

muestra ayuda y opciones. Después de hacer un cambio, deberá darse reload o stop, start.

Monitoreo del proceso de arranque y carga de zonas. Puede monitorarse el proceso abriendo otra terminal y dando el comando

 tail -f /var/log/daemon.log

Va mostrando la carga de las zonas y eventuales errores.

Forma anterior ("deprecated"):

 sudo /etc/init.d/bind9 { start | stop | restart | reload }

rndc

rndc es un utilitario de control del servidor DNS; se comunica con el servidor de nombres por TCP enviando los comandos autenticados con firma digital. Esta precaución de seguridad puede dar algunos problemas.

ERROR posible: no valida la clave de autenticación

bind9 arranca con la máquina pero no responde a "rndc stop".

   cd /etc/bind9
   sudo rm rndc.key       # si existe, borrarlo
   sudo rm rndc.conf      # si existe, borrarlo
   sudo rndc-confgen -r /dev/urandom -a

genera la clave, crea el archivo /etc/bind/rndc.key y habilita rndc para controlar el DNS desde la máquina local:

 rndc start
 rndc stop
 rndc status
 rndc dumpdb

El dispositivo /dev/urandom es un generador aleatorio; colocar el -r /dev/urandom en el comando rndc-confgen acelera el proceso de generación de las claves.

rndc, generación de claves, administración remota

Crear archivo con clave para manejo seguro.

 cd /etc/bind
 rm rndc.key       # si existe, borrarlo
 rm rndc.conf      # si existe, borrarlo
 rndc-confgen -r /dev/urandom

produce esta salida:

 # Start of rndc.conf
 key "rndc-key" {
       algorithm hmac-md5;
       secret "NRhoMuJz483Jh15KY3WD/w==";
 };
 
 options {
       default-key "rndc-key";
       default-server 127.0.0.1;
       default-port 953;
 };
 # End of rndc.conf
 # Use with the following in named.conf, adjusting the allow list as needed:
 # key "rndc-key" {
 #       algorithm hmac-md5;
 #       secret "NRhoMuJz483Jh15KY3WD/w==";
 # };
 #
 # controls {
 #       inet 127.0.0.1 port 953
 #       allow { 127.0.0.1; } keys { "rndc-key"; };
 # };
 # End of named.conf

Creando rndc.conf y cambiando el named.conf como indica funciona.

 sudo rndc start

Otras operaciones con rndc:

 rndc stop
 rndc status
 rndc stat
 rndc dumpdb

descarga toda la base de datos del DNS.

Para administración remota (desde otra máquina), puede ser necesario colocar la interfaz de acceso de esta máquina: en /etc/bind/named/conf, agregar el IP de esta máquina, por ejemplo 192.168.1.13

 controls {
   inet 127.0.0.1 port 953
   allow { 127.0.0.1, 192.168.1.13; } keys { "rndc-key"; };

ERROR de clave, reinstalar

Cuando el procedimiento anterior no funciona se puede probar reinstalar el bind:

  1. cambiar de nombre el /etc/bind, o borrarlo para que no interfiera.
  2. Con aptitude, buscar bind9 con ^bind9, marcar para purgar usando la tecla "_" (purgar, borra todo, incluido archivos de configuración), teclas g, g, para ejecutar el borrado.
  3. buscar de nuevo bin9, marcar para instalar, instalar. Con esto ya empieza a funcionar el DNS.
  4. colocar o modificar el archivo named.local.conf como corresponda.
  5. hacer un reload o un restar del DNS, con "rndc reload" o "rndc stop; rndc start", el "rndc restart" puede no estar implementado.
  6. ver logs con "tail -f /var/log/daemon.log"; se debe ver la carga de las zonas, dice si hay errores.


Crear un servidor de nombres primario

Los archivos de configuración están en /etc/bind. Agregar una zona:

 cd /var/cache/bind
 mkdir nsk        # nombre directorio para archivos zona nsk

Crear archivos de configuración de zona:

 db.nsk
 db.192

Ingresar las zonas en el archivo named.conf.local:

 // Do any local configuration here
 //
 zone "192.in-addr.arpa" {
   type master;
   file "/var/cache/bind/nsk/db.192";
 };
 zone "nsk.com.uy." {
   type master;
   file "/var/cache/bind/nsk/db.nsk";
  };

Recargar los archivos modificados con

 sudo rndc reload

Para colocar la máquina actual como DNS: Editar el archivo /etc/resolv.conf para que diga:

 search nsk.com.uy
 nameserver 127.0.0.1

Pueden agregarse dos líneas más con otros "nameserver ...".

Monitorear arranque y parada, en otra terminal:

   tail -f /var/log/daemon.log

muestra en continuado la carga de zonas, mensajes de error, etc. Para terminar de visualizar, Ctrl-C.

Para probar el DNS en la zona: Pedir resolución por nombre y por IP de máquinas de la zona servida por este DNS.

 host nautilus
 host nautilus.nsk.com.uy
 host 192.168.1.2

Para probar todo el DNS: Instalar paquete dlint.

 dlint nsk.com.uy
 dlint 192.in-addr.arpa

Recorre todas las zonas, da mensajes de error y de lo que encuentra. Requiere un dominio real en Internet, arranca desde los root servers.

Otros comandos de prueba (ver páginas man correspondientes):

 $ named-checkconf
 $ named-checkconf /etc/bind/named.conf
 $ named-checkconf /etc/bind/named.conf.options
 $ named-checkconf /etc/bind/named.conf.local
 
 $ named-checkzone nsk.com.uy /var/cache/bind/nsk/db.nsk
 $ named-checkzone 192.in-addr.arpa /var/cache/bind/nsk/db.192
 
 $ named-compilezone -o /tmp/dnsnsk.txt nsk.com.uy /var/cache/bind/nsk/db.nsk
 $ less /tmp/dnsnsk.txt
 
 $ named-compilezone -o /tmp/dns192.txt 192.in-addr.arpa /var/cache/bind/nsk/db.192
 $ less /tmp/dns192.txt


Archivos de configuración de zona

 ; archivo db.nsk para zona nsk.com.uy
 $TTL    604800
 
 @         IN   SOA     localhost. root.localhost. (
                                5   ; Serial
                       604800   ; Refresh
                        86400   ; Retry
                      2419200   ; Expire
                       604800 ) ; Negative Cache TTL
 ;
 @         IN   NS      localhost.
 @         IN   MX 0       localhost.
 
 nautilus  IN   A         192.168.1.2
 lyria     IN   A         192.168.1.3
 hum       IN   A         192.168.2.3
 www       IN   CNAME     nautilus
 ; archivo db.192 para zona 192.in-addr.arpa
 $TTL    604800
 
 @         IN     SOA     localhost. root.localhost. (
                            2        ; Serial
                      604800   ; Refresh
                      86400    ; Retry
                      2419200  ; Expire
                      604800 ) ; Negative Cache TTL
 ;
 @         IN   NS      localhost.
 
 2.1.168   IN   PTR     nautilus.nsk.com.uy.
 3.1.168   IN   PTR     lyria.nsk.com.uy.
 3.2.168   IN   PTR     hum.nsk.com.uy.

Crear un servidor de nombres secundario

1) Declarar servidor secundario en el servidor DNS primario. En el servidor de nombres primario, nautilus: Agregar en los archivos db.nsk y db.192 la línea:

 @         IN  NS      lyria.nsk.com.uy.

debajo de una línea igual que indica 'NS localhost.'.

 sudo rndc reload

para reiniciar el servidor y tomar el nuevo NS. También

 sudo /etc/init.d/bind9 reload

2) En el servidor de nombres secundario: Crear directorio para archivos del secundario en /var/cache/bind:

 sudo mkdir -p /var/cache/bind/nsk
 sudo chown root:bind /var/cache/bind/nsk
 sudo chmod g+ws /var/cache/bind/nsk

Fija dueños y permisos en directorio donde guarda las tablas copiadas del primario.

3) Agregar las zonas en /etc/named.conf.local. El número IP en 'masters' debe ser el IP del servidor primario.

 // zonas para servidor de nombres secundario
 
 zone "192.in-addr.arpa" {
   type slave;
   file "/var/cache/bind/nsk/db.192";
     masters { 192.168.1.2; };
 };
 
 zone "nsk.com.uy." {
   type slave;
   file "/var/cache/bind/nsk/db.nsk";
     masters { 192.168.1.2; };
  };

Propagar cambios a servidores secundarios: Se hace solo luego al aumentar el número serial en los archivos del servidor primario.

Delegar una zona

Datos del ejemplo:

 Dominio: nsk.com.uy
 Servidor: lyria.nsk.com.uy, 192.168.1.3
 Red: 192.168.1.0/24 sobre eth0:0
 Ruta: 192.168.3.0  por eth0:0
 
 Subdominio: salatres.nsk.com.uy
 Servidor: hum.salatres.nsk.com.uy, 192.168.3.1
 Red: 192.168.3.0/24 sobre eth0:0
 Ruta: 192.168.3.0  por eth0:0

¡Verificar conectividad entre servidores de las zonas!

Dominio nsk.com.uy, en lyria, master

 // archivo /etc/bind/named.conf.local
 ...
 // zona nsk.com.uy
 zone "1.168.192.in-addr.arpa" {
   type master;
   file "/var/cache/bind/nsk/db.1.168.192";
 };
 zone "nsk.com.uy." {
   type master;
   file "/var/cache/bind/nsk/db.nsk";
  };
 ...
 ; archivo db.nsk para zona nsk.com.uy.
 $TTL    604800
 $ORIGIN nsk.com.uy.
 @         IN   SOA     ns1.nsk.com.uy. root.nsk.com.uy. (
                       100      ; Serial
                       604800   ; Refresh
                        86400   ; Retry
                      2419200   ; Expire
                       604800 ) ; Negative Cache TTL
 @         IN   NS        ns1.nsk.com.uy.
 @         IN   MX 0      ns1.nsk.com.uy.
 nautilus  IN   A         192.168.1.2
 ns1       IN   A         192.168.1.3
 www       IN   CNAME     ns1
 lyria     IN   CNAME     ns1
 
 ; zona delegada salatres.nsk.com.uy.
 $ORIGIN salatres.nsk.com.uy.
 @         IN   NS       ns3.salatres.nsk.com.uy.
 ns3.salatres.nsk.com.uy.   IN   A        192.168.3.13
 ; archivo db.1.168.192 para zona 1.168.192.in-addr.arpa
 $TTL    604800
 @         IN     SOA   ns1.nsk.com.uy. root.nsk.com.uy. (
                      100      ; Serial
                      604800   ; Refresh
                      86400    ; Retry
                      2419200  ; Expire
                      604800 ) ; Negative Cache TTL
 ;
 @         IN   NS      localhost.
 2    IN   PTR     nautilus.nsk.com.uy.
 3    IN   PTR     ns1.nsk.com.uy.


Verificación:

  • indicar localhost en comando host, si no está en /etc/resolv.conf
  • nombre sin dominio puede no responder según contenido de /etc/resolv.conf
 host lyria localhost
 host hum localhost
 host www localhost
 host 192.168.1.2 localhost
 host 192.168.1.3 localhost
 host 192.168.1.13 localhost

Zona salatres.nsk.com.uy en hum, master:

 // archivo /etc/bind/named.conf.local
 ...
 // zona salatres.nsk.com.uy
 zone "3.168.192.in-addr.arpa" {
   type master;
   file "/var/cache/bind/salatres/db.3.168.192";
 };
 zone "salatres.nsk.com.uy." {
   type master;
   file "/var/cache/bind/salatres/db.salatres";
   //allow-transfer { 192.168.3.3; };
  };
 ; archivo /var/cache/bind/db.salatres para zona salatres.nsk.com.uy.
 $TTL    604800
 @         IN   SOA     ns3.salatres.nsk.com.uy. root.salatres.nsk.com.uy. (
                       100      ; Serial
                       604800   ; Refresh
                        86400   ; Retry
                      2419200   ; Expire
                       604800 ) ; Negative Cache TTL
 @         IN   NS      ns3.salatres.nsk.com.uy.
 @         IN   MX 0    ns3.salatres.nsk.com.uy.
 ns3       IN   A         192.168.3.13
 mya       IN   A         192.168.3.12
 www       IN   CNAME     ns3
 hum       IN   CNAME     ns3
 ; archivo db.3.168.192 para zona 3.168.192.in-addr.arpa
 $TTL    604800
 @         IN     SOA   ns3.salatres.nsk.com.uy. root.salatres.nsk.com.uy. (
                      100      ; Serial
                      604800   ; Refresh
                      86400    ; Retry
                      2419200  ; Expire
                      604800 ) ; Negative Cache TTL
 ;
 @         IN   NS      ns3.salatres.nsk.com.uy.
 13   IN   PTR     ns3.salatres.nsk.com.uy.
 12   IN   PTR     mya.salatres.nsk.com.uy.

Verificación:

  • poner localhost si no está en /etc/resolv.conf
  • nombre sin dominio puede no responder según contenido de /etc/resolv.conf.
 host hum.salatres.nsk.com.uy localhost
 host mya.salatres.nsk.com.uy localhost
 host 192.168.3.13 localhost
 host 192.168.3.12 localhost
 host www.salatres.nsk.com.uy localhost
 host www localhost