En este post explicaremos como configurar un servidor DNS con la herramienta bind9 y crear un esclavo que se actualice automáticamente. Para esta práctica se utilizaran 2 sistemas Debian con una subred 192.168.0.0/24 siendo NS1 el servidor DNS maestro y el NS2 el servidor DNS esclavo.
Además de la instalación y configuración, se intentara securizar lo máximo posible para evitar posibles agujeros de seguridad.
NS1
Este servidor será el utilizado como maestro.
Actualizar repositorios
apt update
Instalar bind9
apt install bind9 bind9utils bind9-doc
Configurar bind9
vim /etc/bind/named.conf.options
acl "trusted" { 192.168.0.104; # ns1 (IP servidor bind) 192.168.0.105; # ns2 192.168.0.0/24; # subred que utilizaremos }; options { directory "/var/cache/bind"; recursion yes; # Permitir la recursión allow-recursion { trusted; }; # Permitir la recursión solo a los hosts declarados allow-query { trusted; } # Permitir las consultas solo a los hosts declarados dnssec-validation auto; # Auto-validación de DNSSEC listen-on { 192.168.0.104; }; # IP de escucha allow-transfer { none; }; # No permitir la transferencia version "DNS server"; # Ocultar la versión de bind forwarders { 8.8.8.8; #Google DNS 209.67.222.222; #OpenDNS }; auth-nxdomain no; # conform to RFC1035 };
Definir la Zonas, en este caso se le indica que son maestras
vim /etc/bind/named.conf.local
zone "ichasco.com" { type master; file "/etc/bind/zones/db.ichasco.com"; # Path del fichero de zona directa allow-transfer { 192.168.0.105; }; # Permitir la transferencia a NS2 }; zone "0.168.192.in-addr.arpa" { type master; file "/etc/bind/zones/db.192.168.0"; # Path del fichero de zona inversa - subred:192.168.0.0/24 allow-transfer { 192.168.0.105; }; # Permitir la transferencia a NS2 };
Comprobar la sintaxis de los named.conf
named-checkconf
Zonas
Crear el directorio de las zonas
mkdir /etc/bind/zones
Zona directa
Crear la zona a partir del archivo de ejemplo
cp /etc/bind/db.local /etc/bind/zones/db.ichasco.com
Editar el archivo de zona directo. En este archivo hay que realizar varios cambios como el SOA, los NS, los registros y el serial cada vez que se edita
vim /etc/bind/zones/db.ichasco.com
$TTL 604800 @ IN SOA ns1.ichasco.com. ismael.ns1.ichasco.com. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; NS records IN NS ns1.ichasco.com. IN NS ns2.ichasco.com. ; name servers - A records ns1.ichasco.com. IN A 192.168.0.104 ns2.ichasco.com. IN A 192.168.0.105 ; host - A records host1.ichasco.com IN A 192.168.0.106 host2.ichasco.com IN A 192.168.0.107
Comprobar la sintaxis de la zona directa
named-checkzone ns1.ichasco.com /etc/bind/zones/db.ichasco.com /etc/bind/zones/db.ichasco.com:17: ignoring out-of-zone data (ns1.ichasco.com) /etc/bind/zones/db.ichasco.com:18: ignoring out-of-zone data (ns2.ichasco.com) zone ns1.ichasco.com/IN: loaded serial 3 OK
Zona Inversa
Crear la zona a partir del archivo de ejemplo
cp /etc/bind/db.127 /etc/bind/zones/db.192.168.0
Editar el archivo de zona inversa. En este archivo hay que realizar varios cambios como el SOA, los NS, los registros y el serial cada vez que se edita
vim /etc/bind/zones/db.192.168.0
$TTL 604800 @ IN SOA ns1.ichasco.com. ismael.ns1.ichasco.com. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; ; NS records IN NS ns1.ichasco.com. IN NS ns2.ichasco.com. ; PTR Records 104 IN PTR ns1.ichasco.com. 105 IN PTR ns2.ichasco.com. 106 IN PTR host1.ichasco.com. 107 IN PTR host2.ichasco.com.
Comprobar la sintaxis de la zona inversa
named-checkzone 0.168.192.in-addr-arpa /etc/bind/zones/db.192.168.0 zone 0.168.192.in-addr-arpa/IN: loaded serial 3 OK
Cuando todas las comprobaciones hayan sido exitosas, reiniciar bind
systemctl restart bind9
NS2
Actualizar repositorios
apt update
Instalar bind9
apt install bind9 bind9utils bind9-doc
Editar la configuración de bind9
vim /etc/bind/named.conf.options
acl "trusted" { 192.168.0.105; # ns2 (IP servidor secundario bind) 192.168.0.104; # ns1 192.168.0.0/24; }; options { directory "/var/cache/bind"; recursion yes; allow-recursion { trusted; }; # Permitir la recursión a los hosts definidos allow-query { trusted; } # Permitir consultas a los hosts definidos dnssec-validation auto; # Auto-validación de DNSSEC listen-on { 192.168.0.105; }; # ns2 private IP address allow-transfer { none; }; # deshabilitar la transferencia version "DNS server"; # Ocultar la versión del servidor DNS forwarders { 8.8.8.8; #Google DNS 209.67.222.222; #OpenDNS }; auth-nxdomain no; # conform to RFC1035 };
Definir las zonas e indicar que son de tipo slave. Una vez con esto. Cuando se reinicie el servicio automáticamente se sincronizará con el master
vim /etc/bind/named.conf.local
zone "ichasco.com" { type slave; file "slaves/db.ichasco.com"; masters { 192.168.0.104; }; # IP del NS1 }; zone "0.168.192.in-addr.arpa" { type slave; file "slaves/db.192.168.0"; masters { 192.168.0.104; }; # IP del NS1 };
Comprobar la sintaxis de los named.conf
named-checkconf
Reiniciar bind9
systemctl restart bind9
Hola,
Cree una maquinas virtuales, un pc , un dns primario y dns secundario.
Con del debian 8.10, el dns primario me resuelve sin problemas desde el pc windows.
La transferencia de zonas se realizo sin problemas, las zonas se ven con código y texto de configuración..no literalmente cono el original dns primario.
Al desactivar el dns primario, el pc no resuelve del dns secundario, pero internamente el secundario si resuelve…no he logrado encontrar el error 🙁
Si utilizas windows no siempre funciona bien el DNS secundario. Si lanzas la consulta manualmente desde el windows haciendo un
nslookup loquesea IP_DNS2
funciona?muy buenas la verdad creo que es el tutorial que mas se aproxima a lo perfecto yo estoy renegando con esto de los dns y me parece bastante util igual hay cosas que me gustaria preguntarte que no se de donde salen supongamos que 192.168.0.104 es la ip de tu equipo en el que esta instalado bind9 de donde sale 192.168.0.105 ?? segundo como obtienes la direccion addr in arpa?? el dominio ichasco.com lo creaste vos o pagaste algun servicio para registrarlo y tercero en ningun lugar pones tu ip externa como sabe el proveedor de dominio la ip externa para los ns1 y ns2 y por ultimo en lugar del dominio.com se puede usar un dominio.com.ar??
no vi que se publicara el comentario a si que comento de nuevo 4 preguntas para hacer se puede hacer con dominios .com.ar de donde sale la ip 192.168.0.105 suponiendo que la de tu server es 192.168.0.104 los ns1 y ns2 creados a partir del dominio ichaco.com pagaste por el dominio o lo creaste en tu propio equipo suponiendo que la ip 192.168.0.x es interna y cuando registras un dominio necesitas poner la ip externa como creas los ns a partir de la ip externa para darselos al proovedor de dominios por ejemplo creas un dominio en nic.ar pirulito.com.ar para transferir ese dominio a tu servidor nic.ar te pide ns1.algo.com y ns2.algo.com tanto ns1 como ns2 tienes que apuntarlos a la ip externa como haces eso??
Buenas,
1- La IP 1
92.168.0.105
correspondería al NS2. Esto pueden ser IPs públicas o Privadas.2-
0.168.192.in-addr.arpa
esto equivale a la red192.168.0.0
. Si en tu caso utilizas la red:10.2.1.0/24
, sería1.2.10.in-addr
3- el dominio
ichasco.com
, es publico. Pero en este caso sería para uso interno. Es decir, tu puedes utilizar el dominio que quieras internamente siempre y cuando los servidores a los que se consulten sean los que tienen este registro. Es decir, si tu quieres utilizarexample.com
(puedes utilizar el que quieras) en tu empresa/proyecto, tienes que hacer que todos los host apunten su servidor DNS contra el que has montado y aquí gestionar este dominio.4- Si esto lo quieres hacer público, tienes que cambiar en tu proveedor que los NS sean los servidores controlados por ti.
hola me sale esto dumping master file: slave/tmp-XomqUbiEWB: open: file
cuando reinicio el servicio y miro el estado