Resolución de Nombres
C@mpus - @cademia Linux

Introducción 

LXE ofrece servicio de resolución de nombres utilizando LDAP como respaldo de su información. Con esto se pueden afectar zonas sin tener que reiniciar el servidor.

Además de esto, las demás caractersticas de la consola permiten mantener un pista de quién es el usuario en sesión en la maquina que este dada de alta en la tabla de resolución.


Paquetes necesarios

  • BIND >= 9.3.1

Configuración

Una vez instalado el servidor de DNS podremos pasar a la parte de la configuración que prácticamente es jugar con los archivos de configuración, especialmente con /etc/named.conf.

/etc/named.conf
key mykey {
    algorithm hmac-md5;
    secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};

controls {
    inet 127.0.0.1 port 953
    allow { 127.0.0.1; } keys { mykey; };
};

acl localnetwork {
   172.16.30.0/24;
   127.0.0.1;
   10.160.0.0/16;
   10.161.0.0/16;
};

// Access lists (ACL's) should be defined here
include "/etc/bogon_acl.conf";

options {
    version "";
    directory "/var/named";
    dump-file "/var/tmp/named_dump.db";
    pid-file "/var/run/named/named.pid";
    statistics-file "/var/tmp/named.stats";
    zone-statistics yes;
    coresize 100M;
//    fetch-glue no;
//    recursion no;
    auth-nxdomain yes;
    query-source address * port *;
    listen-on port 53 { any; };
    cleaning-interval 120;
    transfers-in 20;
    transfers-per-ns 2;
    lame-ttl 0;
    max-ncache-ttl 10800;

   allow-transfer { any; };

// Prevent DoS attacks by generating bogus zone transfer
// requests.  This will result in slower updates to the
// slave servers (e.g. they will await the poll interval
// before checking for updates).
    notify no;

// Generate more efficient zone transfers.  This will place
// multiple DNS records in a DNS message, instead of one per
// DNS message.
    transfer-format many-answers;

// Set the maximum zone transfer time to something more
// reasonable.  In this case, we state that any zone transfer
// that takes longer than 60 minutes is unlikely to ever
// complete.  WARNING:  If you have very large zone files,
// adjust this to fit your requirements.
    max-transfer-time-in 60;

// We have no dynamic interfaces, so BIND shouldn't need to
// poll for interface state {UP|DOWN}.
    interface-interval 0;

// Uncoment these to enable IPv6 connections support
// IPv4 will still work
//      listen-on { none; };
//      listen-on-v6 { any; };


// Deny anything from the bogon networks as
// detailed in the "bogon" ACL.

    blackhole { bogon; };

//    root-delegation-only exclude { "de"; "lv"; "museum"; };

};

// define logging channels
include "/etc/logging.conf";

zone "." {
        type hint;
        file "named.ca";
};


// workaround stupid stuff... (OE: Wed 17 Sep 2003)
zone "ac" { type delegation-only; };
zone "cc" { type delegation-only; };
zone "com" { type delegation-only; };
zone "cx" { type delegation-only; };
zone "museum" { type delegation-only; };
zone "net" { type delegation-only; };
zone "nu" { type delegation-only; };
zone "ph" { type delegation-only; };
zone "sh" { type delegation-only; };
zone "tm" { type delegation-only; };
zone "ws" { type delegation-only; };

zone "linuxchange.com" {
        type master;
        database "ldap ldap://127.0.0.1/dc=linuxchange,dc=com,
                   ou=DNS,dc=linuxchange,dc=com????
                   !bindname=cn=root%2cdc=linuxchange%2cdc=com,
                   !x-bindpw=secret 60";
        allow-update   { localnetwork; };
        allow-query    { localnetwork; };
        allow-transfer { localnetwork; };
};

zone "30.16.172.in-addr.arpa" {
        type master;
        database "ldap ldap://127.0.0.1/dc=30,dc=16,dc=172,
                   dc=in-addr,dc=arpa,ou=DNS,dc=linuxchange,dc=com????
                   !bindname=cn=root%2cdc=linuxchange%2cdc=com,
                   !x-bindpw=secret 60";
        allow-update   { localnetwork; };
        allow-query    { localnetwork; };
        allow-transfer { localnetwork; };
};

Como regla general toda lnea termina con un ; independientemente que sea una llave.

La definición de una zona se indica con la palabra reservada zone seguida del nombre de la zona, que es el dominio como se muestra en el ejemplo. Dentro de las llaves deber indicar el tipo de base de datos que BIND leera. En este caso se especifica ldap seguido del url completo de la base donde se encuentran los datos del DNS y por último un número que ser el valor por defecto del valor TTL en caso que el objeto alcanzado caresca de valor en la propiedad dnsTTL.

Dentro de esta sección se puede especificar al igual que las vistas, quines pueden transferir los DNS. Esto es posible con la opción allow-transfer mandándole los parámetros en notación CIDR. En algunos casos tal vez sea necesario fraccionar el archivo por el tamaño que representa. Aunque esta no es una propiedad que debe ser propia de LXE, BIND soporta la directiva include seguida de la ruta al archivo a incluir.


Configuración del Directorio

La configuración del árbol LDAP está documentada en el documento Configuración del Directorio .
El aspecto de un LDIF para la ou de la vista ser el siguiente:

Para los DC's:

dn: dc=com,ou=DNS,dc=linuxchange,dc=com
dc: com
objectClass: top
objectClass: domain

Simplificando, se tendrá que añadir un archivo con el contenido siguiente para la zona linuxchange.com:

dns.ldif
dn: ou=DNS,dc=linuxchange,dc=com
ou: DNS
objectClass: top
objectClass: organizationalUnit
objectClass: domainRelatedObject
associatedDomain: linuxchange.com

dn: dc=com,ou=DNS,dc=linuxchange,dc=com
dc: com
objectClass: top
objectClass: domain

dn: dc=linuxchange,dc=com,ou=DNS,dc=linuxchange,dc=com
dc: linuxchange
objectClass: top
objectClass: domain

Para añadir el archivo nombrado dns.ldif se deberá ejecutar el comando ldapadd -x -c -D "cn=root,dc=linuxchange,dc=com" -W -f dns.ldif

Dentro de la ruta completa de este ejemplo dc=linuxchange,dc=com,ou=DNS,dc=linuxchange,dc=com debe exitir uan entrada relativeDomainName=@ que contiene entre otra información el registro SOA de la zona.

El aspecto general de un registro SOA puede ser el siguiente LDIF para @ de zonas dn:

dns-soa.ldif
dn: relativeDomainName=@,dc=linuxchange,dc=com,ou=DNS,dc=linuxchange,dc=com
dNSClass: IN
objectClass: top
objectClass: dNSZone
relativeDomainName: @
nSRecord: tao.linuxchange.com.
nSRecord: ns2.linuxchange.com.
zoneName: linuxchange.com
mXRecord: 10 tao.linuxchange.com.
mXRecord: 50 mail2.linuxchange.com.
dNSTTL: 3600
sOARecord: tao.linuxchange.com. root.linuxchange.com. 1050445933 10800 3600 604800 38400

De igual forma, el archivo dns-soa.ldif se añade con el comando ldapadd -x -c -D "cn=root,dc=linuxchange,dc=com" -W -f dns-soa.ldif

Las sintaxis con la que se debe de llenar los campos mXRecord, aARecord, CNameRecord, soARecord, nSRecord y demás no cambia del BIND normal (sin LDAP).