Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

Configuración básica Bind


Como muchos sabréis la resolución DNS se lleva a cabo mediante el protocolo DNS, este se encarga de responder con una dirección IP cuando se pregunta por un nombre o responder con un nombre cuando se pregunta por un dominio, este último tipo de resolución se le llama resolución inversa.

Los dominios DNS se organizan de forma jerárquica, esto quiere decir que si queremos resolver el dominio www.alfaexploit.com los pasos de la resolución serán:

  • Al servidor root se pregunta que servidor se encarga de los dominios .com
  • Al servidor encargado de los .com se le pregunta por el servidor encargado del dominio alfaexploit
  • Al servidor encargado de alfaexploit se le pregunta por www
  • Finalmente responde con la dirección IP

 

Este proceso se puede realizar de dos modos distintos:

Modo iterativo:  Modo recursivo:

En el modo iterativo es el cliente el que va contactando con los servidores de la jerarquía hasta obtener la resolución final y en modo recursivo el cliente únicamente contacta con su servidor DNS y es este el que se encarga de recorrer el arbol hasta obtener la dirección IP.

 

La configuración típida de un servidor DNS es Master-Slave, las zonas se editan en el master y automáticamente se propagan al Slave, en el servidor de nivel superior que sabe que servidores son los encargados del dominio se indicarán los dos servidores(Master-Slave) de este modo si falla el master se consultará al slave.

 

Ahora que ya ha quedado claro el funcionamiento del protocolo DNS podemos proceder a la instalación del servidor, Bind es un conocido servidor DNS en sistema Unix, en este artículo voy a explicar como instalarlo y como realizar una configuración básica de este.

emerge -av net-dns/bind


El fichero de configuración principal es /etc/bind/named.conf este viene con la siguiente configuración por defecto:

Definimos algunas ACLs que luego utilizaremos en la config

acl "xfer" {
        /* Deny transfers by default except for the listed hosts.
         * If we have other name servers, place them here.
         */
        none;
};

acl "trusted" {
        127.0.0.0/8;
        ::1/128;
};

acl "red_lan" {
        A.B.C.D/24;
};

 

Configuramos las opciones

options {
        directory "/var/bind";
        pid-file "/var/run/named/named.pid";

        listen-on-v6 { ::1; };
        listen-on { A.B.C.D; };                                        --> Dirección IP a la que bindear Bind

        allow-query {                                                      --> Definimos quien podrá realizar queries en el server

                red_lan;
        };

        allow-query-cache {                                           --> Definimos a quien se le servirán datos cacheados en caso de existir

                red_lan;
        };

        allow-recursion {                                                --> Definimos quien podrá realizar queries recursivas

                red_lan;
        };

        allow-transfer {                                                  --> Definimos quien podrá realizar peticiones de transferencia de zona

                none;
        };

        allow-update {                                                   --> Definimos quien podrá actualizar las zonas

                none;
        };

        forward first;                                                     --> Cuando una query es de un dominio que no está configurado en alguna zona local el servidor enviará la petición a los servidores indicados, si estos no son capaces de llevar a cabo la resolución será nuestro servidor el que recorrerá la  jerarquía anteriormente descrita
        forwarders {

                8.8.8.8;                // Google Open DNS
                8.8.4.4;                // Google Open DNS
        };

};

 

Parámetros de logging:

logging {
        channel default_log {
                file "/var/log/named/named.log" versions 5 size 50M;
                print-time yes;
                print-severity yes;
                print-category yes;
        };

        category default { default_log; };
        category general { default_log; };
};

 

Hay una utilidad llamada rndc para gestionar la config del servidor, esta se conecta al servidor por el puerto 953 y se autentica, si la autenticación es correcta se permite la ejecución de comandos

include "/etc/bind/rndc.key";
controls {
        inet 127.0.0.1 port 953 allow { 127.0.0.1/32; ::1/128; } keys { "rndc-key"; };   --> Definimos quien podrá conectar por rndc y con que keys
};

zone "." in {                                                    --> Zona con la que encontrar a los root servers
        type hint;
        file "/var/bind/named.cache";
};

zone "localhost" IN {                                     --> Zona para que cuando se haga una query a localhost resuelva a 127.0.0.1
        type master;
        file "pri/localhost.zone";
        notify no;
};

zone "127.in-addr.arpa" IN {                        --> Zona para que la resolución inversa de 127.0.0.1 resuelva a localhost
        type master;
        file "pri/127.zone";
        notify no;
};

 

Los campos de las zonas son:

El primer campo de una zona es el TTL, cuando servidores intermedios preguntan a nuestro servidor la respuesta queda cacheada en estos servidores intermedios el tiempo indicado aquí:

$TTL 86400
$TTL 1440m
$TTL 24h
$TTL 1d

 

El Start Of Authority es el servidor final encargado de la zona, en este se tiene la info que cuenta, no hay cachés ya que es la info real sin servidores intermedios.
Se compone de 7 campos:

  • MNAME: El servidor maestro de esta zona --> ns1.AAAA.com
  • RNAME: Dirección de mail del responsable del dominio --> [email protected]
  • Serial number: Debe incrementarse en cada cambio, en caso contrario Bind no recarga la zona porque considera que no hay cambios y los slaves no actualizarán la zona.
  • Refresh secondary: Tiempo en que los slaves chequean y actualizan su db.
  • Retry: Tiempo que espera en reintentar una consulta el slave si el master no responde.
  • Expire: Tiempo que el slave considerará su info válida si el master no responde, cuando caduque el dominio no resolverá.
  • Negativa caching: Tiempo que los servidores intermedios deben cachear la inexistencia de una entrada.

 

Un ejemplo puede ser:

$TTL 1d
AAAA.com. IN SOA ns1.AAAA.com admin (
2004010402
1h
15m
4w
1h )

                NS      ns1.AAAA.com.
                NS      ns2.AAAA.com.
                
                MX 10    mail.AAAA.com.
                A    A.B.C.D

www                   A   E.F.G.H

 

Ahora que ya tenemos la configuración por default podemos pasar a configurar nuestra propia zona.

vi /etc/bind/named.conf
zone "prueba.com" IN {
        type master;
        file "/etc/bind/prueba.com.zone";
        notify no;
};

 

vi /etc/bind/prueba.com.zone
$TTL 1d
prueba.com. IN SOA ns1.prueba.com admin (
2004010402
1h
15m
4w
1h )

                NS      ns1.prueba.com.
                NS      ns2.prueba.com.

                MX 10   mail.prueba.com.
                A       1.1.1.1
www             A       2.2.2.2
ns1             A       IP_SERVIDOR_DNS
ns2             A       IP_SERVIDOR_DNS

 

Comprobamos que funciona:

dig @ IP_SERVIDOR_DNS prueba.com
prueba.com.        86400    IN    A    1.1.1.1

 

dig @ IP_SERVIDOR_DNS www.prueba.com
www.prueba.com.        86400    IN    A    2.2.2.2

 

Las entradas mas utilizadas en zonas DNS son:

  • A --> Resolución normal
  • PTR --> Resolución inversa
  • CNAME --> Alias(Canonical Name)
  • TXT --> Informativo, DKIM, SPF...
  • SRV --> Balanceo de carga

 

Bueno esto es todo, espero que haya quedado claro, como configuración base lo veo bien y si tenéis alguna duda enviadme un e-mail, nos vemos en el próximo artículo ;)


Autor: Kr0m -- 04/02/2014 13:02:52