Desde Linux fico  

BIND y Active Directory®

¡Hola amigos!. El objetivo principal de este artículo es mostrar cómo podemos integrar el servicio DNS basado en el BIND9 en una red Microsoft, muy común en muchas PYMES.

Surge de la solicitud oficial de un amigo que vive en La Tierra del Fuego –El Fueguino– especializado en Redes Microsoft® -Certificados incluidos- de guiarlo en ésta parte de la migración de sus servidores a Linux. Los Costes del Soporte Técnico que pagan a Microsoft® ya son Insoportables para la Compañía en que trabaja y de la que es su Accionista Principal.

Mi amigo El Fueguino tiene un gran sentido del humor, y desde que vio la serie de tres películas “El Señor de los Anillos” quedó prendado de muchos de los nombres de sus personajes sombríos. Así que, amigo Lector, no se extrañe de los nombres de su dominio y de sus servidores.

A los recién llegados al tema y antes de continuar la lectura le recomendamos lean y estudien los tres artículos anteriores sobre las Redes PYMES:

Es como ver tres de las cuatro partes de “UnderWorld” publicadas hasta hoy, y que ésta sea la cuarta.

Parámetros generales

Después de varios intercambios vía e-mail, al fin quedé claro de los parámetros principales de su red actual, los cuales son:

Nombre de dominio  mordor.fan
Red LAN         10.10.10.0/24

===============================================================================
Servidores      Dirección IP    Propósito (Servidores con SO Windows)
===============================================================================
sauron.mordor.fan.  10.10.10.3  Active Directory® 2008 SR2
mamba.mordor.fan.   10.10.10.4  Servidor de archivos Windows
darklord.mordor.fan.    10.10.10.6  Proxy, gateway y firewall sobre Kerios  
troll.mordor.fan.   10.10.10.7  Blog basado en... no recuerdo
shadowftp.mordor.fan.   10.10.10.8  Servidor FTP
blackelf.mordor.fan.    10.10.10.9  Servicio e-mail completo
blackspider.mordor.fan. 10.10.10.10 Servicio WWW
palantir.mordor.fan.    10.10.10.11 Chat en Openfire para Windows

Le pedí permiso a El Fueguino para establecer tantos Alias como fueran necesarios para aclarar mi mente y me dio su autorizo:

Real       CNAME
==============================
sauron      ad-dc
mamba       fileserver
darklord    proxyweb
troll       blog
shadowftp   ftpserver
blackelf    mail
blackspider www
palantir    openfire

Todos los registros DNS importantes los declaré en mi instalación de un Active Directory Windows 2008 que me vi obligado a implementar para guiarme en la confección de éste post.

Sobre los registros SRV del DNS de un Active Directory

Los Registros SRV o Localizadores de Servicios -muy empleados en los Active Directory de Microsoft- se definen en la Request for Comments RFC 2782. Permiten la localización de un servicio basado en el protocolo TCP/IP mediante un consulta DNS. Por ejemplo, un cliente en una red Microsoft puede localizar la ubicación de los Controladores de Dominio – Domain Controllers que brindan el servicio  LDAP sobre el protocolo TCP por el puerto 389 mediante una sola consulta DNS.

Es normal que en los Bosques – Forests, y Árboles – Trees de una gran Red Microsoft existan varios Controladores de Dominio. Mediante el uso de los registros SRV en las diferentes Zonas que conforman El Espacio de Nombres de Dominio de esa Red, podemos mantener una Lista de los Servidores que brindan similares servicios bien conocidos, ordenados por preferencia acorde al protocolo de transporte y el puerto de cada uno de los servidores.

En la Request for Comments RFC 1700 se definen los Nombres Simbólicos Universales para los Servicios Bien Conocidos – Well-Known Service, y se reservan nombres como “_telnet“, “_smtp” para los servicios telnet y SMTP. Si no está definido un nombre simbólico para un Servicio Bien Conocido, se puede utilizar un nombre local u otro nombre acorde a las preferencias del usuario.

Bind

El propósito de cada campo “especial” que se utiliza en la declaración de un Registro de Recurso SRV es el siguiente:

  • Domain: “pdc._msdcs.mordor.fan.“. Nombre DNS del servicio al cual se refiere el registro SRV. El nombre DNS del ejemplo significa -mas o menos- Primary Domain Controller de la zona _msdcs.mordor.fan.
  • Service: “_ldap”. Nombre Simbólico del servicio que se brinda definido según la Request for Comments RFC 1700.
  • Protocol: “_tcp”. Indica el tipo de protocolo de transporte. Típicamente puede tomar los valores _tcp o _udp, aunque -y de hecho- se puede utilizar cualquier tipo de protocolo de transporte indicado en la Request for Comments RFC 1700. Por ejemplo, para un servicio chat basado en el protocolo XMPP, este campo tendría el valor de _xmpp.
  • Priority: “0“. Declara la prioridad o preferencia para el Host offering this service que veremos mas adelante. Las consultas DNS de los clientes sobre el servicio definido por este registro SRV, al recibir la respuesta adecuada, intentarán contactar con el primer host disponible con el número mas bajo listado en el campo Priority. El rango de valores que puede tomar este campo es de 0 a 65535.
  • Weight: “100“. Se puede utilizar en combinación con Priority para proveer un mecanismo de balance de carga cuando existan varios servidores que prestan el mismo servicio. Deberá existir un registro similar SRV  para cada servidor en el archivo de Zona, con su nombre declarado en el campo Host offering this service. Ante servidores con iguales valores en el campo Priority, el valor del campo Weight se puede usar como un nivel adicional de preferencia y así obtener una exacta selección de servidor para balancear la carga. El rango de valores que puede tomar este campo es de 0 a 65535. Si no se necesita el balance de carga, por ejemplo como en el caso de un solo servidor, se recomienda asignar el valor 0 para facilitar la lectura del registro SRV.
  • Port number – Port: “389“. Número del puerto en el Host offering this service que brinda el servicio indicado en el campo Service. El número del puerto que se recomienda para cada tipo de Servicio Bien Conocido está indicado en la Request for Comments RFC 1700, aunque pueda tomar un valor entre 0 y 65535.
  • Host offering this service – Target: “sauron.mordor.fan.“. Especifica el FQDN que identifica inequívocamente al host que provee el servicio indicado por el registro SRV. Se requiere un registro tipo “A” en el espacio de nombres del dominio para cada FQDN del servidor o host que brinde el servicio. Mas simple, un registro tipo A en la(s) zona(s) directa(s).
    • Nota:
      Para indicar de forma autoritaria que el servicio especificado por el registro SRV no se presta en éste host, se utiliza un solo (
      .) punto.

Solo queremos repetir que el correcto funcionamiento de una red o de un Active Directory® descansa enormemente en el correcto funcionamiento del Servicio de Nombres de Dominio.

Registros DNS del Active Directory

Para confeccionar las Zonas del nuevo Servidor DNS basado en BIND, debemos obtener todos los registros DNS del Active Directory®. Para facilitarnos la vida, vamos al equipo sauron.mordor.fan -Active Directory® 2008 SR2- y en la Consola de Administración del DNS activamos la Transferencia de Zona -directas e inversa- para las principales zonas declaradas en éste tipo de servicio que son:

  • _msdcs.mordor.fan
  • mordor.fan
  • 10.10.10.in-addr.arpa

Una vez efectuado el paso anterior y preferentemente desde un equipo con Linux cuya dirección IP esté dentro del rango de la subred empleada por la Red Windows, ejecutamos:

buzz@sysadmin:~$ dig @10.10.10.3 _msdcs.mordor.fan axfr > temp/rrs._msdcs.mordor.fan
buzz@sysadmin:~$ dig @10.10.10.3 mordor.fan axfr > temp/rrs.mordor.fan
buzz@sysadmin:~$ dig @10.10.10.3 10.10.10.in-addr.arpa axfr > temp/rrs.10.10.10.in-addr.arpa
  • Recordemos de artículos anteriores que la dirección IP del equipo sysadmin.desdelinux.fan es 10.10.10.1 o la 192.168.10.1.

En los tres comandos anteriores podemos eliminar la opción @10.10.10.3pregunta al servidor DNS con esa dirección– si declaramos en el archivo /etc/resolv.conf a la IP del servidor sauron.mordor.fan:

buzz@sysadmin:~$ cat /etc/resolv.conf 
# Generated by NetworkManager
search desdelinux.fan
nameserver 192.168.10.5
nameserver 10.10.10.3

Después de editar con extremo cuidado, como corresponde a cualquier archivo de zona de un BIND, obtendremos los datos siguientes:

Registros RRs de la zona original _msdcs.mordor.fan

buzz@sysadmin:~$ cat temp/rrs._msdcs.mordor.fan 
; Relativos al SOA y NS
_msdcs.mordor.fan.  3600    IN  SOA sauron.mordor.fan. hostmaster.mordor.fan. 12 900 600 86400 3600
_msdcs.mordor.fan.  3600    IN  NS  sauron.mordor.fan.
;
; GLOBAL CATALOG
gc._msdcs.mordor.fan.   600 IN  A   10.10.10.3
;
; Alias -en la base de datos del LDAP modificado y privado de un Active Directory- de SAURON
03296249-82a1-49aa-a4f0-28900f5d256b._msdcs.mordor.fan. 600 IN CNAME sauron.mordor.fan.
;
; LDAP modificado y privado de un Active Directory
_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.mordor.fan. 600 IN SRV 0 100 389 sauron.mordor.fan.
_ldap._tcp.dc._msdcs.mordor.fan. 600 IN SRV 0 100 389 sauron.mordor.fan.
_ldap._tcp.18d3360d-8fdb-40cf-a678-d7c420b6d775.domains._msdcs.mordor.fan. 600 IN SRV 0 100 389 sauron.mordor.fan.
_ldap._tcp.Default-First-Site-Name._sites.gc._msdcs.mordor.fan. 600 IN SRV 0 100 3268 sauron.mordor.fan.
_ldap._tcp.gc._msdcs.mordor.fan. 600 IN SRV 0 100 3268 sauron.mordor.fan.
_ldap._tcp.pdc._msdcs.mordor.fan. 600 IN SRV    0 100 389 sauron.mordor.fan.
;
; KERBEROS modificado y privado de un Active Directory
_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.mordor.fan. 600 IN SRV 0 100 88 sauron.mordor.fan.
_kerberos._tcp.dc._msdcs.mordor.fan. 600 IN SRV 0 100 88 sauron.mordor.fan.

Registros RRs de la zona original mordor.fan

buzz@sysadmin:~$ cat temp/rrs.mordor.fan 
; Relativos al SOA, NS, MX y al registro A que mapea
; el Nombre del Dominio a la IP de SAURON
; Cosas de un Active Directory
mordor.fan.     3600    IN  SOA sauron.mordor.fan. hostmaster.mordor.fan. 48 900 600 86400 3600
mordor.fan.     600 IN  A   10.10.10.3
mordor.fan.     3600    IN  NS  sauron.mordor.fan.
mordor.fan.     3600    IN  MX  10 blackelf.mordor.fan.
_msdcs.mordor.fan.  3600    IN  NS  sauron.mordor.fan.
;
; Registros A tambien importantes
DomainDnsZones.mordor.fan. 600  IN  A   10.10.10.3
ForestDnsZones.mordor.fan. 600  IN  A   10.10.10.3
; 
; GLOBAL CATALOG
_gc._tcp.mordor.fan.    600 IN  SRV 0 100 3268 sauron.mordor.fan.
_gc._tcp.Default-First-Site-Name._sites.mordor.fan. 600 IN SRV 0 100 3268 sauron.mordor.fan.
;
; LDAP modificado y privado de un Active Directory
_ldap._tcp.mordor.fan.  600 IN  SRV 0 100 389 sauron.mordor.fan.
_ldap._tcp.Default-First-Site-Name._sites.DomainDnsZones.mordor.fan. 600 IN SRV 0 100 389 sauron.mordor.fan.
_ldap._tcp.DomainDnsZones.mordor.fan. 600 IN SRV 0 100 389 sauron.mordor.fan.
_ldap._tcp.Default-First-Site-Name._sites.mordor.fan. 600 IN SRV 0 100 389 sauron.mordor.fan.
_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.mordor.fan. 600 IN SRV 0 100 389 sauron.mordor.fan.
_ldap._tcp.ForestDnsZones.mordor.fan. 600 IN SRV 0 100 389 sauron.mordor.fan.
;
; KERBEROS modificado y privado de un Active Directory
_kerberos._tcp.Default-First-Site-Name._sites.mordor.fan. 600 IN SRV 0 100 88 sauron.mordor.fan.
_kerberos._tcp.mordor.fan. 600  IN  SRV 0 100 88 sauron.mordor.fan.
_kpasswd._tcp.mordor.fan. 600   IN  SRV 0 100 464 sauron.mordor.fan.
_kerberos._udp.mordor.fan. 600  IN  SRV 0 100 88 sauron.mordor.fan.
_kpasswd._udp.mordor.fan. 600   IN  SRV 0 100 464 sauron.mordor.fan.
;
; Registros A con IP fijas -> Servidores
blackelf.mordor.fan.    3600    IN  A   10.10.10.9
blackspider.mordor.fan. 3600    IN  A   10.10.10.10
darklord.mordor.fan.    3600    IN  A   10.10.10.6
mamba.mordor.fan.   3600    IN  A   10.10.10.4
palantir.mordor.fan.    3600    IN  A   10.10.10.11
sauron.mordor.fan.  3600    IN  A   10.10.10.3
shadowftp.mordor.fan.   3600    IN  A   10.10.10.8
troll.mordor.fan.   3600    IN  A   10.10.10.7
;
; Registros CNAME
ad-dc.mordor.fan.   3600    IN  CNAME   sauron.mordor.fan.
blog.mordor.fan.    3600    IN  CNAME   troll.mordor.fan.
fileserver.mordor.fan.  3600    IN  CNAME   mamba.mordor.fan.
ftpserver.mordor.fan.   3600    IN  CNAME   shadowftp.mordor.fan.
mail.mordor.fan.    3600    IN  CNAME   balckelf.mordor.fan.
openfire.mordor.fan.    3600    IN  CNAME   palantir.mordor.fan.
proxy.mordor.fan.   3600    IN  CNAME   darklord.mordor.fan.
www.mordor.fan.     3600    IN  CNAME   blackspider.mordor.fan.

Registros RRs de la zona original 10.10.10.in-addr.arpa

buzz@sysadmin:~$ cat temp/rrs.10.10.10.in-addr.arpa 
; Relativos al SOA y al NS
10.10.10.in-addr.arpa.  3600    IN  SOA sauron.mordor.fan. hostmaster.mordor.fan. 21 900 600 86400 3600
10.10.10.in-addr.arpa.  3600    IN  NS  sauron.mordor.fan.
;
; Registros PTR
10.10.10.10.in-addr.arpa. 3600  IN  PTR blackspider.mordor.fan.
11.10.10.10.in-addr.arpa. 3600  IN  PTR palantir.mordor.fan.
3.10.10.10.in-addr.arpa. 3600   IN  PTR sauron.mordor.fan.
4.10.10.10.in-addr.arpa. 3600   IN  PTR mamba.mordor.fan.
5.10.10.10.in-addr.arpa. 3600   IN  PTR dnslinux.mordor.fan.
6.10.10.10.in-addr.arpa. 3600   IN  PTR darklord.mordor.fan.
7.10.10.10.in-addr.arpa. 3600   IN  PTR troll.mordor.fan.
8.10.10.10.in-addr.arpa. 3600   IN  PTR shadowftp.mordor.fan.
9.10.10.10.in-addr.arpa. 3600   IN  PTR blackelf.mordor.fan.

Hasta este punto podemos pensar que tenemos los datos necesarios para continuar en nuestra aventura, no sin antes observar los TTLs y demás datos que de forma muy concisa nos brinda la salida y observación directa del DNS de un Active Directory® 2008 SR2 de 64 bits de Microsft®.

Imágenes del DNS Manager en SAURON

Equipo dnslinux.mordor.fan.

Si observamos bien, a la dirección IP 10.10.10.5 no se le asignó nombre alguno para que precisamente quedara ocupada por el nombre del nuevo DNS dnslinux.mordor.fan. Para instalar la pareja DNS y DHCP nos podemos guiar por los artículos DNS y DHCP en Debian 8 “Jessie” y DNS y DHCP en CentOS 7.

Sistema operativo base

Mi amigo El Fueguino, además de ser un verdadero especialista en Microsoft® Windows -posee un par de Certificados expedidos por esa compañía- ha leído y puesto en práctica algunos de los artículos sobre escritorios publicados en DesdeLinux., y me comentó que expresamente quería una solución basada en Debian. 😉

Para complacerlo, partiremos de una instalación nueva y limpia de un servidor basado en Debian 8 “Jessie”. No obstante, lo que escribiremos a continuación es válido para las distribuciones CentOS y openSUSE cuyos artículos mencionamos antes. El BIND y el DHCP son los mismos en cualquier distro. Las ligeras variaciones las introducen los mantenedores de los paquetes en cada distribución.

La instalación la haremos según lo indicado en DNS y DHCP en Debian 8 “Jessie”, poniendo cuidado en utilizar la IP 10.10.10.5 y la red 10.10.10.0/24., hasta antes de configurar el BIND.

Configuramos el BIND al estilo Debian

/etc/bind/named.conf

El archivo /etc/bind/named.conf lo dejamos tal cual se instala.

/etc/bind/named.conf.options

El archivo /etc/bind/named.conf.options debe quedar con el contenido siguiente:

root@dnslinux:~# cp /etc/bind/named.conf.options /etc/bind/named.conf.options.original

root@dnslinux:~# nano /etc/bind/named.conf.options
options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // 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 {
        //      0.0.0.0;
        // };

        //=====================================================================$
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //=====================================================================$

    // No queremos DNSSEC
        dnssec-enable no;
        //dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035

 // No necesitamos escuchar por direcciones IPv6
        // listen-on-v6 { any; };
    listen-on-v6 { none; };

 // Para comprobaciones desde el localhost y sysadmin
    // mediante 
    // dig mordor.fan axfr
    // dig 10.10.10.in-addr.arpa axfr
    // dig _msdcs.mordor.fan axfr
    // No tenemos DNS Esclavos... hasta ahora
 allow-transfer { localhost; 10.10.10.1; };
};

// Logging BIND
logging {

        channel queries {
        file "/var/log/named/queries.log" versions 3 size 1m;
        severity info;
        print-time yes;
        print-severity yes;
        print-category yes;
        };

        channel query-error {
        file "/var/log/named/query-error.log" versions 3 size 1m;
        severity info;
        print-time yes;
        print-severity yes;
        print-category yes;
        };

                                
category queries {
         queries;
         };

category query-errors {
         query-error;
         };

};
  • Introducimos la captura de los logs del BIND como un NUEVO aspecto en la serie de artículos sobre el tema. Creamos la carpeta y archivos necesarios para el Logging del BIND:
root@dnslinux:~# mkdir /var/log/named
root@dnslinux:~# touch /var/log/named/queries.log
root@dnslinux:~# touch /var/log/named/query-error.log
root@dnslinux:~# chown -R bind:bind /var/log/named

Comprobamos la sintaxis de los archivos configurados

root@dnslinux:~# named-checkconf 
root@dnslinux:~#

/etc/bind/named.conf.local

Creamos el archivo /etc/bind/zones.rfcFreeBSD con igual contenido que lo indicado en DNS y DHCP en Debian 8 “Jessie”.

root@dnslinux:~# nano /etc/bind/zones.rfcFreeBSD

El archivo /etc/bind/named.conf.local deberá quedar con el siguiente contenido:

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
include "/etc/bind/zones.rfc1918";
include "/etc/bind/zones.rfcFreeBSD";

zone "mordor.fan" {
        type master;
        file "/var/lib/bind/db.mordor.fan";
};

zone "10.10.10.in-addr.arpa" {
        type master;
        file "/var/lib/bind/db.10.10.10.in-addr.arpa";
};

zone "_msdcs.mordor.fan" {
        type master;
 check-names ignore;
        file "/etc/bind/db._msdcs.mordor.fan";
};

root@dnslinux:~# named-checkconf
root@dnslinux:~#

Archivo de la Zona mordor.fan

root@dnslinux:~# nano /var/lib/bind/db.mordor.fan
$TTL 3H
@   IN SOA  dnslinux.mordor.fan.    root.dnslinux.mordor.fan. (
                                        1   ; serial
                                        1D  ; refresh
                                        1H  ; retry
                                        1W  ; expire
                                        3H )    ; minimum or
                                                ; Negative caching time to live
;
; MUCHO CUIDADO CON LOS SIGUIENTES REGISTROS
@               IN   NS  dnslinux.mordor.fan.
@        IN  A   10.10.10.3
@               IN  MX  10 blackelf.mordor.fan.
@       IN  TXT "Wellcome to The Dark Lan of Mordor"
;
_msdcs.mordor.fan.       IN  NS  dnslinux.mordor.fan.
;
dnslinux.mordor.fan.     IN  A   10.10.10.5
; FIN DE MUCHO CUIDADO CON LOS SIGUIENTES REGISTROS
;
DomainDnsZones.mordor.fan.  IN  A   10.10.10.3
ForestDnsZones.mordor.fan.  IN  A   10.10.10.3
; 
; GLOBAL CATALOG
_gc._tcp.mordor.fan.    600 IN  SRV 0 0 3268 sauron.mordor.fan.
_gc._tcp.Default-First-Site-Name._sites.mordor.fan. 600 IN SRV 0 0 3268 sauron.mordor.fan.
;
; LDAP modificado y privado de un Active Directory
_ldap._tcp.mordor.fan.  600 IN  SRV 0 0 389 sauron.mordor.fan.
_ldap._tcp.Default-First-Site-Name._sites.DomainDnsZones.mordor.fan. 600 IN SRV 0 0 389 sauron.mordor.fan.
_ldap._tcp.DomainDnsZones.mordor.fan. 600 IN SRV 0 0 389 sauron.mordor.fan.
_ldap._tcp.Default-First-Site-Name._sites.mordor.fan. 600 IN SRV 0 0 389 sauron.mordor.fan.
_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.mordor.fan. 600 IN SRV 0 0 389 sauron.mordor.fan.
_ldap._tcp.ForestDnsZones.mordor.fan. 600 IN SRV 0 0 389 sauron.mordor.fan.
;
; KERBEROS modificado y privado de un Active Directory
_kerberos._tcp.Default-First-Site-Name._sites.mordor.fan. 600 IN SRV 0 0 88 sauron.mordor.fan.
_kerberos._tcp.mordor.fan. 600  IN  SRV 0 0 88 sauron.mordor.fan.
_kpasswd._tcp.mordor.fan. 600   IN  SRV 0 0 464 sauron.mordor.fan.
_kerberos._udp.mordor.fan. 600  IN  SRV 0 0 88 sauron.mordor.fan.
_kpasswd._udp.mordor.fan. 600   IN  SRV 0 0 464 sauron.mordor.fan.
;
; Registros A con IP fijas -> Servidores
blackelf.mordor.fan.    IN  A   10.10.10.9
blackspider.mordor.fan. IN  A   10.10.10.10
darklord.mordor.fan.    IN  A   10.10.10.6
mamba.mordor.fan.   IN  A   10.10.10.4
palantir.mordor.fan.    IN  A   10.10.10.11
sauron.mordor.fan.   IN  A   10.10.10.3
shadowftp.mordor.fan.   IN  A   10.10.10.8
troll.mordor.fan.   IN  A   10.10.10.7
;
; Registros CNAME
ad-dc.mordor.fan.   IN  CNAME   sauron.mordor.fan.
blog.mordor.fan.    IN  CNAME   troll.mordor.fan.
fileserver.mordor.fan.  IN  CNAME   mamba.mordor.fan.
ftpserver.mordor.fan.   IN  CNAME   shadowftp.mordor.fan.
mail.mordor.fan.    IN  CNAME   balckelf.mordor.fan.
openfire.mordor.fan.    IN  CNAME   palantir.mordor.fan.
proxy.mordor.fan.   IN  CNAME   darklord.mordor.fan.
www.mordor.fan.     IN  CNAME   blackspider.mordor.fan.

root@dnslinux:~# named-checkzone mordor.fan /var/lib/bind/db.mordor.fan 
zone mordor.fan/IN: loaded serial 1
OK

Los tiempos TTL 600 de todos los registros SRV los mantendremos por si instalamos un BIND Esclavo en tiempos por vanir. Esos registros representan servicios del Active Directory® que mayormente leen datos de su base de datos del LDAP. Como esa base de datos cambia con frecuencia, se deben mantener cortos los tiempos de sincronismo, en un esquema DNS Maestro – Esclavo. Según la filosofía Microsoft observada desde el Active Directory 2000 hasta el 2008, se mantiene el valor de 600 para éstos tipos de registros SRV.

Los TTLs de los servidores con IP fijas, quedan bajo el tiempo declarado en el SOA de 3 horas.

Archivo de la Zona 10.10.10.in-addr.arpa

root@dnslinux:~# nano /var/lib/bind/db.10.10.10.in-addr.arpa
$TTL 3H
@   IN SOA  dnslinux.mordor.fan.    root.dnslinux.mordor.fan. (
                                        1   ; serial
                                        1D  ; refresh
                                        1H  ; retry
                                        1W  ; expire
                                        3H )    ; minimum or
                                                ; Negative caching time to live
;
@       IN  NS  dnslinux.mordor.fan.
;
10  IN  PTR blackspider.mordor.fan.
11  IN  PTR palantir.mordor.fan.
3   IN      PTR     sauron.mordor.fan.
4   IN      PTR     mamba.mordor.fan.
5   IN      PTR     dnslinux.mordor.fan.
6   IN      PTR     darklord.mordor.fan.
7   IN      PTR     troll.mordor.fan.
8   IN      PTR     shadowftp.mordor.fan.
9   IN      PTR     blackelf.mordor.fan.

root@dnslinux:~# named-checkzone 10.10.10.in-addr.arpa /var/lib/bind/db.10.10.10.in-addr.arpa 
zone 10.10.10.in-addr.arpa/IN: loaded serial 1
OK

Archivo de la Zona _msdcs.mordor.fan

Tengamos en cuenta lo recomendado en el archivo /usr/share/doc/bind9/README.Debian.gz dobre la ubicación de los archivos de las Zonas Maestras no sometidas a actualizaciones dinámicas por el DHCP.

root@dnslinux:~# nano /etc/bind/db._msdcs.mordor.fan
$TTL 3H
@       IN SOA  dnslinux.mordor.fan.    root.dnslinux.mordor.fan. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum or
                                                ; Negative caching time to live
;
@               IN      NS      dnslinux.mordor.fan.
;
;
; GLOBAL CATALOG
gc._msdcs.mordor.fan.   600     IN      A       10.10.10.3
;
; Alias -en la base de datos del LDAP modificado y privado de un Active Directory- de SAURON
03296249-82a1-49aa-a4f0-28900f5d256b._msdcs.mordor.fan. 600 IN CNAME sauron.mordor.fan.
;
; LDAP modificado y privado de un Active Directory
_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.mordor.fan. 600 IN SRV 0 100 389 sauron.mordor.fan.
_ldap._tcp.dc._msdcs.mordor.fan. 600 IN SRV     0 100 389 sauron.mordor.fan.
_ldap._tcp.18d3360d-8fdb-40cf-a678-d7c420b6d775.domains._msdcs.mordor.fan. 600 IN SRV 0 100 389 sauron.mordor.fan.
_ldap._tcp.Default-First-Site-Name._sites.gc._msdcs.mordor.fan. 600 IN SRV 0 100 3268 sauron.mordor.fan.
_ldap._tcp.gc._msdcs.mordor.fan. 600 IN SRV     0 100 3268 sauron.mordor.fan.
_ldap._tcp.pdc._msdcs.mordor.fan. 600 IN SRV    0 100 389 sauron.mordor.fan.
;
; KERBEROS modificado y privado de un Active Directory
_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.mordor.fan. 600 IN SRV 0 100 88 sauron.mordor.fan.
_kerberos._tcp.dc._msdcs.mordor.fan. 600 IN SRV 0 100 88 sauron.mordor.fan.

Comprobamos la sintaxis y podemmos ignorar el error que devuelve, ya que en la configuración de ésta Zona en el archivo /etc/bind/named.conf.local incluimos la declaración check-names ignore;. La zona será correctamente cargada por el BIND.

root@dnslinux:~# named-checkzone _msdcs.mordor.fan /etc/bind/db._msdcs.mordor.fan 
/etc/bind/db._msdcs.mordor.fan:14: gc._msdcs.mordor.fan: bad owner name (check-names)
zone _msdcs.mordor.fan/IN: loaded serial 1
OK

root@dnslinux:~# systemctl restart bind9.service 
root@dnslinux:~# systemctl status bind9.service 
● bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled)
  Drop-In: /run/systemd/generator/bind9.service.d
           └─50-insserv.conf-$named.conf
   Active: active (running) since dom 2017-02-12 08:48:38 EST; 2s ago
     Docs: man:named(8)
  Process: 859 ExecStop=/usr/sbin/rndc stop (code=exited, status=0/SUCCESS)
 Main PID: 864 (named)
   CGroup: /system.slice/bind9.service
           └─864 /usr/sbin/named -f -u bind

feb 12 08:48:38 dnslinux named[864]: zone 3.e.f.ip6.arpa/IN: loaded serial 1
feb 12 08:48:38 dnslinux named[864]: zone b.e.f.ip6.arpa/IN: loaded serial 1
feb 12 08:48:38 dnslinux named[864]: zone 0.e.f.ip6.arpa/IN: loaded serial 1
feb 12 08:48:38 dnslinux named[864]: zone 7.e.f.ip6.arpa/IN: loaded serial 1
feb 12 08:48:38 dnslinux named[864]: zone mordor.fan/IN: loaded serial 1
feb 12 08:48:38 dnslinux named[864]: zone example.org/IN: loaded serial 1
feb 12 08:48:38 dnslinux named[864]: zone _msdcs.mordor.fan/IN: loaded serial 1
feb 12 08:48:38 dnslinux named[864]: zone invalid/IN: loaded serial 1
feb 12 08:48:38 dnslinux named[864]: all zones loaded
feb 12 08:48:38 dnslinux named[864]: running

Consultamos el BIND

Antes de instalar el DHCP, debemos efectuar toda una serie de comprobaciones que incluye hasta la unión de un cliente Windows 7 al dominio mordor.fan representado por el Active Directory instalado en el equipo sauron.mordor.fan.

Lo primero que debemos hacer es detener el servicio DNS en el equipo sauron.mordor.fan, y declarar en su interfaz de red que en lo adelante su servidor DNS será el 10.10.10.5 dnslinux.mordor.fan.

En una consola del propio servidor sauron.mordor.fan ejecutamos:

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Administrator>nslookup
Default Server:  dnslinux.mordor.fan
Address:  10.10.10.5

> gc._msdcs
Server:  dnslinux.mordor.fan
Address:  10.10.10.5

Name:    gc._msdcs.mordor.fan
Address:  10.10.10.3

> mordor.fan
Server:  dnslinux.mordor.fan
Address:  10.10.10.5

Name:    mordor.fan
Address:  10.10.10.3

> 03296249-82a1-49aa-a4f0-28900f5d256b._msdcs
Server:  dnslinux.mordor.fan
Address:  10.10.10.5

Name:    sauron.mordor.fan
Address:  10.10.10.3
Aliases:  03296249-82a1-49aa-a4f0-28900f5d256b._msdcs.mordor.fan

> set type=SRV
> _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs
Server:  dnslinux.mordor.fan
Address:  10.10.10.5

_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.mordor.fan      SRV serv
ice location:
          priority       = 0
          weight         = 100
          port           = 88
          svr hostname   = sauron.mordor.fan
_msdcs.mordor.fan       nameserver = dnslinux.mordor.fan
sauron.mordor.fan       internet address = 10.10.10.3
dnslinux.mordor.fan     internet address = 10.10.10.5
> _ldap._tcp.18d3360d-8fdb-40cf-a678-d7c420b6d775.domains._msdcs
Server:  dnslinux.mordor.fan
Address:  10.10.10.5

_ldap._tcp.18d3360d-8fdb-40cf-a678-d7c420b6d775.domains._msdcs.mordor.fan
SRV service location:
          priority       = 0
          weight         = 100
          port           = 389
          svr hostname   = sauron.mordor.fan
_msdcs.mordor.fan       nameserver = dnslinux.mordor.fan
sauron.mordor.fan       internet address = 10.10.10.3
dnslinux.mordor.fan     internet address = 10.10.10.5
> exit

C:\Users\Administrator>

Las consultas DNS realizadas desde sauron.mordor.fan son satisfactorias.

El próximo paso será la creación de otra máquina virtual con Windows 7 instalado. Como aun no tenemos instalado el servicio DHCP, le daremos al equipo con nombre “win7” la dirección IP 10.10.10.251. También le declaramos que su servidor DNS será el 10.10.10.5 dnslinux.mordor.fan, y que el dominio de búsqueda será mordor.fan. No registraremos ese equipo en el DNS porque lo usaremos también para probar el servicio DHCP después que lo instalemos.

A continuación abrimos una consola CMD y en ella ejecutamos:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\buzz>nslookup
Default Server:  dnslinux.mordor.fan
Address:  10.10.10.5

> mordor.fan
Server:  dnslinux.mordor.fan
Address:  10.10.10.5

Name:    mordor.fan
Address:  10.10.10.3

> set type=SRV
> _ldap._tcp.DomainDnsZones
Server:  dnslinux.mordor.fan
Address:  10.10.10.5

_ldap._tcp.DomainDnsZones.mordor.fan    SRV service location:
          priority       = 0
          weight         = 0
          port           = 389
          svr hostname   = sauron.mordor.fan
mordor.fan      nameserver = dnslinux.mordor.fan
sauron.mordor.fan       internet address = 10.10.10.3
dnslinux.mordor.fan     internet address = 10.10.10.5
> _kpasswd._udp
Server:  dnslinux.mordor.fan
Address:  10.10.10.5

_kpasswd._udp.mordor.fan        SRV service location:
          priority       = 0
          weight         = 0
          port           = 464
          svr hostname   = sauron.mordor.fan
mordor.fan      nameserver = dnslinux.mordor.fan
sauron.mordor.fan       internet address = 10.10.10.3
dnslinux.mordor.fan     internet address = 10.10.10.5
> _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones
Server:  dnslinux.mordor.fan
Address:  10.10.10.5

_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.mordor.fan     SRV serv
ice location:
          priority       = 0
          weight         = 0
          port           = 389
          svr hostname   = sauron.mordor.fan
mordor.fan      nameserver = dnslinux.mordor.fan
sauron.mordor.fan       internet address = 10.10.10.3
dnslinux.mordor.fan     internet address = 10.10.10.5
> exit

C:\Users\buzz>

Las consultas DNS efectuadas desde el cliente “win7” también fueron satisfactorias.

En el Active Directory creamos el usuario “saruman“, con el objetivo de utilizarlo al unir el cliente win7 al dominio mordor.fan., mediante el método “Network ID“, usando los nombres de usuarios saruman@mordor.fan y administrator@mordor.fan. La unión se efectuó correctamente y lo prueba la siguiente captura de pantalla:

Sobre las Actualizaciones Dinámicas en el Microsoft® DNS y en el BIND

Como tenemos el servicio DNS detenido en el Active Directory® no le fue posible al cliente “win7” registrar su nombre y dirección IP en ese DNS. Mucho menos en dnslinux.mordor.fan ya que no hicimos ninguna declaración allow-update para cualquiera de las zonas involucradas.

Y aquí fue donde se formó la buena trifulca con mi amigo El Fueguino. En mi primer correo sobre éste aspecto le comenté:

  • En los artículos de Microsoft sobre el uso del BIND y el Active Directory® recomiendan que, sobre todo a la Zona Directa, se permita ser actualizada –penetrada– directamente por los clientes Windows que ya están unidos al dominio del Active Directory.
  • Por eso es que, por defecto, en las zonas del DNS de un Active Directory® se permiten las Actualizaciones Dinámicas Seguras por parte de los clientes Windows que ya estén unidos al dominio del Active Directory. Sino están unidos, que se abstengan a las consecuencias.
  • El DNS de un Active Directory admite las actualizaciones dinámicas “Secure only”, “Nonsecure and secure”, o “None” que es lo mismo que decir SIN Actualizaciones o Ninguna.
  • Si de verdad la Filosofía Microsoft no estuviera de acuerdo con que sus clientes NO actualizaran sus datos en su(s) DNS(s), no dejaría abierta la posibilidad de inhabilitar las actualizaciones dinámicas en su(s) DNS(s), a menos que esa opción se dejara para propósitos mas ocultos.
  • Microsoft ofrece “Seguridad” a cambio de Obscuridad, como me afirmó un colega y amigo que pasó cursos de Certificados Microsft®. Cierto. Además, me lo confirmó El Fueguino.
  • Un cliente que adquiera una dirección IP por medio de un DHCP instalado en una máquina con UNIX®/Linux por ejemplo, no podrá resolver la dirección IP de su propio nombre hasta que no esté unido al dominio del Active Directory, siempre que se utilice como DNS el de Microsoft® o un BIND sin actualizaciones dinámicas por parte de un DHCP.
  • Si instalo el DHCP en el propio Active Directory®, entonces debo declarar que las Zonas sean actualizadas por el DHCP de Microsoft®.
  • Si vamos a utilizar el BIND como el DNS para la red Windows, lo lógico y recomendado sea que instalemos la dupla BIND-DHCP, con éste último actualizando de forma dinámica al BIND  y asunto concluido.
  • En el mundo de las redes LAN en UNIX®/Linux, desde que se inventaron las actualizaciones dinámicas sobre el BIND, solo se le permite al Señor DHCP “penetrar” a la Señora BIND con sus actualizaciones. El relajo que sea con orden, por favor.
  • Cuando declaro en la zona mordor.fan por ejemplo: allow-update { 10.10.10.0/24; };, el propio BIND me informa al iniciarlo o reiniciarlo que:
    • zone 'mordor.fan' allows updates by IP address, which is insecure
  • En el sacrosanto mundo UNIX®/Linux ese desparpajo con el DNS es sencillamente inadmisible.

Se podrán imaginar el resto del intercambio con mi amigo El Fueguino mediante e-mails, Telegram Chat, llamadas telefónicas pagadas por él (por supuesto hombre, que no tengo un kilo para eso), y hasta ¡mensajes por medio de palomas mensajeras en pleno siglo XXI!.

Hasta me amenazó con no mandarme un hijo de su mascota, su Iguana “Petra” que me había prometido como parte del pago. Ahí si que me asusté de verdad. Entonces empecé de nuevo, pero desde otro ángulo.

  • El “casi” Active Directory que se puede lograr con Samba 4, resuelve ese aspecto de forma magistral, tanto cuando utilizamos su DNS Interno, o el BIND compilado para que soporte zonas DLZ – Dinamyc Loaded Zones, o Zonas Cargadas Dinámicamente.
  • Sigue padeciendo de lo mismo: cuando un cliente adquiere una dirección IP por medio de un DHCP instalado en otra máquina con UNIX®/Linux, no podrá resolver la dirección IP de su propio nombre hasta que no esté unido al dominio del AD-DC de Samba 4.
  • Integrar la dupla BIND-DLZ y DHCP en la misma máquina donde esté instalado el AD-DC Samba 4 es tarea para un especialista de verdad.

El Fueguino me llamó a capítulo y me gritó: ¡NO estamos hablando del AD-DC Samba 4, sino del Microsoft® Active Directory®!. Y humildemente le respondí que me embullé con parte de los siguientes artículos que yo iba a escribir.

Entonces fue cuando le dije que, la decisión final sobre las actualizaciones dinámicas de los equipos clientes en su red quedaba a su libre albedrío. Que solamente le daría el tip escrito antes sobre allow-update { 10.10.10.0/24; };, y más nada. Que yo no me hacía responsable de lo que resultara de esa promiscuidad de que cada cliente Windows -o Linux- en su red “penetrara” impunemente al BIND.

Si Usted supiera amigo Lector que ese fue el Punto Final a la trifulca no me lo creería. Mi amigo El Fueguino aceptó la solución -y me enviará a la iguana “Petrica“- que ahora comparto con Usted.

Instalamos y configuramos el DHCP

Para mas detalles lea DNS y DHCP en Debian 8 “Jessie”.

root@dnslinux:~# aptitude install isc-dhcp-server

root@dnslinux:~# nano /etc/default/isc-dhcp-server
....
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth0"

root@dnslinux:~# dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER dhcp-key
Kdhcp-key.+157+29836

root@dnslinux:~# cat Kdhcp-key.+157+29836.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: 3HT/bg/6YwezUShKYofj5g==
Bits: AAA=
Created: 20170212205030
Publish: 20170212205030
Activate: 20170212205030

root@dnslinux:~# nano dhcp.key
key dhcp-key {
        algorithm hmac-md5;
        secret "3HT/bg/6YwezUShKYofj5g==";
};

root@dnslinux:~# install -o root -g bind -m 0640 dhcp.key /etc/bind/dhcp.key
root@dnslinux:~# install -o root -g root -m 0640 dhcp.key /etc/dhcp/dhcp.key

root@dnslinux:~# nano /etc/bind/named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
include "/etc/bind/zones.rfc1918";
include "/etc/bind/zones.rfcFreeBSD";
// No olvidar... me olvidé y pagué con errores. ;-)
include "/etc/bind/dhcp.key";


zone "mordor.fan" {
        type master;
        allow-update { 10.10.10.3; key dhcp-key; };
        file "/var/lib/bind/db.mordor.fan";
};

zone "10.10.10.in-addr.arpa" {
        type master;
        allow-update { 10.10.10.3; key dhcp-key; };
        file "/var/lib/bind/db.10.10.10.in-addr.arpa";
};

zone "_msdcs.mordor.fan" {
        type master;
        check-names ignore;
        file "/etc/bind/db._msdcs.mordor.fan";
};

root@dnslinux:~# named-checkconf 
root@dnslinux:~#

root@dnslinux:~#  nano /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ddns-updates on;
ddns-domainname "mordor.fan.";
ddns-rev-domainname "in-addr.arpa.";
ignore client-updates;

authoritative;

option ip-forwarding off;
option domain-name "mordor.fan";

include "/etc/dhcp/dhcp.key";

zone mordor.fan. {
        primary 127.0.0.1;
        key dhcp-key;
}
zone 10.10.10.in-addr.arpa. {
        primary 127.0.0.1;
        key dhcp-key;
}

shared-network redlocal {
        subnet 10.10.10.0 netmask 255.255.255.0 {
                option routers 10.10.10.1;
                option subnet-mask 255.255.255.0;
                option broadcast-address 10.10.10.255;
                option domain-name-servers 10.10.10.5;
                option netbios-name-servers 10.10.10.5;
                range 10.10.10.30 10.10.10.250;
        }
}
# FIN dhcpd.conf

root@dnslinux:~# dhcpd -t
Internet Systems Consortium DHCP Server 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcp/dhcpd.leases
PID file: /var/run/dhcpd.pid

root@dnslinux:~# systemctl restart bind9.service 
root@dnslinux:~# systemctl status bind9.service 

root@dnslinux:~# systemctl start isc-dhcp-server.service
root@dnslinux:~# systemctl status isc-dhcp-server.service

Lo relacionado con las Comprobaciones con clientes, y la Modificación manual de los archivos de Zonas, lo dejamos para que Usted, amigo lector, lo lea directamente de DNS y DHCP en Debian 8 “Jessie”, y lo aplique a sus condiciones reales. Nosotros si efectuamos todas las comprobaciones necesarias y obtuvimos resultados satisfactorios. Por supuesto que enviamos copia de todas ellas a El Fueguino. ¡No faltara más!.

Consejos

Generales

  • Adquiera una buena cantidad de paciencia antes de empezar.
  • Primero instale y configure el BIND. Compruebe todo y consulte todos los registros que declaró en cada archivo de las tres -o más- zonas, tanto desde el Active Directory como desde el propio servidor DNS en Linux. Si es posible, desde una máquina Linux que no esté unida al dominio, haga las necesarias consultas DNS al BIND.
  • Una al dominio existente un cliente Windows con una dirección IP fija, y vuelva a comprobar toda la configuración del BIND desde el cliente Windows.
  • Después que Usted esté indudablemente seguro de que la configuración de su nuevo y flamante BIND es totalmente correcta, aventúrese a instalar, configurar, e iniciar el servicio DHCP.
  • Ante errores, repita todo el procedimiento desde cero 0.
  • ¡Cuidado con el copy & paste! y los espacios sobrantes en cada línea de los archivos named.conf.xxxx
  • Después no se queje -mucho menos con mi amigo el Fueguino- de que no lo aconsejaron debidamente.

Otros consejos

  • Divide y vencerás.
  • En una Red PYME es mas seguro y beneficioso instalar un BIND Autoritario para las Zonas de la LAN interna que no haga recursividad a ningún servidor raíz: recursion no;.
  • En una Red PYME ubicada bajo un Proveedor de Acceso a Internet – ISP, acaso los servicios Proxy y SMTP necesitan resolver nombres de dominio en la Internet. El Squid tiene la opción de declarar sus DNS sean externos o no, mientras que en un servidor de correo basado en Postfix o MDaemon® también podemos declarar los servidores DNS que utilizaremos en ese servicio. En casos como éste, o sea, casos que no brinden servicios a la Internet y que estén debajo de un Internet Service Provider, se puede instalar un BIND con Forwarders apuntando a los DNS del ISP,  y declararlo como DNS secundario en los servidores que necesiten resolver consultas externas a la LAN, sino es posible declararlos mediante sus propios archivos de configuración.
  • Si Usted tiene una Zona Delegada bajo su entera responsabilidad, entonces canta otro gallo:
    • Instale un servidor DNS basado en NSD, el cual es un servidor DNS Autoritario por definición, que responda a las consultas provenientes de equipos en la Internet. Para alguna información aptitude show nsd. 😉  Favor de protegerlo muy bien mediante tantos muros cortafuegos como sean necesarios. Tanto por hardware como por software. Será un DNS cara a Internet, y esa “cara” no la debemos dar con los pantalones bajos. 😉
    • Como nunca me he visto en un caso como el éste, o sea, responsable total de una Zona Delegada, tendría que pensar muy bien que recomendar para la resolución de nombres de dominio externos a nuestra LAN para los servicios que lo necesiten. Los Clientes de la Red PYME no lo necesitan realmente. Consulte literatura especializada, o a un especialista en éstos temas, pues estoy muy lejos de ser uno de ellos. En serio.
    • En los servidores Autoritarios no existe la Recursividad. ¿Ok?. Por si a alguien se le ocurre hacerlo con un BIND.
  • A pesar que especificamos explícitamente en el archivo /etc/dhcp/dhcpd.conf la declaración ignore client-updates;, si ejecutamos en una consola del equipo dnslinux.mordor.fan la orden journalctl -f, veremos que al iniciar el cliente win7.mordor.fan obtenemos los siguientes mensajes de error:
    • feb 12 16:55:41 dnslinux named[900]: client 10.10.10.30#58762: update 'mordor.fan/IN' denied
      feb 12 16:55:42 dnslinux named[900]: client 10.10.10.30#49763: update 'mordor.fan/IN' denied
      feb 12 16:56:23 dnslinux named[900]: client 10.10.10.30#63161: update 'mordor.fan/IN' denied
      
    • Para eliminar esos mensajes, debemos ir a las opciones avanzadas de la configuración de la tarjeta de red y desmarcar la opción “Register this connection’s addresses in DNS“. Eso evitará para siempre que el cliente intente auto registrase en el DNS Linux y fin del problema. Lo siento, pero no tengo una copia de Windows 7 en español. 😉
  • Para enterarse de todas las consultas serias -y locas- que hace un cliente Windows 7, consulte el log queries.log que para algo lo declaramos en la configuración del BIND. La orden sería:
    • root@dnslinux:~# tail -f /var/log/named/queries.log
  • Si Usted no permite que sus equipos clientes se conecten directamente a Internet, entonces ¿para que le hacen falta los Servidores DNS Raíces?. Ésto disminuirá considerablemente la salida del comando journalctl -f y del anterior, si su servidor DNS Autoritario para las Zonas Internas no se conecta directamente con Internet, lo cual es muy recomendado desde el punto de vista de la seguridad.
    root@dnslinux:~# cp /etc/bind/db.root /etc/bind/db.root.original
    root@dnslinux:~# cp /dev/null /etc/bind/db.root
  • Sino necesita la declaración de los servidores raíces, entonces ¿para que le hace falta la Recursividad – Recursion?
    root@dnslinux:~# nano /etc/bind/named.conf.options
    options {
     ....
     recursion no;
     ....
    };

Consejo específico del cual aun no estoy muy claro

El man dhcpd.conf nos dice lo siguiente entre muchas -muchísimas- cosa mas:

        The update-optimization statement

            update-optimization flag;

            If the update-optimization parameter is false for a given  client,
            the server will attempt a DNS update for that client each time the
            client renews its lease, rather than  only  attempting  an  update
            when  it appears to be necessary.  This will allow the DNS to heal
            from database inconsistencies more easily, but the  cost  is  that
            the DHCP server must do many more DNS updates.  We recommend leav‐
            ing this option enabled, which is the default.  This  option  only
            affects  the behavior of the interim DNS update scheme, and has no
            effect on the ad-hoc DNS update scheme.  If this parameter is  not
            specified,  or  is true, the DHCP server will only update when the
            client information changes, the client gets a different lease,  or
            the client's lease expires.

La traducción o interpretación mas o menos exacta se la dejamos a Usted, caro lector.

Personalmente me ha sucedido -y sucedió durante la confección de éste artículo- que cuando enlazo un BIND a un Active Directory® sea de Microsft® o de Samba 4, si le cambio el nombre a un equipo cliente registrado en el dominio del Active Directory® o del AD-DC de Samba 4, mantiene su nombre antiguo y dirección IP en la Zona Directa, y no así en la inversa que se actualiza correctamente con el nombre nuevo. O sea, se mapean el nombre antiguo y el nuevo a la misma dirección IP en la Zona Directa, mientras que en la inversa solo aparece el nombre nuevo. Para entenderme bien lo deben probar Ustedes mismos.

Pienso sea una especie de venganza hacia El Fueguino -que no hacia mi, por favor- por tratar de migrar sus servicios a Linux.

Por supuesto que el nombre antiguo desaparecerá cuando expire su TTL 3600, o el tiempo que hayamos declarado en la configuración del DHCP. Pero queremos que desaparezca de inmediato como sucede en un BIND + DHCP sin un Active Directory por medio.

La solución a esa situación la encontré insertando la declaración update-optimization false; al final de la parte superior del archivo /etc/dhcp/dhcpd.conf:

ddns-update-style interim;
ddns-updates on;
ddns-domainname "mordor.fan.";
ddns-rev-domainname "in-addr.arpa.";
ignore client-updates;
update-optimization false;

Si algún Lector conoce mas al respecto, por favor de Iluminarme. Se lo agradeceré y mucho.

Resumen

Nos hemos divertido un montón con el tema, no?. Nada de sufrimientos pues tenemos un BIND funcionando como servidor DNS en una red Microsoft®, ofreciendo todos los registros SRV y respondiendo adecuadamente a las consultas DNS que se les haga. Por otra parte tenemos a un servidor DHCP otorgando direcciones IP y actualizando correctamente de forma dinámica a las Zonas del BIND.

Mas no podemos pedir… por el momento.

Espero que mi amigo El Fueguino esté contento y satisfecho del primer paso en su migración a Linux para hacer soportable los insoportables costos del Soporte Técnico de Microsft®.

Nota importante

El personaje “El Fueguino” es completamente ficticio y producto de mi imaginación. Cualquier parecido o coincidencia con personas reales es eso mismo: Pura Coincidencia Involuntaria de mi parte. Solo lo creé para hacer un poco amena la redacción y lectura de éste artículo. Ahora si que me pueden decir que el tema DNS es obscuro. 😉

El artículo BIND y Active Directory® aparece primero en BIND y Active Directory®.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.