Inicio arrow Solo Linux arrow Cómo configurar BIND
21 de noviembre de 2008
 
 
Cómo configurar BIND PDF Imprimir E-mail
Valoración del Usuario: / 14
PobreMejor 

BIND es el servidor de nombres de dominio más popular en Internet, que trabaja en todas las plataformas informáticas principales y se caracteriza por su flexibilidad y seguridad. A continuación se puede encontrar tanto la teoría general de los servicios de DNS, como una explicación detallada de los campos y opciones de la configuración de BIND, ejemplos, opciones de seguridad, herramientas de verificación, ligas de información adicional y otras más.

 

Licencia

Por Hugo Madrid Luna (Crowley)
crowley@mexicoextremo.com.mx
http://www.mexicoextremo.com.mx
URL: http://www.mexicoextremo.com.mx/content/view/423/62/
Se otorga el permiso para copiar, distribuir y modificar este documento bajo los términos de la Licencia de Documentación Libre del GNU (http://www.gnu.org/copyleft/fdl.html), versión 1.2 o cualquier otra posterior publicada por la Free Software Foundation;
este documento no consta de secciones invariantes ni con portadas o contraportadas.

 

Preliminares.

Para un mejor entendimiento de este tema, se recomienda conocer la teoría general del funcionamiento de Internet, además de nociones de administración de redes.

Los sistemas operativos para las pruebas de este manual fueron Fedora Core 2 con kernel 2.6.8 y Solaris 9; la versión de BIND fue la 9.2.3 en Linux y la 8.4.2 en Sun.

Introducción.

Domain Name Service (DNS) es el servicio que resuelve los nombres de dominio asociados a una dirección IP para direccionar las peticiones a un servidor en específico. Se utiliza cuando un nodo (o host) en Internet contacta a otro mediante el nombre de domino de la máquina y no por su dirección IP.

A través de este documento se verán las generalidades del servicio de resolución de nombres, la configuración y mantenimiento de un servicio de nombres con BIND, bajo la plataforma Linux, aunque la mayoría de estos conceptos se pueden aplicar a la cualquier servicio de DNS sobre otras plataformas.

Regularmente, todos los equipos que están en Internet o una Intranet tienen una dirección IP única que las identifica, generalmente dividido en cuatro segmentos u 'octetos', cuya representación es, por ejemplo, '172.29.183.217', pero el recordar todas las direcciones en este formato sería sumamente difícil, por lo que utilizamos los nombres de dominio para referenciarlos.

Existen varios productos que realizan esta función y en todas las plataformas, pero el más usado es BIND (Berkeley Internet Name Domain), que puede ser descargado libremente desde http://www.isc.org/index.pl?/sw/bind/, es distribuido bajo la GNU GPL y que al momento de escribir este documento, se encuentra en la versión 9.3.

Teoría sobre servidores de nombres de dominio.

Funciones de un servidor de dominio.

Estas varían de acuerdo a los nombres se que buscan resolver:

Soporte al dominio de Internet. Atiende las peticiones dirigidas a los servicios que se prestan desde adentro de la organización, como WEB, FTP y correo, hacia Internet. Se requiere que se identifiquen estos servidores como autoridades DNS por parte de NIC. Se recomienda tener dos de estos, lo más independiente posible el uno del otropor razones de seguridad.

Resolución local de nombres: Resuelve las peticiones de adentro de la LAN, eliminando la necesidad de conocer y actualizar programas y peticiones si se cambian las direcciones IP de los servidores. Aunque es posible, se recomienda mantener separado este servicio del anterior, por razones de seguridad.

Resolución de nombres por Internet. Es su forma más básica, que generalmente sólo tranfiere las peticiones a NIC en caso que el DNS principal no funcione.

No es necesario que se tengan las tres variaciones al mismo tiempo, sino que depende de las necesidades de la organización.

Estructura básica del DNS.

Esta es similar a un arbol, donde se tiene una raíz o root, los Dominios de Nivel Principal (Top Level Domains) y los dominios de segundo nivel, como se aprecia a continuación.

 

Estructura de los dominios

Básicamente, el servidor DNS que tenemos configurado busca dentro de su lista de nodos por el que preguntamos, en caso de desconocerlo refiere la petición a NIC, que a su vez la transfiere al servidor que resuelva los nombres del dominio solicitado.

Zonas.

Los nombres de dominio completamente calificados o FQDN (fully qualified domain name) se componen por lo general del nombre del host, un nombre de dominio secundario y un nombre de dominio primario o de nivel máximo (top-level domain), que son secciones organizadas jerárquicamente.

Por ejemplo: 'www.ejemplo.com'. Leyéndolo de derecha a izquierda tenemos un dominio primario ('COM'), un dominio secundario ('EJEMPLO') y el nombre del host ('WWW'). Algunos dominios primarios son:

  • org - Organizaciones no lucrativas.
  • com - Organizaciones lucrativas.
  • net - Organizaciones en Internet.
  • gob - Agencias gubernamentales en latinoamérica.
  • mx - Sufijo de México.
  • es - Sufijo de España.
                                                 
                     
                       
                                   
                           

           
               

Con excepción del nombre del host, cada sección es una 'zona', que controla los subdominios a su izquierda. Las zonas son archivos de texto que se alojan en los servidores de dominio primarios o maestros y que replican a los secundarios o esclavos, mismos que explicaremos más adelante.

Es importante diferenciar una 'zona' de un 'dominio'. La zona es un punto de delegación dentro del arbol del dominio (por ejemplo 'ejemplo.com.mx'), mientras que un dominio en si es el nombre dentro de la zona (por ejemplo, '.com'). Este tema es un poco confuso, ya que en realidad los servidores de resolución de nombres en realidad manejan zonas, no dominios.

Tipos de servidores.

Existen cuatro tipos diferentes de servidores de resolución de nombres:

  • Master (maestro o primario). Aloja los registros autoritarios de una zona, responde las peticiones de resolución de nombres como servidor de autoridad y delega copias a los servidores esclavo.
  • Slave (esclavo o secundario). Responde a las peticiones de resolución de nombres como servidor de autoridad, pero la información es distribuida por los servidores primarios. Se considera que como medida de seguridad, se requiere al menos uno de estos, preferentemente independiente de la infraestructura del primario (red, energia eléctrica y ubicación geográfica).
  • Caching-only (sólo de cache). Responde a las peticiones de resolución de nombres pero no es servidor de autoridad, las respuestas las guarda en memoria por un período determinado.
  • Forwarding (de reenvío). Reenvia las peticiones a una lista de servidores de nombres.

Tipos de registros.

Para ofrecer suficiente flexibilidad en la configuración, se pueden declarar diversos tipos de registros, que hacen referencia a la función del host. A continuación veremos los más importantes.

A (Address). Es el registro más usado, que define una dirección IP y el nombre asignado al host. Generalmente existen varios en un dominio.

MX (Mail eXchanger). Se usa para identificar servidores de correo, se pueden definir dos o más servidores de correo para un dominio, siendo que el orden implica su prioridad. Debe haber al menos uno para un dominio.

CNAME (Canonical Name). Es un alias que se asigna a un host que tiene una dirección IP valida y que responde a diversos nombres. Pueden declararse varios para un host.

NS (Name Server). Define los servidores de nombre principales de un dominio. Debe haber al menos uno y pueden declararse varios para un dominio.

SOA (Start Of Authority). Este es el primer registro de la zona y sólo puede haber uno en cada archivo de la zona y sólo está presente si el servidor es autoritario del dominio. Especifica el servidor DNS primario del dominio, la cuenta de correo del administrador y tiempo de refresco de los servidores secundarios.

Instalación y configuración de BIND.

Instalación.

Se puede efectuar de diversas formas, dependiendo de nuestro sistema operativo y preferencias.

Código fuente.

  1. Descarga el TARBALL desde el sitio oficial: http://www.isc.org/index.pl?/sw/bind/
  2. Descompacta el archivo y sigue las instrucciones de instalación, ya que varían según el sistema operativo.

RPM.

  1. En los discos de instalación de la distribución o en RPM Find (http://www.rpmfind.net) localiza los archivos de BIND (bind, bind-utils y bind-libs).
  2. Descárgalos y ejecuta rpm -Uvh bind-*.rpm

Administradores de instalaciones.

  1. APT: apt-get install bind
  2. YUM: yum install bind

Estructura del archivo de configuración.

A partir de la versión 8 de BIND, esta es la estructura principal de named.conf, con muy pequeñas modificaciones en la serie 9.

# Comentarios sobre este servidor



# Es recomendable indicar el nombre y dominio







options {



directory "/var/named";



allow-query {



any;



};



};







# Cache de NIC para inicializar los servicios



zone "." {



type hint;



file "named.ca";



};







# Zona de resolución inversa



zone "127.in-addr.arpa" {



type master;



file "named.inversa";



};







# Zona local, resolución para la interface lo



zone "local" {



type master;



file "named.local";



allow-update { none; };



}







# Zona para el dominio principal



zone "ejemplo.com" {



type master;



file "named.dominio";



};







# Zona para una red local



zone "red.10" {



type master;



file "named.red.10";



};







# Zona inversa para un segmento de red



zone "192.25.13.in-addr.arpa0" {



type master;



file "named.red.192";



};



Esta estructura de zonas son muy similares entre si, cambiando de acuerdo a las zonas que queremos resolver.

Algunas otras opciones que se pueden declarar son:

pid-file "named.pid";

notify yes; # Necesario para notificar a los esclavos

allow-query { "any; none; 10.24.23.0/24;" }; # Por defecto, se usa 'any'

query-source address * port 53; # Necesario cuando un firewall

# bloqueé otros puertos

forwarders { 123.12.40.17; }; # Reenvia las peticiones no

# resueltas a otro servidor

Estructura de los archivos de zona.

La primera entrada siempre es el SOA (start of authority), que indica la fuente de información para una zona, tiempos de refresco y otros, como vemos a continuación:

; SOA Start of Authority



;------------------------------



;



ejemplo.com. IN SOA dns.ejemplo.com. master.correo.ejemplo.com. (



2005072700 ; Serial



10800 ; Refresco de 3 horas



3600 ; Reintentos despues de 1 hora



604800 ; Expira después de 1 semana



86400 ) ; TTL mínimo de un día



En este ejemplo vemos primeramente el dominio a resolver, 'ejemplo.com.', se declara como DNS autoritario a 'dns.ejemplo.com.' y el segundo es la cuenta de correo del administrador, 'master.correo.ejemplo.com.' (sustituyéndo el primer punto por arroba, lo que dejaría 'master@correo.ejemplo.com'). Debemos notar que al final de cada dominio viene un punto, que identifica la raíz de este. El resto de los parámetros son:

  • Serial: es un identificador del archivo, puede tener un valor arbitrario pero se recomienda que tenga la fecha con una estructura AAAA-MM-DD y un consecutivo.
  • Refresco: número de segundos que un servidor de nombres secundario debe esperar para comprobar de nuevo los valores de un registro.
  • Reintentos: número de segundos que un servidor de nombres secundario debe esperar después de un intento fallido de recuperación de datos del servidor primario.
  • Expiración: número de segundos máximo que los servidores de nombre secundarios retendrán los valores antes de expirarlos.
  • TTL mínimo: Significa Time To Live y es el número de segundos que los registros se mantienen activos en los servidores NS caché antes de volver a preguntar su valor real.

Una acepción más es el uso del arroba (@) como dominio a resolver, que referencía el nombre de la zona en named.conf, quedando de la siguiente manera.

; SOA Start of Authority


;------------------------------

;

@ IN SOA dns.ejemplo.com. master.correo.ejemplo.com. (

2005072700 ; Serial

10800 ; Refresco de 3 horas

3600 ; Reintentos despues de 1 hora

604800 ; Expira después de 1 semana

86400 ) ; TTL mínimo de un día


Otros componentes de los archivos de la zona autoritarios, que se explican por si mismos, son:

; NS Name Servers

;------------------------------

;

IN NS dns.ejemplo.com.

dns IN A 214.25.82.3


; MX Mail Exchangers

;-------------------------

;

@ IN MX 0 correo.ejemplo.com.

sede IN MX 0 correo.ejemplo.com. ; subdominio de correo virtual

matriz IN MX 0 matriz.ejemplo.com. ; servidor de correo alterno


; NAP Name-to-Address Mapping

;--------------------------

;

localhost A 127.0.0.1 ; No es obligatorio, pero se recomienda

www IN A 192.25.13.8

apps IN A 192.25.13.5

oracle IN A 192.25.13.6

correo IN A 192.25.13.7

portal IN CNAME www ; Este es un alias del host 'www'

Un caso más, que se aplica para el loopback, es el registro PTR (Domain Name Pointer), que indica a que dirección IP corresponde un nombre.

; A Address-to Name Mapping

;----------------------------

;

1 IN PTR localhost. ; Reverse lookup del equipo en 'named.inversa'

8 PTR www.ejemplo.com. ; Reverse lookup en 'named.red.192'

5 PTR apps.ejemplo.com. ; Reverse lookup en 'named.red.192'

6 PTR oracle.ejemplo.com. ; Reverse lookup en 'named.red.192'

Ejemplos de archivos de zona.

En base a las zonas mencionadas en el named.conf que vimos previamente y la estructura descrita, declaramos los siguientes archivos:

Zona del localhost.

# Nombre del archivo: named.local

# Reenvia las llamadas del DNS a la interfase lo

# No requiere modificarse en los servidores DNS

@ IN SOA localhost. root.localhost. (

2005072700 ; Serial

10800 ; Refresco de 3 horas

3600 ; Reintentos despues de 1 hora

604800 ; Expira después de 1 semana

86400 ) ; TTL mínimo de un día

IN NS localhost.

1 IN PTR localhost.

Zona del dominio externo (servidor principal o autoritario).

# Nombre del archivo: named.dominio



@ IN SOA localhost. root.localhost. (

2005072701 ; Serial

10800 ; Refresco de 3 horas

3600 ; Reintentos despues de 1 hora

604800 ; Expira después de 1 semana

86400 ) ; TTL mínimo de un día

; NS Name Servers

;------------------------------

;

IN NS dns.ejemplo.com.

dns IN A 214.25.82.3 ; DNS externo

; MX Mail Exchangers

;-------------------------

;

@ IN MX 0 correo.ejemplo.com.

sede IN MX 0 correo.ejemplo.com. ; subdominio de correo virtual

matriz IN MX 0 matriz.ejemplo.com. ; servidor de correo alterno

; NAP Name-to-Address Mapping

;--------------------------

;

localhost A 127.0.0.1 ; No es obligatorio, pero se recomienda

www IN A 192.25.13.8

apps IN A 192.25.13.5

oracle IN A 192.25.13.6

correo IN A 192.25.13.7

portal IN CNAME www ; Este es un alias del host 'www'

Zona de resolución inversa del dominio.

# Nombre del archivo: named.red.192

@ IN SOA localhost. root.localhost. (

2005072702 ; Serial

10800 ; Refresco de 3 horas

3600 ; Reintentos despues de 1 hora

604800 ; Expira después de 1 semana

86400 ) ; TTL mínimo de un día

; A Address-to Name Mapping

;----------------------------

;

IN NS dns.ejemplo.com.

8 PTR www.ejemplo.com.

5 PTR apps.ejemplo.com.

6 PTR oracle.ejemplo.com.

7 PTR correo.ejemplo.com.


Zona de cache distribuida por NIC.

# Nombre del archivo: named.ca







; This file holds the information on root name servers needed to



; initialize cache of Internet domain name servers



; (e.g. reference this file in the "cache . "



; configuration file of BIND domain name servers).



;



; This file is made available by InterNIC registration services



; under anonymous FTP as



; file /domain/named.root



; on server FTP.RS.INTERNIC.NET



; -OR- under Gopher at RS.INTERNIC.NET



; under menu InterNIC Registration Services (NSI)



; submenu InterNIC Registration Archives



; file named.root



;



; last update: Feb 28, 1997



; related version of root zone: 1997022800



;



;



; formerly NS.INTERNIC.NET



;



. 3600000 IN NS A.ROOT-SERVERS.NET.



A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4



;



; formerly NS1.ISI.EDU



;



. 3600000 NS B.ROOT-SERVERS.NET.



B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107



;



; formerly C.PSI.NET



;



. 3600000 NS C.ROOT-SERVERS.NET.



C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12



;



; formerly TERP.UMD.EDU



;



. 3600000 NS D.ROOT-SERVERS.NET.



D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90



;



; formerly NS.NASA.GOV



;



. 3600000 NS E.ROOT-SERVERS.NET.



E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10



;



; formerly NS.ISC.ORG



;



. 3600000 NS F.ROOT-SERVERS.NET.



F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241



;



; formerly NS.NIC.DDN.MIL



;



. 3600000 NS G.ROOT-SERVERS.NET.



G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4



;



; formerly AOS.ARL.ARMY.MIL



;



. 3600000 NS H.ROOT-SERVERS.NET.



H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53



;



; formerly NIC.NORDU.NET



;



. 3600000 NS I.ROOT-SERVERS.NET.



I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17



;



; temporarily housed at NSI (InterNIC)



;



. 3600000 NS J.ROOT-SERVERS.NET.



J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10



;



; temporarily housed at NSI (InterNIC)



;



. 3600000 NS K.ROOT-SERVERS.NET.



K.ROOT-SERVERS.NET. 3600000 A 198.41.0.11



;



; temporarily housed at ISI (IANA)



;



. 3600000 NS L.ROOT-SERVERS.NET.



L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12



;



; temporarily housed at ISI (IANA)



;



. 3600000 NS M.ROOT-SERVERS.NET.



M.ROOT-SERVERS.NET. 3600000 A 198.32.65.12



; End of File







En base a estos ejemplos, se pueden crear tantas zonas sean necesarias, vigilando en todo momento que las direcciones IP estén correctas.

Creación de servidores esclavo.

Se deben seguir los siguientes pasos para que las zonas del escalvo se sincronicen con el principal.

  1. Instalar BIND de forma normal.
  2. Copiar los archivos named.conf, named.local y named.ca del servidor principal al esclavo.
  3. En el archivo named.conf del servidor esclavo, cambiar las líneas que dicen 'type master' y escribir 'type slave' y declaramos la dirección IP del servidor principal, como mostramos en este ejemplo.
  4. # Zona de resolución inversa



    zone "127.in-addr.arpa" {



    type slave;



    file "named.inversa";



    masters { 192.168.196.2; } ; esta es la IP del DNS principal



    };











    # Zona para el dominio principal



    zone "ejemplo.com" {



    type slave;



    file "named.dominio";



    masters { 192.168.196.2; } ; esta es la IP del DNS principal



    }



  5. Modificamos el named.conf del servidor principal de la siguiente forma:
  6. # Comentarios sobre este servidor



    # Es recomendable indicar el nombre y dominio







    options {



    directory "/var/named";



    allow-transfer {



    10.25.13.12; # IP del DNS esclavo



    };




    notify yes;



    allow-query {



    any;



    };



    };



  7. Declaramos en los archivos de zona los dos servidores de nombre.
  8.  IN NS dns.ejemplo.com. ; DNS principal



    IN NS dnssec.ejemplo.com. ; DNS esclavo







    dns IN A 214.25.82.3 ; DNS principal



    dns2 IN A 214.25.82.15 ; DNS esclavo



En cuanto se inicie el servicio, deberá comenzar la sincronización de los servidores.

En caso de que los mensajes de sistema indiquen que se niega el permiso para escribir en las zonas al momento de sincronizar un esclavo con el principal, se deben de cambiar los permisos de la siguiente manera:

chmod 2775 /var/named/*

Administración del servicio

Arranque del servicio.

/etc/init.d/named start



- o -



service named start



Alto del sistema.

/etc/init.d/named stop



- o -



service named stop



Verificación del sistema.

ps -fea |grep named



- o -



service named status



Automatización al arranque del equipo.

chconfig -level 123 named on



Consideraciones al instalar servidores de dominio.

  • Por seguridad, se recomienda que el DNS interno y el externo estén en equipos separados.
  • Para asegurar la resolución del dominio, se deben tener al menos un servidor primario y un esclavo, de ser posible en diferentes ubicaciones.
  • Se requiere la existencia de al menos un registro MX, ya que algunos servicios antispam consideran su inexistencia como característica de dominios falsos.

Configuración de seguridad

Ocultando la versión de BIND.

Editar la sección 'options' de named.conf y adicionar la siguiente línea, luego reiniciar el servicio, de manera que no indique la versión en que trabaja:

options {



directory "/var/named";



allow-query {



any;



};



version "FOO";



};



Restringuiendo las zonas de transferencia.

Esto hace que sólo aquellos servidores esclavos que indiquemos puedan transferir las zonas, como vimos anteriormente.

options {



directory "/var/named";



allow-transfer {



10.25.13.12;



};



notify yes;



allow-query {



any;



};



};



Evitando spoofing.

Esto es útil principalmente para permitir que sólo un cierto segmento de red pueda hacer consultas (en los DNS internos), además que reduce el tráfico de peticiones por la red.

options {



directory "/var/named";



allow-transfer {



10.25.13.12;



};



notify yes;



allow-query {



10.25.13.0/24; localhost;



};



};







zone "red.10" {



type master;



file "named.red.10";



allow-query { any; };



};



Ejecutar named como un usuario 'enjaulado'.

La idea es evitar que el usuario que ejecuta el servicio pueda realizar cualquier otra acción fuera de su carpeta, para lo que se usa el paquete bind-chroot, que configura y ejecuta todo el servicio en /var/named/chroot.

Otros recursos.

Lecturas recomendadas.

         

Herramientas de diagnóstico.

Nombre
Descripción
Opciones
named-checkzone Herramienta de validación de archivos de zonas. named-checkzone -djqv -c class zona archivo
Por ejemplo; named-checkzone -d ejemplo.com /var/named/named.ejemplo.com
named-checkconf Herramienta de validación del archivo de copnfiguración. named-checkconf -v -t directorio archivo
Por ejemplo; named-checkconf /etc/named.conf
dig (domain information groper). Utilería para realizar consultas en servidores DNS. dig [@global-server] [domain] [q-type] [q-class] {q-opt}
{global-d-opt} host [@local-server] {local-d-opt}
[ host [@local-server] {local-d-opt} [...]]
Por ejemplo; dig mexicoextremo.com.mx, dig mexicoextremo.com.mx MX
nslookup Utilería para realizar consultas interactivas a los servidores DNS. nslookup -opciones [host - servidor]
Por ejemplo; nslookup mexicoextremo.com.mx
host Utilería no interactiva para realizar consultas a los servidores DNS. host -aCdlnrTwv servidor
Por ejemplo; host -a mexicoextremo.com.mx
ipcalc Herramienta para revisar la información IP de un dominio. ipcalc -bhn dirección-IP
Por ejemplo; ipcalc -h 64.233.179.99

Herramientas por Internet.

            
                      
           

Servicios de DNS dinámicos.

               
                
              
              
      

Registro de Dominios.


   

Si el anterior artículo te ha sido útil o te ha gustado, por favor haz click en alguno de los anuncios que aparecen a continuación, con esta pequeña acción ayudarás a mantener este sitio y nos animarás a seguir trabajando para publicar información de tu interés.


< Anterior   Próximo >



 
Top!
Top!