Por Félix Molinuevo, FMSI Sistemas de Informática
Lo primero es instalar el demonio, y algunos utilitarios. En Debian y derivados:
aptitude install bind9 dnsutils
Luego, agregar en /etc/bind los archivos para la zona forward y reverse a crear, cambiando en todos los lugares necesarios por los valores adecuados. En este caso la zona es “tomate”:
$ORIGIN . $TTL 86400 ; 1 day 11.168.192.in-addr.arpa IN SOA srv11.tomate. root.srv11.tomate. ( 961703055 ; serial 30 ; refresh (30 seconds) 600 ; retry (10 minutes) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS srv11.tomate. $ORIGIN 11.168.192.in-addr.arpa. 1 PTR srv11.tomate.
$ORIGIN . $TTL 86400 ; 1 day tomate IN SOA srv11.tomate. root.srv11.tomate. ( 961902882 ; serial 30 ; refresh (30 seconds) 600 ; retry (10 minutes) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS dns.tomate. MX 0 correo.tomate. $ORIGIN tomate. srv11 A 192.168.11.1 dns A 192.168.11.1 servidor CNAME srv11 correo CNAME srv11
Importante: estos archivos de zona deben ser hardlinkeados a /var/lib/bind para permitir que el demonio DHCP tenga acceso a modificarlos, ya que de otra manera AppArmor impide el acceso de lectoescritura (ver configuración en /etc/apparmor.d/):
ln /etc/bind/db.tomate /var/lib/bind/ ln /etc/bind/db.192.168.11 /var/lib/bind/
Finalmente modificar los siguientes archivos de configuración de Bind:
El “allow-update” desde localhost permite que la configuración de Bind9 sea modificada desde DHCP. De esa manera, si se configura el demonio DHCP adecuadamente, los hosts se agregan al Bind en forma dinámica, evitando el uso de direcciones IP para acceder a los hosts.
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "tomate" { type master; file "/etc/bind/db.tomate"; allow-update { localhost; }; }; zone "11.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192.168.11"; allow-update { localhost; }; };
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 { 172.16.11.201; 172.16.11.2; }; auth-nxdomain no; # conform to RFC1035 };
Nota: es muy importante prestar cuidadosa atención al editar esos archivos. Una coma, punto, espacio o cualquier cosa de más o de menos, hará que el servicio no funcione.
Cuando se desee asignar una IP fija a un host, en conjunto con DHCP, se deben realizar los siguientes pasos.
rndc freeze tomate
pc10 A 192.168.11.110
Notar que no debe haber un punto luego de la dirección IP, y que esta línea debe estar dentro de una sección:
$TTL 86400 ; 1 day
Las secciones como la siguiente indican que fueron agregadas por DHCP en forma automática:
$TTL 300 ; 5 minutes
y no deben agregarse hosts dentro de ellas
110 PTR pc10.proios.
Notar que debe haber un punto luego del nombre de host, y que también debe estar dentro de una sección:
$TTL 86400 ; 1 day
rndc thaw tomate
host pc10 { hardware ethernet 00:16:ec:3e:32:8e; use-host-decl-names on; fixed-address pc10.tomate; }
Primero se debe agregar la siguiente línea en la configuración del DNS primario, para permitir que el secundario pueda transferir las zonas:
zone "tomate" { [...] allow-transfer { ip_secundario; }; };
Reemplazando “ip_secundario” por la dirección IP del DNS secundario. Esta línea debe ser agregada tanto en la configuración forward como en la reverse.
Luego, en el DNS secundario se deben configurar también ambas zonas, pero con los siguientes cambios:
zone "tomate" { type slave; file "/var/cache/bind/db.tomate"; masters { ip_primario; }; }; zone "11.168.192.in-addr.arpa" { type slave; file "/var/cache/bind/db.192.168.11"; masters { ip_primario; }; };
Reemplazar “ip_primario” con la dirección IP del primario o master. Las zonas quedarán almacenadas en /var/cache/bind/. Sin embargo, se debe revisar que dicho directorio tenga permisos de grabación para el usuario “bind”.
Finalmente, al reiniciar el servicio se notará en el syslog la transferencia de las zonas, las que serán almacenadas en /var/cache/bind. Asimismo, si ocurre un error, será indicado.