Herramientas de usuario

Herramientas del sitio


informatica:certificaciones:lpic:lpic-2:207_domain_name_server:207.2

207.2 Create and maintain DNS zones

Pertenece a Topic 207: Domain Name Server

  • Weight: 3
  • Description: Candidates should be able to create a zone file for a forward or reverse zone and hints for root level servers. This objective includes setting appropriate values for records, adding hosts in zones and adding zones to the DNS. A candidate should also be able to delegate zones to another DNS server.
  • Key Knowledge Areas:
    • BIND 9 configuration files, terms and utilities
    • Utilities to request information from the DNS server
    • Layout, content and file location of the BIND zone files
    • Various methods to add a new host in the zone files, including reverse zones
  • Terms and Utilities:
    • /var/named/
    • zone file syntax
    • resource record formats
    • named-checkzone
    • named-compilezone
    • masterfile-format
    • dig
    • nslookup
    • host

Creación de un Fichero de Zona Directa

Suelen ubicarse en los directorio /var/named o /etc/bind

Su nomenclatura suele ser: db.nombrezona

$TTL     ttl
nombrezona IN SOA servidor mailadmin (
    serial
    refresh
    retry
    expire
    negative
)

nombrezona IN NS servidor
Parámetro Descripción
ttl Time To Live (tiempo de vida): indica la duración en segundos que se conservarán los datos en memoria caché. Este valor se precede por la directiva $TTL.
nombrezona FQDN de la zona administrada en este archivo. A menudo reemplazado por una arroba (@) para aligerar el archivo. Atención, como se trata de un FQDN, el nombre de la zona debe acabar con un punto.
IN Obsoleto a la vez que actual: clase Internet (no hay otra clase que se pueda usar).
SOA Start Of Authority. Registro obligatorio para indicar que este servidor es legítimo en esta zona.
servidor FQDN del servidor que tiene autoridad en la zona.
mailadmin Dirección de correo del administrador del servidor. La arroba es un carácter reservado en los archivos de zona, convencionalmente se reemplaza por un punto. admin@midominio.es pasaría a ser entonces admin.midominio.es.
serial Valor numérico. Número de serie del archivo. Útil cuando la zona se replica en otros servidores para saber si los datos han cambiado y si debe hacerse la réplica.
refresh Valor numérico. Utilizado cuando la zona se replica. Indica al servidor esclavo con qué intervalo comprobar la validez de su zona.
retry Valor numérico. Utilizado cuando la zona se replica. Si es imposible para el servidor esclavo contactar con el servidor maestro, indica cuánto esperar antes de volverlo a intentar.
expire Valor numérico. Utilizado cuando la zona se replica. Si es imposible para el servidor esclavo contactar con el servidor maestro, indica con cuánto tiempo los registros sin refrescar pierden su validez y deben dejarse de usar.
negative Valor numérico. Indica cuánto tiempo el servidor debe conservar en caché una respuesta negativa.
NS Registro que indica cuál es el servidor de nombres para esta zona.

Ejemplo

/var/named/db.midominio.com:

linux.midominio.com. IN A     192.168.100.102
servidor1            IN CNAME alfa.midominio.com.

Creación de un Fichero de Zona Inversa

El fichero de zona inversa tiene la misma estructura que el de la zona directa.

Su nombre se forma con los bytes de la parte de red de la dirección IP ordenados en sentido inverso + .in-addr.arpa, por ejemplo, 10.168.192.in-addr.arpa

$TTL     ttl
nombrezonainv IN SOA servidor mailadmin (
    serial
    refresh
    retry
    expire
    negative
)

nombrezonainv IN NS servidor

Ejemplo

/var/named/100.168.192.in-addr.arpa:

101 IN PTR linux.midominio.com.
102 IN PTR alfa.midominio.com.

Campos de la Cabecera de los Ficheros de Zona

Campo Descripción
ttl (Time To Live) Indica la duración en segundos que se conservarán los datos en memoria caché.
nombrezona FQDN (fully qualified domain name) de la zona administrada. Debe terminar con un punto.
IN Clase Internet
SOA Start Of Authority. Registro obligatorio para indicar que este servidor es legítimo en esta zona.
servidor FQDN del servidor que tiene autoridad en la zona.
mailadmin Dirección de correo del administrador del servidor. La arroba es un carácter reservado en los archivos de zona, convencionalmente se reemplaza por un punto.
serial Número de serie del archivo. Útil cuando la zona se replica en otros servidores para saber si los datos han cambiado y si debe hacerse la réplica.
refresh Utilizado cuando la zona se replica. Indica al servidor esclavo con qué intervalo comprobar la validez de su zona.
retry Utilizado cuando la zona se replica. Si es imposible para el servidor esclavo contactar con el servidor maestro, indica cuánto esperar antes de volver a intentarlo
expire
negative Indica cuánto tiempo el servidor debe conservar en caché una respuesta negativa

Creación de Registros de Zona

Una vez que los ficheros de zona se han creado, basta con añadir tantos registros de recursos como se desee, a razón de uno por línea.

Fichero de Zona directa

Estructura:

; nombre  IN    TipoRR    valor_resuelto
www       IN    A         192.168.3.43

Ejemplo para el fichero de zona directa db.micasa (a partir de una copia de db.local):

$TTL    604800
@       IN     SOA    micasa.local. webmaster.micasa.local. (
                           2    ; Serial
                      604800    ; Refresh
                       86400    ; Retry
                     2419200    ; Expire
                      604800 )  ; Negative Cache TTL
                      
# Servidor DNS del dominio
@      IN      NS    debian10.micasa.local.

@      IN      A     192.168.1.135
debian10 IN    A     192.168.1.135

Fichero de Zona inversa

Estructura de los registros de la zona inversa:

; direccion_host IN PTR nombre
43               IN PTR www

Ejemplo para el fichero de zona inversa db.192.168.1 (a partir de una copia de db.127):

$TTL    604800
@       IN     SOA    micasa.local. webmaster.micasa.local. (
                           1    ; Serial
                      604800    ; Refresh
                       86400    ; Retry
                     2419200    ; Expire
                      604800 )  ; Negative Cache TTL
;
                      
# Servidor DNS del dominio
@      IN      NS    debian10.micasa.local.

# Registro PTR
135    IN      PTR   debian10

Faltaría definir la zona inversa en named.conf.miszonas:

zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192.168.1;
};

Declaración de una Zona Principal

Se denomina zona principal a la zona declarada en un servidor de tipo master.

Para realizar la declaración de una zona principal debemos incluir la siguiente configuración en el fichero named.conf:

zone "nombrezona" {
    type master;
    file "archivo";
};
  • nombrezona: El FQDN de la zona gestionada por el servidor.
  • type master: Determina que se trata de una zona maestra que se debe sincronizar con posibles servidores esclavos.
  • archivo: Ruta absoluta del archivo que se debe leer para conocer todos los

elementos propios de la zona (configuración, RR, etc.).

Para poder organizar todo mejor, podemos crear las zonas principales en named.conf.miszonas y luego hacer referencia a ese fichero desde named.conf:

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/named.conf.miszonas"

De esta manera, nuestro fichero named.conf.miszonas podría ser:

zone "micasa.local" {
    type master;
    file "/etc/bind/db.micasa";
};

Declaración de una Zona Secundaria

Una zona DNS no debería depender de un único servidor y por ello es frecuente crear un segundo servidor de zonas secundarias, estrictamente idénticas a las zonas primarias y sincronizadas a intervalos regulares.

Se denomina zona secundaria a la zona declarada en un servidor de tipo slave.

Para realizar la declaración de una zona secundaria debemos incluir la siguiente configuración en el fichero named.conf:

zone "nombrezona" {
    type slave;
    masters { direccion_maestro; };    
    file "archivo";
};
  • nombrezona: El FQDN de la zona gestionada por el servidor.
  • type slave: Determina que se trata de una zona esclava que se tendrá que sincronizar desde un servidor maestro.
  • direccion_maestro: Dirección IP del servidor autoritario.
  • archivo: Ruta absoluta al archivo en el que se almacenan los elementos sincronizados. La cuenta de servicio debe tener los permisos de escritura habilitados en el directorio de trabajo.

Ejemplo declaraciones zona directa e inversa

En el archivo named.conf:

//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "midominio.com" {
    type master;
    file "/etc/bind/db.midominio.com";
};
zone "100.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192.168.100";
};

Delegación de zona

A la hora de crear un subdominio, podemos hacerlo de 2 formas: incluyendolo en la zona o creando una zona delegada.

Esta segunda manera nos permitirá administrar el subdominio como una zona separada.

El dominio principal deberá delegar el dns del subdominio. Por ejemplo, en el archivo de zona padre:

zona_hija IN NS dns_hijo
dns_hijo IN A D.C.B.A
  • zona_hija: Nombre simple de la zona hija.
  • IN: Obsoleto pero obligatorio: clase Internet.
  • NS: Este registro es de tipo Name Server (servidor de nombres).
  • dns_hijo: Nombre del servidor DNS que administra la zona hija.
  • A: Es un registro de tipo A.
  • D.C.B.A: Dirección IP del servidor de nombres para la zona hija.

Actualización de la Configuración

Siempre que realicemos cualquier cambio en los ficheros de configuración de las zonas, debemos reiniciar el servicio o recargar la configuración de las zonas, para que se apliquen los cambios. Dos opciones:

  • Reinicio de servicio: /etc/init.d/bind9 restart
  • Recarga de una nueva zona: rndc reload midominio.es

Comprobar la configuración de una zona

La herramienta named-checkzone nos permite comprobar si hay errores de sintaxis con las zonas:

Fichero de resolución directa:

named-checkzone micasa.local /etc/bind/db.micasa

Fichero de resolución inversa:

named-checkzone micasa.local /etc/bind/db.192.168.1

Herramientas de Comprobación

ping

Aunque no es su función principal, ping se puede usar como prueba rudimentaria para la resolución de nombres. En ese caso, se limitará a comprobar la respuesta de los servidores por defecto, que se informan en /etc/resolv.conf.

Cuando se utiliza ping para comprobar la resolución de nombres, es la traducción de la dirección lo que importa, no la respuesta ICMP de la máquina remota:

donald:/etc/bind# ping donald.formacion.es
PING donald.formacion.es (192.168.1.1) 56(84) bytes
64 bytes from donald.formacion.es (192.168.1.1): icmp
64 bytes from donald.formacion.es (192.168.1.1): icmp
64 bytes from donald.formacion.es (192.168.1.1): icmp

nslookup

  • Suele utilizarse en modo interactivo.
  • Los servidores consultados por defecto son los especificados en el fichero /etc/resolv.conf.
  • Por defecto, se realizan consultas tipo A
nslookup

En la sesión interactiva le preguntamos por un dominio:

> google.com
Server:         172.21.40.178
Address:        172.21.40.178#53

Non-authoritative answer:
Name:   google.com
Address: 142.250.184.174
Name:   google.com
Address: 2a00:1450:4003:80c::200e

Si queremos especificarle a nslookup dónde debe realizar las consultas, durante la sesión interactiva lo indicamos con server:

> server 192.168.1.135
Default server: 192.168.1.145
Address: 192.168.1.135#53

Ahora podemos preguntarle de nuevo:

> debian10.micasa.local
Server:         192.168.1.135
Address:        192.168.1.135#53

Name:   debian10.micasa.local
Address: 192.168.1.135

nslookup se puede usar para todo tipo de registros comunes (en este caso MX):

donald:/etc/bind# nslookup
> set type=MX
> marte.org
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
marte.org mail exchanger = mail.marte.org
(...)

dig

Herramienta de consulta y diagnóstico de servidores DNS.

Sintaxis:

dig nombre
  • nombre: El nombre completo (FQDN) del que se quiere obtener la resolución.

Si queremos indicar el servidor DNS al que hacer consultas:

dig @A.B.C.D nombre TIPO
  • nombre: El nombre completo (FQDN) del que se quiere obtener la resolución.
  • @A.B.C.D: La dirección IP del servidor DNS al que se consultará. En caso de omisión, se consultarán los servidores a los que se hace referencia en /etc/resolv.conf.
  • TIPO: Por defecto, dig realiza consultas de tipo A (resolución normal de nombres con direcciones IPv4). Si se usa el parámetro TIPO, permite definir otros tipos de búsqueda con el objetivo de saber, por ejemplo, los servidores de nombres o de correo asociados a una zona.

Ejemplo:

dig @8.8.8.8 facebook.com MX
tempwin@vmi282687:~$ dig @8.8.8.8 facebook.com MX

; <<>> DiG 9.11.5-P4-5.1+deb10u3-Debian <<>> @8.8.8.8 facebook.com MX
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61194
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;facebook.com.                  IN      MX

;; ANSWER SECTION:
facebook.com.           1538    IN      MX      10 smtpin.vvv.facebook.com.

;; Query time: 17 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Apr 12 11:47:32 CEST 2021
;; MSG SIZE  rcvd: 68

Para sacar información de todo tipo de registros: dig dominio ANY

host

Herramienta sencilla para realizar peticiones DNS.

host nombre
host –t TIPO nombre A.B.C.D
  • nombre: Nombre del host a resolver. Se puede tratar de un FQDN o de un nombre simple que se completará con el sufijo de búsqueda si se ha definido en /etc/resolv.conf.
  • A.B.C.D: Indicamos la IP del servidor DNS a consultar. Si este elemento no se informa, serán los servidores en /etc/resolv.conf los que se utilizarán.
  • TIPO: Indicamos el tipo de consulta a realizar
host –t MX facebook.com 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

facebook.com mail is handled by 10 smtpin.vvv.facebook.com.
informatica/certificaciones/lpic/lpic-2/207_domain_name_server/207.2.txt · Última modificación: por tempwin