BIND9: Instalación CT Debian 10 (Publico)

Guia: https://www.zeppelinux.es/instalacion-y-configuracion-de-bind9-en-debian/

Estado de la conexión

  • En /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 10.20.200.26/24

auto eth1
iface eth1 inet static
        address 181.193.87.12/28
        gateway 181.193.87.1


post-up route add -net 10.20.0.0 netmask 255.255.0.0 gw 10.20.200.1
pre-down route del -net 10.20.0.0 netmask 255.255.0.0 gw 10.20.200.1
post-up route add -net 10.30.240.0 netmask 255.255.255.0 gw 10.20.200.1
pre-down route del -net 10.30.240.0 netmask 255.255.255.0 gw 10.20.200.1
  • Red interna
  • DNS
  • Red externa
  • DNS

Instalación

  • El primer paso es instalar
apt-get install bind9 -y
  • Instalamos dependencias
apt install bind9-doc dnsutils resolvconf ufw python-ply-doc -y
  • Podemos probar que el servicio se instalo correctamente ejecutando
ps -ef | grep named
  • RESULTADO
bind       11796       1  0 16:39 ?        00:00:00 /usr/sbin/named -u bind
root       12747     295  0 16:50 pts/0    00:00:00 grep name
  • Podemos comprobar los puertos abiertos con
netstat -ltun | grep :53
  • RESULTADO
0      0 10.20.200.160:53        0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN     
tcp6       0      0 :::53                   :::*                    LISTEN     
udp        0      0 10.20.200.160:53        0.0.0.0:*                          
udp        0      0 127.0.0.1:53            0.0.0.0:*                          
udp6       0      0 :::53                   ::

Configuración del servidor DNS como solo caché

  • Para nuestro caso vamos a crear un DNS público que resuleva el dominio siua.ac.cr, por tanto la cache DNS no va se necesaria y vamos a apagar las consultas recursivas.
  • Para que el servidor pueda iniciar consultas recursivas tiene que conocer cuáles son los servidores raíz (root servers). El archivo /etc/bind/db.root o /usr/share/dns/root.hits (dependiendo de la distribución Debian que utilices) contiene los 13 servidores raíz del mundo y sus direcciones IP.

Configuración de un servidor DNS para que reenvíe consultas a reenviadores (forwarders)

  • Al igual que en el paso anterior, este servidor no tiene que hacer forwarder ya que solo debe resolver el dominio.siua.ac.cr

Configuración de DNS maestro

Nota: Por defecto, en debian 10 ‘buster’, el directorio donde se guardan los archivos de zona es /var/cache/bind. Dicho directorio se declara en el archivo  /etc/bind/named.conf.options con la directriz  directory «/var/cache/bind»;

  • Podemos comprobarlos con
cat /etc/bind/named.conf.options
  • RESULATDO
options {
        directory "/var/cache/bind";
  • Por comodidad, crearemos un directorio específico para los archivos zonas, le llamaremos zonas, aunque el nombre puede ser cualquiera:
mkdir /var/cache/bind/zonas
  • luego, asignaremos el usuario y el grupo bind a dicho directorio:
chown bind:bind /var/cache/bind/zonas
  • para finalizar, daremos permisos de escritura a ambos:
chmod 775 /var/cache/bind/zonas

Configuración de la zona de resolución directa

  • Antes de nada haremos copia de seguridad del archivo /etc/bind/named.conf.local antes de modificarlo:
cp /etc/bind/named.conf.local /etc/bind/named.conf.local.bak.ugit
  • Abrimos el archivo
nano /etc/bind/named.conf.local
  • Agregamos la definición de la zona «siua.ac.cr» NOTA termina en punto y coma
// ***************************************************
// ************   DECLARACION ZONA    ****************
// ***************************************************
zone "siua.ac.cr" {
        type master;
        file "zonas/db.siua.ac.cr";
};
  • Especificación
    • zone «siua.ac.cr»: declara la zona
    • type master: define que este servidor es el master
    • file «zonas/db.siua.ac.cr»: declaramos el nombre del archivo de zona. Puede ser cualquier nombre, pero nosotros elegimos este. Observese que no indicamos la ruta completa ya que por defecto se guardan en /var/cache/bind.
  • Ahora creamos el archivo de resolución directa db.siua.ac.cr
nano /var/cache/bind/zonas/db.siua.ac.cr
  • Ahora añadimos las directivas y registros de recursos
ObjetoDescripción
;se utiliza para comentar líneas o añadir comentarios a las líneas.
$TTL:Directiva obligatoria a partir de la versión 9 de Bind (RFC 1035/RFC 2308). Ajusta el tiempo de vida (del ingles, Time To Live) predeterminado de la información obtenida en el fichero de zona. Es el tiempo en segundos que determina cuanto tiempo los registros de recursos de la zona serán válidos.
Un registro de recursos puede contener su propio su propio valor TTL, que tendrá prioridad sobre la directiva presente.
Por defecto se usan segundos (604800 segundos equivalen a siete días exactos), pero puede usarse también semanas ($TTL 1W), días ($TTL 7D), Horas ($TTL 168H) y minutos ($TTL 10080M).
Debe declararse al comienzo del archivo de zona, antes del registro SOA.
@equivale al nombre de la zona definida en el archivo named.conf.local.
nombres no cualificadosa los nombres de dominio sin el punto final se les añade el nombre de zona.
nombres cualificados, FQDNlos nombres de dominio completos deben de terminar con un punto (.)
Primer campo en blancoSi el primer campo de un registro de recursos se deja en blanco toma el valor del mismo campo de la línea del registro de recursos anterior.
  • Dejamos el archivo así
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; Fichero db.siua.ac.cr
; Archivo administrador por la UGIT
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************












; *******************************************************************************************
; *******************************************************************************************
; ********************************   TTL     ************************************************
; *******************************************************************************************
; *******************************************************************************************
; TTL: Time To Life: cuanto tiempo en segundo que los registros son validos
; 1D=86400 (1 dia)
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
$TTL 1D



; *******************************************************************************************
; *******************************************************************************************
; *******************************    SOA     ************************************************
; *******************************************************************************************
; *******************************************************************************************
; SOA: Start Of Authority
; @: es equivalente a la zona definida en named.conf.local = siua.ac.cr
; ns.siua.ac.cr.: subdominio del servidor DNS master. NOTA: note que debe terminar en punto
; admin.siua.ac.cr: correo del administrador del dominio (Sin @ ( admin@siua.ac.cr)
; Serial: numero  que identifica los cambios de forma unica: Fomato AAAAMMDDVERSION. Ejemplo: 2020090401 2020/09/04 V01
; Refresh (12 horas): Cada cuanto se refresta el secundario
; Retry (10 minutos): Cuanto tiempo espera el secundario; antes que vuelva a pedir los cambios si el primario no le contesto
; Expire (14D): Cuanto expira el DNS2 si el DNS1 no responde--RECOMENDACION 1209600-2419200
; Negative cache TTL (3 horas): TTL cuando la respuesta es negavita--RECOMENDACION >86400
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************

@                                       IN              SOA             ns.siua.ac.cr.          admin.siua.ac.cr. (
                                2020090401      ; Serial
                                     43200      ; Refresh: 12 horas
                                       600      ; Retry: 10 minutos
                                   1209600      ; Expire: 14D
                                     10800 )    ; Negative cache TTL: 3 horas

; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************



; *******************************************************************************************
; *******************************************************************************************
; ***************************** RESOLUCION SERVIDORES DNS ***********************************
; *******************************************************************************************
; *******************************************************************************************
; NS: un regitsro NS permite definir un Name Server o servidor de nombre, NOTE que el primer campo va en blanco y debe terminar en punto
; A: un registro A permite relacionar un subdominio a una IPv4

                                        IN              NS              ns.siua.ac.cr.
                                        IN              NS              ns2.siua.ac.cr.
ns                                      IN              A               181.193.87.2
ns2                                     IN              A               181.193.87.3

; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************



; *******************************************************************************************
; *******************************************************************************************
; ***************************** RESOLUCION MX: MAIL EXCHANGE   ******************************
; *******************************************************************************************
; *******************************************************************************************

siua.ac.cr.             14400           IN              MX      10      correo.siua.ac.cr.
correo                  14400           IN              A               181.193.87.9
www.correo              14400           IN              CNAME           correo

; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************




; *******************************************************************************************
; *******************************************************************************************
; ********************** DEFINICION DE SUBDOMINIO SIUA.AC.CR   ******************************
; *******************************************************************************************
; *******************************************************************************************


; -------------------------------------------------------------------------------------------
; -------------------------------------------------------------------------------------------
; -------------------------------------------------------------------------------------------
; ------------------------------  IP: 181.193.87.6 ------------------------------------------
; -------------------------------------------------------------------------------------------
; -------------------------------------------------------------------------------------------
; -------------------------------------------------------------------------------------------


; .......................................................
; .......................................................
; REGISTROS: A
; .......................................................
; .......................................................
prueba                                  IN              A               181.193.87.6         ;Gustavo Matamoros G. / 1-1162-0857 / 60462663


; .......................................................
; .......................................................
; CNAME
; .......................................................
; .......................................................
www.prueba                              IN              CNAME           prueba               ;Gustavo Matamoros G. / 1-1162-0857 / 60462663


; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; ******************************************************************************************
  • Para comprobar que la sintaxis y semántica de los archivos de configuración y de zona son correctas, ejecutaremos los siguientes comandos:
  • Con la herramienta named-checkconf comprobamos el archivo named.conf y aquellos que incluya (directiva include), en nuestro caso los archivos /etc/bind/named.conf.options, /etc/bind/named.conf.local y /etc/bind/named.conf.default-zones. En caso de encontrar errores, la salida del comando los mostraría.
named-checkconf
  • Con la herramienta named-checkzone comprobamos el archivo de zona.
named-checkzone siua.ac.cr /var/cache/bind/zonas/db.siua.ac.cr
  • RESULTADO
zone siua.ac.cr/IN: loaded serial 2020011301
OK
  • El paso siguiente es reiniciar el servidor

// *
// DECLARACION ZONA ****
// ***

  • Ahora dentro del propio servidor ejecutamos para probar el funcionamiento
nslookup prueba.siua.ac.cr 127.0.0.1
  • Respuesta
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   prueba.siua.ac.cr
Address: 181.193.87.6

Configuración de la zona de resolución inversa

  • Editamos el archivo de configuración
nano /etc/bind/named.conf.local
  • y declaramos la zona de resolución inversa  para la red 181.193.87.0/28:
// ***************************************************
// ************   DECLARACION INVERSA   **************
// ***************************************************
zone "87.193.181.in-addr.arpa" {
        type master;
        file "zonas/db.reverse.ip4.181.193.87";
};
  • Vamos a crear el archivo de la resolución invesra
nano /var/cache/bind/zonas/db.reverse.ip4.181.193.87
  • Agregamos
Nota: En una misma zona no puede haber registros PTR IPv4 y registros PTR IPv6. Existen por lo tanto zonas de resolución inversa IPv4 y zonas de resolución inversa IPv6.; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; Fichero db.reverse.181.193.87
; Archivo administrador por la UGIT
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************




; *******************************************************************************************
; *******************************************************************************************
; ********************************   TTL     ************************************************
; *******************************************************************************************
; *******************************************************************************************
; TTL: Time To Life: cuanto tiempo en segundo que los registros son validos
; 7D=604800 (7 dias)
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
$TTL 7D


; *******************************************************************************************
; *******************************************************************************************
; *******************************    SOA     ************************************************
; *******************************************************************************************
; *******************************************************************************************
; SOA: Start Of Authority
; @: es equivalente a la zona definida en named.conf.local = siua.ac.cr
; ns.siua.ac.cr.: subdominio del servidor DNS master. NOTA: note que debe terminar en punto
; admin.siua.ac.cr: correo del administrador del dominio (Sin @ ( admin@siua.ac.cr)
; Serial: numero  que identifica los cambios de forma unica: Fomato AAAAMMDDVERSION. Ejemplo: 2020090401 2020/09/04 V01
; Refresh (12 horas): Cada cuanto se refresta el secundario
; Retry (10 minutos): Cuanto tiempo espera el secundario; antes que vuelva a pedir los cambios si el primario no le contesto
; Expire (14D): Cuanto expira el DNS2 si el DNS1 no responde--RECOMENDACION 1209600-2419200
; Negative cache TTL (3 horas): TTL cuando la respuesta es negativa--RECOMENDACION >86400
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************

@                                       IN              SOA             ns.siua.ac.cr.          admin.siua.ac.cr. (
                                2020090401      ; Serial
                                     43200      ; Refresh: 12 horas
                                       600      ; Retry: 10 minutos
                                   1209600      ; Expire: 14D
                                     10800 )    ; Negative cache TTL: 3 horas
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************


; *******************************************************************************************
; *******************************************************************************************
; ***************************** RESOLUCION SERVIDORES DNS ***********************************
; *******************************************************************************************
; *******************************************************************************************
; NS: un regitsro NS permite definir un Name Server o servidor de nombre, NOTE que el primer campo va en blanco y debe terminar en punto
; A: un registro A permite relacionar un subdominio a una IPv4

                                        IN              NS              ns.siua.ac.cr.
                                        IN              NS              ns2.siua.ac.cr.

2                                       IN              PTR             ns.siua.ac.cr.
3                                       IN              PTR             ns2.siua.ac.cr.

; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************
; *******************************************************************************************


; *******************************************************************************************
; *******************************************************************************************
; *************** RESOLUCIONES INVERSAS SIUA.AC.CR PTR (Pointer Record) *********************            
; *******************************************************************************************
; *******************************************************************************************

; -------------------------------------------------------------------------------------------
; -------------------------------------------------------------------------------------------
; -------------------------------------------------------------------------------------------
; ------------------------------  IP: 181.193.87.6 ------------------------------------------
; -------------------------------------------------------------------------------------------
; -------------------------------------------------------------------------------------------
; -------------------------------------------------------------------------------------------

6                                      IN               PTR             prueba.siua.ac.cr.
  • Note lo siguiente
    • En la sección RESOLUCION SERVIDORES DNS el registro ya no es de tipo «A» sino «PTR» y no apunta a la IP sino a el nombre del diominio
    • Note que todos lso registros PTR terminan en «.»
  • Nota: En una misma zona no puede haber registros PTR IPv4 y registros PTR IPv6. Existen por lo tanto zonas de resolución inversa IPv4 y zonas de resolución inversa IPv6.
  • Volvemos a comprobar la sintaxis
named-checkconf
  • Con la herramienta named-checkzone comprobamos el archivo de zona.
named-checkzone 87.193.181.in-addr.arpa /var/cache/bind/zonas/db.reverse.ip4.181.193.87
  • RESULTADO:
zone 87.193.181.in-addr.arpa/IN: loaded serial 2020090401
OK
  • Reiniciamos el servidor para asegurar su correcto funcionamiento
init 6
  • Con la herramienta nslookup, comprobamos que el servidor DNS resuelve consultas inversas. Para ello, desde una terminal del propio servidor, le preguntaremos sobre una IP perteneciente a la red 181.193.87.0/24, por ejemplo 181.193.87.6:
nslookup 181.193.87.6

Configuración de un servidor DNS secundario (esclavo)

Configuraciónb Actual

nano /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 10.20.200.52/24

auto eth1
iface eth1 inet static
        address 181.193.87.11/28
        gateway 181.193.87.1


post-up route add -net 10.20.0.0 netmask 255.255.0.0 gw 10.20.200.1
pre-down route del -net 10.20.0.0 netmask 255.255.0.0 gw 10.20.200.1
post-up route add -net 10.30.240.0 netmask 255.255.255.0 gw 10.20.200.1
pre-down route del -net 10.30.240.0 netmask 255.255.255.0 gw 10.20.200.1

El servicio DNS es un servicio crítico y tiene que funcionar siempre, debido a esto al menos deberíamos tener un servidor maestro y otro servidor esclavo por si falla el servidor maestro. Podríamos disponer de varios servidores maestro, pero en caso de cambiar los archivos de zona, tendríamos que cambiarlos en todos los servidores maestros. Es más fácil utilizar un modelo con un solo servidor maestro y uno o varios servidores esclavos. Este modelo permite la actualización automática entre el servidor maestro y los servidores esclavo y solo tendremos administrar los archivos de zona ubicados en el servidor maestro.

181.193.87.1Un servidor esclavo o secundario define una o varias zonas para las que es autorizado. La diferencia con respecto a un servidor maestro es que los ficheros de zona los obtiene de otro servidor autorizado para la zona, normalmente de un servidor maestro mediante un procedimiento denominado transferencia de zona. Los ficheros de zona de los servidores esclavos son de solo lectura y por lo tanto, el administrador no tiene que editarlos. La modificación de los archivos de zona debe realizarse en el servidor maestro que transfiere la zona.

Instalación y configuración del servidor esclavo

  • Instalamos bind9
apt-get install bind9 -y
  • Instalamos dependencias
apt install bind9-doc dnsutils resolvconf ufw python-ply-doc -y
  • Volvemos a crear el directorio de zonas
mkdir /var/cache/bind/zonas
  • luego, asignaremos el usuario y el grupo bind a dicho directorio:
chown bind:bind /var/cache/bind/zonas
  • para finalizar, daremos permisos de escritura a ambos:
chmod 775 /var/cache/bind/zonas
  • A continuación, antes de nada haremos copia de seguridad del archivo /etc/bind/named.conf.local antes de modificarlo:
cp /etc/bind/named.conf.local /etc/bind/named.conf.local.bak
  • Editamos el archivo /etc/bind/named.conf.local:
nano /etc/bind/named.conf.local
  • Agregamos
// ***************************************************
// ************   DECLARACION ZONA    ****************
// ***************************************************
zone "siua.ac.cr" {
        type slave;
        file "zonas/db.siua.ac.cr";
        masters {181.193.87.12;};
};


// ***************************************************
// ************   DECLARACION INVERSA   **************
// ***************************************************
zone "87.193.181.in-addr.arpa" {
        type slave;
        file "zonas/db.reverse.ip4.181.193.87";
        masters {181.193.87.12;};
};
  • Como no vamos a usar recursividad (por ser un servidor autoritativo maestro), ignoramos esta parte de la guia
  • Con la herramienta named-checkconf comprobamos el archivo named.conf y aquellos que incluya (directiva include), en nuestro caso los archivos /etc/bind/named.conf.options, /etc/bind/named.conf.local y /etc/bind/named.conf.default-zones. En caso de encontrar errores, la salida del comando los mostraría.
su - root
named-checkconf
  • El paso siguiente será reiniciar el servidor
init 6

Configuración del servidor maestro (ns.siua.ac.cr)

  • Antes de nada haremos copia de seguridad del archivo /etc/bind/named.conf.local antes de modificarlo:
cp /etc/bind/named.conf.local /etc/bind/named.conf.local.bak
  • Editamos el archivo /etc/bind/named.conf.local:
nano /etc/bind/named.conf.local
  • y añadimos la IP del servidor esclavo al que transferirá las zonas: allow-transfer {181.193.87.11;};
// ***************************************************
// ************   DECLARACION ZONA    ****************
// ***************************************************
zone "siua.ac.cr" {
        type master;
        file "zonas/db.siua.ac.cr";
        allow-transfer {181.193.87.11;};
};


// ***************************************************
// ************   DECLARACION INVERSA   **************
// ***************************************************
zone "87.193.181.in-addr.arpa" {
        type master;
        file "zonas/db.reverse.ip4.181.193.87";
        allow-transfer {181.193.87.11;};
};
  • Con la herramienta named-checkconf comprobamos que la sintáxis del archivo /etc/bind/named.conf.local modificado es correcta. En caso de encontrar errores, la salida del comando los mostraría.
named-checkconf
  • A continuación, editamos el archivo de zona /var/cache/bind/zonas/db.siua.ac.cr y agregamos un nuevo subdominio
nano /var/cache/bind/zonas/db.siua.ac.cr
  • Agregamos un nuevo registro A
; .......................................................
; .......................................................
; REGISTROS: A
; .......................................................
; .......................................................
prueba                                  IN              A               181.193.87.6         ;Gustavo Matamoros G. / 1-1162-0857 / 60462663
prueba2                                 IN              A               181.193.87.6         ;Gustavo Matamoros G. / 1-1162-0857 / 60462663

; .......................................................
; .......................................................
; CNAME
; .......................................................
; .......................................................
www.prueba                              IN              CNAME           prueba               ;Gustavo Matamoros G. / 1-1162-0857 / 60462663
www.prueba2                             IN              CNAME           prueba2              ;Gustavo Matamoros G. / 1-1162-0857 / 60462663
  • Y recordamos modificar el serial
2020090701      ; Serial
  • Agregamos la resolución inversa y modificamos el serial
2020090701      ; Serial

6                                      IN               PTR             prueba2.siua.ac.cr.
  • Verificamos la sintaxis
named-checkzone siua.ac.cr /var/cache/bind/zonas/db.siua.ac.cr
named-checkzone 87.193.181.in-addr.arpa /var/cache/bind/zonas/db.reverse.ip4.181.193.87
  • RESULTADO
zone siua.ac.cr/IN: loaded serial 2020090701
OK
  • Reiniciamos el servicio
/etc/init.d/bind9 restart