DNS DDNS con Linux DNS DDNS con Linux Índice 1 2 3 4 Escenario...................................................................................................................................................1 Configuración del servidor DNS (Debian)...........................................................................................1 Configuración del servidor DHCP (Debian)........................................................................................3 Comprobaciones......................................................................................................................................4 4.1 Cliente Ubuntu...................................................................................................................................4 4.2 Servidor ..............................................................................................................................................6 5 Agregar seguridad...................................................................................................................................8 6 Fuentes......................................................................................................................................................8 1 Escenario Servidor DNS y DHCP en el mismo equipo, Debian. Cliente Ubuntu. 2 Configuración del servidor DNS (Debian) El archivo de zona lo dejamos en el directorio predeterminado /var/cache/bind para evitar problemas de permisos. Directorio y fichero deben tener permisos de escritura para bind. root@debian00:/# ls -l /var/cache total 52 drwxr-xr-x 3 root root 4096 nov 16 19:30 apt drwxrwxr-x 2 root bind 4096 nov 17 10:39 bind drwxr-xr-x 2 root root 4096 sep 11 11:28 cracklib 1/8 DNS DDNS con Linux Archivo /etc/bind/named.conf.local allow-update Lista de equipos a los que se les permite actualizar dinámicamente la zona maestra. root@debian00:/# cat /etc/bind/named.conf.local zone "asir00.net" { type master; file "db.asir00.net"; allow-update { 127.0.0.1; 10.33.0.2; }; }; Archivo de zona. root@debian00:/# cat /var/cache/bind/db.asir00.net $TTL 86400 ; 1 day asir00.net IN SOA debian00.asir00.net. manolo.asir00.net. ( 2 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 86400 ; minimum (1 day) ) NS debian00.asir00.net. debian00 A 10.33.0.2 loquesea A 1.2.3.4 2/8 DNS DDNS con Linux 3 Configuración del servidor DHCP (Debian) Archivo dhcpd.conf ddns-updates on default = on Habilitar las actualizaciones dinámicas, de forma global, como opción de servidor. También se puede establecer como opción de ámbito, si se desea. ddns-update-style interim default = none Tipo de actualización: • ad-hoc: obsoleto • interim: forma parte del estándar, pero difiere en algunos detalles: MD5 en lugar de SHA, TXT RRs en lugar de DHCID RRs, ... • standard: la más reciente, el estándar actual. Difiere de interim en algunos detalles y no son compatibles (dos servidores DHCP utilizando uno interim y el otro standard no funcionaría correctamente) • none: para desactivar DDNS authoritative / not authoritative default = ¿? Indica que el servidor se considera autorizado para esta red. Es lo más adecuado cuando tenemos un único servidor en la red. Así, el servidor enviará mensajes DHCPNAK a clientes “mal configurados”. Por ejemplo, si un cliente procedente de otra red solicita que se le renueve una IP incorrecta, el servidor le enviará un DHCPNAK y el cliente deberá comenzar un nuevo proceso de a partir de DHCPDISCOVER para obtener una IP nueva. allow unknown-clients default = allow El servidor asignará IPs a todo aquel que lo solicite. De otro modo, sólo lo haría con las reservas declaradas con host. zone asir00.net. Zona DNS que el servidor DCHP intentará actualizar en DNS. primary localhost Indica el servidor DNS cuya zona debe ser actualizada. 3/8 DNS DDNS con Linux root@debian00:/# cat /etc/dhcp/dhcpd.conf ddns-updates on; ddns-update-style interim; authoritative; allow unknown-clients; zone asir00.net. { primary localhost; } option domain-name "asir00.net"; option domain-name-servers 10.33.0.2; option subnet-mask 255.255.255.0; option routers 10.33.0.1; default-lease-time 86400; subnet 10.33.0.0 netmask 255.255.255.0 { range 10.33.0.201 10.33.0.250; } 4 Comprobaciones 4.1 Cliente Ubuntu Liberar IP “antigua” que pudiera tener. -r (release) para liberar la IP -v (verbose) para mostrar en modo detallado 4/8 DNS DDNS con Linux Solicitar IP para eth0 Comprobar IP obtenida Comprobar resolución nombres. 5/8 DNS 4.2 DDNS con Linux Servidor Comprobar archivo de log. Actualiza zona asir00.net con registro A para ubuntu00.asir00.net Además, agrega registro TXT root@debian00:/etc/bind# tail -n 20 /var/log/syslog Nov 16 20:53:15 debian00 dhcpd: DHCPRELEASE of 10.33.0.201 from 08:00:27:71:2b:4c (ubuntu00) via eth0 (found) Nov 16 20:53:15 debian00 named[2344]: error (network unreachable) resolving 'local/SOA/IN': 2001:500:3::42#53 Nov 16 20:53:15 debian00 named[2344]: error (network unreachable) resolving 'local/SOA/IN': 2001:7fe::53#53 Nov 16 20:53:19 debian00 dhcpd: DHCPDISCOVER from 08:00:27:71:2b:4c via eth0 Nov 16 20:53:20 debian00 dhcpd: DHCPOFFER on 10.33.0.201 to 08:00:27:71:2b:4c (ubuntu00) via eth0 Nov 16 20:53:20 debian00 named[2344]: client 127.0.0.1#8455: updating zone 'asir00.net/IN': adding an RR at 'ubuntu00.asir00.net' A Nov 16 20:53:20 debian00 named[2344]: client 127.0.0.1#8455: updating zone 'asir00.net/IN': adding an RR at 'ubuntu00.asir00.net' TXT Nov 16 20:53:20 debian00 dhcpd: DHCPREQUEST for 10.33.0.201 (10.33.0.2) from 08:00:27:71:2b:4c (ubuntu00) via eth0 Nov 16 20:53:20 debian00 dhcpd: DHCPACK on 10.33.0.201 to 08:00:27:71:2b:4c (ubuntu00) via eth0 Nov 16 20:53:20 debian00 dhcpd: Added new forward map from ubuntu00.asir00.net to 10.33.0.201 6/8 DNS DDNS con Linux El fichero de zona es modificado/actualizado con los siguientes elementos: $ORIGIN . $ORIGIN asir00.net. Indica cuál es el sufijo a añadir a los nombres no cualificados (los que no terminan en “.”) En general, es buena idea definir explícitamente esta directiva. Si no se define ninguna, se toma por defecto el sufijo (dominio) presente en named.conf. $TTL 3600 El servidor ha decidido que el TTL para estos registros dinámicos sea de una hora. ubuntu00 A 10.33.0.201 El registro actualizado dinámicamente y, obviamente, la modificación que más nos importa. ubuntu00 TXT "0088c77089ba4eb658e5b1a9f8069a372f" Contiene la firma del servidor DHCP para que ambos, servidor DHCP y DNS sepan que el responsable de la creación del registro A es el servidor DHCP. Así, el servidor DHCP no modificará ningún registro A cuyo registro TXT no coincida con su firma. root@debian00:/# cat /var/cache/bind/db.asir00.net $ORIGIN . $TTL 86400 ; 1 day asir00.net IN SOA debian00.asir00.net. manolo.asir00.net. ( 2 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 86400 ; minimum (1 day) ) NS debian00.asir00.net. $ORIGIN asir00.net. debian00 A 10.33.0.2 loquesea A 1.2.3.4 $TTL 3600 ; 1 hour ubuntu00 A 10.33.0.201 TXT "0088c77089ba4eb658e5b1a9f8069a372f" Uno de los problemas detectados en otras configuraciones, por ejemplo si guardamos el archivo de zona en otro directorio, es la denegación de permiso para crear el archivo .jnl. Para evitar este tipo de problemas, se creó en el directorio predeterminado. root@debian00:/etc/bind# ls -l total 12 -rwxr-xr-x 1 root root 311 nov -rw-r--r-- 1 bind bind 805 nov -rw-r--r-- 1 bind bind 720 nov /var/cache/bind/ 16 20:51 db.asir00.net 16 20:53 db.asir00.net.jnl 16 19:31 managed-keys.bind 7/8 DNS DDNS con Linux El servidor DNS crea fichero journal (.jnl) con las modificaciones que se harán sobre las zonas y, cada cierto tiempo, las vuelca en el fichero de zona. journal = registro de diario en el que se almacena la información necesaria para restablecer los datos afectados por la transacción en caso de que ésta falle. Por esto mismo, conviene no hacer modificaciones manuales en el fichero de zona. Si no, el fichero journal dejará de estar sincronizado con el fichero de zona y bind se mostrará confuso (ver log, si lo hacéis). Para hacer modificaciones, habría que utilizar rndc (Remote Name Daemon Control). rndc freeze rndc thaw root@debian00:/etc/bind# cat /var/cache/bind/db.asir00.net.jnl ;BIND LOG V9 ####%8######R#asir00#net###Q�debian00#asir00#net#manolo#asir00#net# :�#Q�$�#Q�R#asir00#net###Q�debian00#asir00#net#manolo#asir00#net# :�#Q�$�#Q�ubuntu00#asir00#net#### ! �ubuntu00#asir00#net####"0088c77089ba4eb658e5b1a9f8069a372froot@debian00 :/etc/ Comprobar resolución de nombres root@debian00:/etc/bind# nslookup ubuntu00.asir00.net Server: 127.0.0.1 Address: 127.0.0.1#53 Name: ubuntu00.asir00.net Address: 10.33.0.201 5 Agregar seguridad Próximamente 6 Fuentes https://blog.bigdinosaur.org/running-bind9-and-isc-dhcp/ http://askubuntu.com/questions/162265/how-to-setup-dhcp-server-and-dynamic-dns-with-bind http://www.linuxtecnico.es/2012/05/monta-tu-propio-dns-dinamico.html https://deepthought.isc.org/article/AA-01091/0/ISC-DHCP-support-for-Standard-DDNS.html http://linux.die.net/man/5/dhcpd.conf http://www.zytrax.com/books/dns/ch7/xfer.html#allow-update http://www.zytrax.com/books/dns/ch8/origin.html Aula 30x [email protected] @aula30x 8/8