Product SiteDocumentation Site

10.7. Servidores de nombres de dominio (DNS)

El servicio de nombres de dominio (DNS: «Domain Name Service») es un componente fundamental de Internet: asocia nombres de equipo con direcciones IP (y viceversa), lo que permite utilizar www.debian.org en lugar de 130.89.148.77 o 2001:67c:2564:a119::77.
Los registros DNS se organizan en zonas; cada zona coincide con un dominio (o subdominio) o un rango de direcciones IP (ya que generalmente se proveen direcciones IP en rangos consecutivos). Un servidor primario es autoridad sobre los contenidos de una zona; los servidores secundarios, generalmente en otras máquinas, proveen copias de la zona primaria actualizadas regularmente.
Cada zona puede contener registros de varios tipos (registros de recursos: «Resource Records»), estos son algunos de los más comunes:

10.7.1. Software DNS

El servidor de nombres de referencia, Bind, lo desarrolló y es mantiene el ISC (Consorcio de Software de Internet: «Internet Software Consortium»). Está disponible en Debian en el paquete bind9. La versión 9 provee dos cambios importantes comparados con versiones anteriores. Primero, el servidor DNS ahora se puede ejecutar como un usuario sin privilegios para que una vulnerabilidad de seguridad en el servidor no provea permisos de root al atacante (como pasaba frecuentemente con las versiones 8.X).
Lo que es más, Bind es compatible con el estándar DNSSEC para firmar (y, por lo tanto, autenticar) registros DNS, lo que permite bloquear datos apócrifos durante ataques con intermediarios («man-in-the-middle»).

10.7.2. Configurando bind

Archivos de configuración de bind, sin importar su versión, tienen la misma estructura.
Los administradores de Falcot crearon una zona primaria falcot.com para almacenar información relacionada con este dominio y una zona 168.192.in-addr.arpa para la asociación inversa de direcciones IP en las redes locales.
Los siguientes extractos de configuración, de los archivos de Falcot, pueden servirle como punto de partida para configurar un servidor DNS:

Ejemplo 10.12. Extracto de /etc/bind/named.conf.local

zone "falcot.com" {
        type master;
        file "/etc/bind/db.falcot.com";
        allow-query { any; };
        allow-transfer {
                195.20.105.149/32 ; // ns0.xname.org
                193.23.158.13/32 ; // ns1.xname.org
        };
};

zone "internal.falcot.com" {
        type master;
        file "/etc/bind/db.internal.falcot.com";
        allow-query { 192.168.0.0/16; };
};

zone "168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192.168";
        allow-query { 192.168.0.0/16; };
};

Ejemplo 10.13. Extracto de /etc/bind/db.falcot.com

; Zona falcot.com 
; admin.falcot.com. => contacto de la zona: admin@falcot.com
$TTL    604800
@       IN      SOA     falcot.com. admin.falcot.com. (
                        20040121        ; Serial
                         604800         ; Refresco
                          86400         ; Reintento
                        2419200         ; Expiración
                         604800 )       ; TTL de caché negativo
;
; El @ hace referencia al nombre de la zona («falcot.com» aquí)
; o a $ORIGIN (origen) si se utilizó esta directiva
;
@       IN      NS      ns
@       IN      NS      ns0.xname.org.

internal IN      NS      192.168.0.2

@       IN      A       212.94.201.10
@       IN      MX      5 mail
@       IN      MX      10 mail2

ns      IN      A       212.94.201.10
mail    IN      A       212.94.201.10
mail2   IN      A       212.94.201.11
www     IN      A       212.94.201.11

dns     IN      CNAME   ns

Ejemplo 10.14. Extracto de /etc/bind/db.192.168

; Zona inversa para 192.168.0.0/16
; admin.falcot.com. => contacto de la zona: admin@falcot.com
$TTL    604800
@       IN      SOA     ns.internal.falcot.com. admin.falcot.com. (
                        20040121        ; Serial
                         604800         ; Refresco
                          86400         ; Reintento
                        2419200         ; Expiración
                         604800 )       ; TTL de caché negativo

        IN      NS      ns.internal.falcot.com.

; 192.168.0.1 -> arrakis
1.0     IN      PTR     arrakis.internal.falcot.com.
; 192.168.0.2 -> neptune
2.0     IN      PTR     neptune.internal.falcot.com.

; 192.168.3.1 -> pau
1.3     IN      PTR     pau.internal.falcot.com.