BIND es el servidor de DNS mas usado en Internet. Yo monte mi primer servidor de DNS en el año 2001, y específicamente fue BIND 9 que fue la que sustituyo al famoso y temido BIND 8.
En esta guía, explicare como montar un servidor BIND 9 primario con servidores de DNS esclavos, siempre utilizando BIND 9 en todos los servidores.
Como ejemplo, vamos a utilizar las siguientes direcciones IP para los servidores de DNS:
Servidor Primario de DNS: 10.1.1.1 – ns1.hola.com
Servidor Secundario de DNS: 10.1.1.2 – ns2.hola.com
Servidor Terciario de DNS: 10.1.1.3 – ns3.hola.com
Instalemos el paquete bind9. Esto lo hacemos de la siguiente manera:
web:/etc# apt-get install bind9 Reading package lists... Done Building dependency tree... Done Suggested packages: bind9-doc The following NEW packages will be installed: bind9 0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded. Need to get 297kB of archives. After unpacking 782kB of additional disk space will be used. Get:1 http://ftp.debian.org etch/main bind9 1:9.3.4-2etch3 Fetched 297kB in 0s (760kB/s) Selecting previously deselected package bind9. Unpacking bind9 (from .../bind9_1%3a9.3.4-2etch3_i386.deb) ... Setting up bind9 (9.3.4-2etch3) ... Adding group `bind' (GID 104) ... Done. Adding system user `bind' (UID 104) ... Adding new user `bind' (UID 104) with group `bind' ... Not creating home directory `/var/cache/bind'. wrote key file "/etc/bind/rndc.key" Starting domain name service...: bind.
Listo, ya esta instalado bind9.
Yo necesito que el servidor lleve un historial de las peticiones que hacen al servidor, así que modifico el archivo /etc/bind/named.conf y agrego lo siguiente al final:
logging {
channel “querylog” { file “/var/log/bind9.log”; print-time yes; };
category queries { querylog; };
};
Ademas de esto, tengo que configurar el servidor BIND primario para que solo acepte peticiones hacia los dominios de los cuales es un Servidor de Dominio, (los dominios de los cuales el va a ser un name server) y también las direcciones IP de los servidores BIND esclavos.
El archivo /etc/bind/named.conf.options se encuentra configurado de la siguiente manera:
options {
directory “/var/cache/bind”;// If there is a firewall between you and nameservers you want
// to talk to, you might need to uncomment the query-source
// directive below. Previous versions of BIND always asked
// questions using port 53, but BIND 8.1 and later use an unprivileged
// port by default.// query-source address * port 53;
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0’s placeholder.// forwarders {
// 0.0.0.0;
// };auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Le haré los siguientes cambios:
options {
directory “/var/cache/bind”;
allow-query { 10.1.1.1/28; } ;
allow-transfer { none; };
// If there is a firewall between you and nameservers you want
// to talk to, you might need to uncomment the query-source
// directive below. Previous versions of BIND always asked
// questions using port 53, but BIND 8.1 and later use an unprivileged
// port by default.// query-source address * port 53;
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0’s placeholder.// forwarders {
// 0.0.0.0;
// };auth-nxdomain no; # conform to RFC1035
recursion no;
};acl slaves {
10.1.1.2/29; // ns2
10.1.1.3/29; // ns3
};
Explicare cada campo.
allow-query { 10.1.1.1/28; } ;
IP del servidor Primario de DNS
allow-transfer { none; };
Con este parámetro restringimos la transferencia de zonas a Servidores DNS esclavos que no estén autorizados. Esta es una buena medida de seguridad, ya que evitamos que personas ajenas se enteren de las direcciones IP que están dentro de la zona de DNS de un dominio.
acl slaves {
10.1.1.2/29; // ns2
10.1.1.3/29; // ns3
};
Listado de acceso (access list) de los servidores de DNS esclavos.
Después de hacer estos cambios vamos a crear una zona de DNS para el dominio hola.com.
Creamos un archivo llamado hola.com.hosts en el directorio /var/cache/bind. Dentro de este archivo pondremos lo siguiente:
$TTL 86400
@ IN SOA ns1.hola.com. root.hola.com. (
2008281000 ; serial
3600 ; refresh
7200 ; retry
604800 ; expire
86400 ; minimum
)
@ IN NS ns1.hola.com.
@ IN NS ns2.hola.com.
@ IN NS ns3.hola.com.
IN A 10.1.1.5
www IN CNAME hola.com.
Con esta zona de DNS de hola.com estamos apuntando, hola.com y www.hola.com hacia la IP 10.1.1.5.
Hay que tener en cuenta que los sub dominios ns1.hola.com, ns2.hola.com y ns3.hola.com, los configure con mi proveedor de dominio, (Godaddy) ya que desde el proveedor del dominio (Godaddy) indicaremos al mundo de Internet que ns1.hola.com apunta a 10.1.1.1 y asi sucesivamente con los otros servidores de DNS. Sin esto, nuestros servidores de DNS no van a funcionar.
En las zonas del dominio definiremos quien puede hacer una petición de resolución de nombre al dominio, a quien le damos permiso para que pueda copiar las zonas; que en este caso solo seria a los servidores de DNS esclavos.
Agregamos la zona en el servidor primario de DNS, del dominio hola.com en el archivo /etc/bind/named.conf.local
zone “hola.com” {
type master;
notify no;
allow-query { any; };
allow-transfer { slaves; };
file “hola.com.hosts”;
};En los servidores esclavos de DNS la configuración seria la siguiente en /etc/named.conf.local:
zone “hola.com” {
type slave; masters { 10.1.1.1; };
allow-query { any; };
file “hola.com.hosts”;
};
Explico que significa cada campo.
En el servidor primario de DNS:
zone “hola.com” { Definimos el dominio.
allow-query { any; }; Cualquier computadora puede hacer una petición de DNS a este dominio.
allow-transfer { slaves; }; Con este parámetro le damos permiso a los servidores esclavos de DNS que puedan hacer una copia de la zona de DNS para el dominio hola.com
file “hola.com.hosts”; Archivo donde se encuentra los parámetros de la zona para el dominio hola.com.
En los servidores de DNS secundarios:
zone “hola.com” { Dominio.
type slave; masters { 10.1.1.1; }; Definimos a quien le debe pedir una copia de la zona de DNS para el dominio hola.com que en nuestro caso seria el servidor de DNS primario.
allow-query { any; }; Cualquier computadora puede hacer una petición de DNS a este dominio.
file “hola.com.hosts”; Archivo donde se encuentra los parámetros de la zona para el dominio hola.com.
Reiniciaremos el servicio de BIND en el servidor primario de DNS antes que los secundarios. Esto lo hacemos con el siguiente comando:
/etc/init.d/bind9 restart
Despues de reiniciarlos, verificaremos en el el “syslog” que nuestros servidores de DNS secundarios esten copiando la zona de DNS para hola.com. Encontraremos un registro similar a este:
tail -f /var/log/syslog
Nov 5 15:43:57 ns1 named[1966]: client 10.1.1.2#48716: transfer of ‘hola.com.us/IN’: AXFR started
Nov 5 15:43:57 ns1 named[1966]: client 10.1.1.2#48716: transfer of ‘hola.com/IN’: AXFR endedNov 5 15:43:57 ns1 named[1966]: client 10.1.1.3#48716: transfer of ‘hola.com/IN’: AXFR started
Nov 5 15:43:57 ns1 named[1966]: client 10.1.1.3#48716: transfer of ‘hola.com/IN’: AXFR ended
Con esto confirmamos que las zonas de DNS para hola.com fueron transferidas hacia los servidores de DNS secundarios.
Ahora es necesario confirmar que los archivos de las zonas de DNS en los servidores secundarios se esten creando correctamente. Entramos a los servidores de DNS secundarios, y hacemos un “cat” al archivo hola.com.hosts en el directorio /var/cache/bind.
Si todo esta bien mirarian algo similiar a esto:
rolando@web:/var/cache/bind$ cat hola.com.hosts
$ORIGIN .
$TTL 86400 ; 1 day
hola.com IN SOA ns1.hola.com. root.hola.com. (
2008281000 ; serial
3600 ; refresh (1 hour)
7200 ; retry (2 hours)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS ns1.hola.com.
NS ns2.hola.com.
NS ns3.hola.com.
A 10.1.1.5
$ORIGIN hola.com.
www CNAME hola.com.
Felicidades, han montado un servidor de DNS primario con 2 secundarios. Cualquier duda o comentario es bienvenido.
Les recomiendo que compren estos libros, si quieren aprender en su totalidad bind 9, los pueden comprar en Amazon con los siguientes enlaces:
Me lleva, traduje el texto con google translate pero aún así no lo entiendo jajajaja
lo siento, no llego a este nivel jajaja
hola amigo como has estado? y felicitaciones por tu guia esta muy buena pero tengo un proble como configurar el bind9 solo para que le de dns a un debian router que tengo montado y aun no se que ips debo darle a las maquinas que estarian conectados al servidor
maedca, me imagino que lo quieres usar como un servidor de resolucion de nombres, la configuracion para eso es muy basica, es mas lo unico que debes hacer es instalar bind9 en el servidor y automaticamente te deberia de resolver nombres. El IP del DNS Server que le debes de poner al “router” es el IP del servidor donde esta bind9, bind9 automaticamente corre en todas las ips que tiene el servidor al menos que le configures lo contrario. Me alegro que te haya servido mi guia, saludos.
Hola Admin, un saludo y le informo que he visto el tutorial, me parce bastante interesante.
Yo no he instalado segun los pasos indicados, solo lo he leido y revisado para ver si logro entender el funcionamiento.
Yo he estado mirando en el subdirectorio /etc/bind que hay varios archivos y sigueindo una guia para el Sargent hice algunos arreglos pero no me funciona aqui en el Debian etch, pero tengo una pregunta y es lo que me hace dudar.
Mi sistema no tiene IP fija, el IP es tomado cuando la maquina arranca, entonces coloca el /etc/resolv.conf por medio de dhcp, la pregunta es: El bind solo funciona si se utiliza en una red local ?
Si la maquina se inicia carga el ip en forma automatica, no seria necesrio configurar el bind, mucho le agradezco su respuesta.
Saludos
PedroCol,
Bind funciona en una red local, una red “publica” para internet. No entendi mucho tu problema, pero creo que para hacer pruebas deberas de ponerle un IP fijo a tu computadora para hacer pruebas, en mi experiencia que tengo nadie ha usado una direccion IP que la asigna un servidor de DHCP.
Saludos.
de nuevo yo admin
voy a formular mi pregunta: ¿cómo puedo montar un servidor dns primario y secundario (como en tu explicación) si solo poseo una ip y hay un bridge presente?. Espero que te haya aclarado. MUCHAS GRACIAS.
ricardo, en el ejemplo que mostre en este tema, los servidores de DNS secundarios son maquinas distintas. Esta de mas montar un servidor primario y secundario en la misma maquina.
Saludos.
[...] http://www.rolandovera.com/2008/11/18/como-instalar-bind-9-en-linux-debian/ [...]
Hola, que tal… muy interesante.
Solo una consulta… El servidor DNS que estoy configurando lo tengo con una direccion de mi LAN (privada), tengo un firewall entre Internet (red publica) y mi red privada, en el firewall (fortinet) configure unas reglas de redireccionamiento que todo lo que entra al puerto 53 tcp/udp lo redirija al servidor DNS, la duda es:
¿Tendria tambien que configurar mi server DNS para que todo el trafico saliente por el puerto 53 tcp/udp lo dirija hacia el firewall (router)?, de ser asi ¿Esta configuracion seria con iptables?…
Gracias.
disculpen… se me olvido algo…
El servidor DNS que estoy configurando es primario…
Saludos.
JonKs
Si tu servidor de DNS tiene de puerta de enlace tu firewall, no creo que sea necesario redireccionar el trafico por iptables.
Muy buena documentacion, me gustaria saber como adicionar varios dominios a mi servidor dns
Raul,
Como puse en el ejemplo de hola.com.hosts , creas un archivo llamado nuevodominio.com.hosts con los datos del nuevo dominio.
Saludos.
Rolando, actualmente tengo configurado un DNS primario en mi red local asociado con un dominio.
Sin embargo, ahora necesito adicionar dos servidores con otros dominios a la misma red. Estaba pensando que cada servidor tenga su propio DNS, pero en tu ultimo comentario indicas que solo es necesario adicionar un nuevo archivo con los datos del dominio.
Cual sería la mejor forma para la conifuración de los DNS para este caso?
Buenas.. soy de la ciudad de Rosario, Rep Argentina.
Mi consulta se basa en lo siguiente, el NS2, lo tengo que montar en otra PC?
tengo un servidor web funcionando y lo que quiero evitar es usar los servicios de NO-IP o Dyn DNS, tengo dos PC en una el server con ubuntu y el la otra debian, * con un router.
Como configuro el server de DNS.
Muchas gracias
Andres,
El motivo de tener mas de 1 NS, (name server) es para evitar down time de tu sitio si un servidor deja de funcionar. Me imagino que tu direccion IP cambia por eso utilizas NO-IP o Dyn DNS en este caso veo de mas que configures un servidor de DNS, ya que tendrias que actualizar la direccion IP constantemente (si cambia).
Buenas Rolando.
Espero que me puedas guiar un poco, porque llevo varios días y no se bien que tengo que hacer…
Hace una semana contrate un servidor virtual dedicado, solo venía la distribución instalada. He instalado Apache2, PHP, MySQl…
Pero mi problema está a la hora de resolver los dominios. He instalado y leido bastante sobre bind pero al no tener mucha idea de redes estoy bastante liado.
Dispongo de la IP de servidor y también me facilitan una IP Fail-over. No estoy seguro de que si lo que tengo que configurar es una servidor primario y no se si necesito configurar servidores esclavos.
Mi idea es agregar todos los dominios que vaya necesitando.
Muchas Gracias.
Rolando, Es un gusto saludarle y a la vez pedirle su ayuda.
Se contrato un proveedor para el diseño del sitio web amc.com.sv el cual nos dio el hosting y el diseño segun la negociacion. Nosotros la semana pasada se instalo exchange en la empresa el cual tuvimos una serie de problema por que no podiamos recibir correos de otras redes. Dicho proveedor nunca nos resolvia el mx al dominio amc.com.sv. Viendo la situacion optamos por solicitarle al proveedor de internet que nos publicara el dominio y nos resolvio los dns para dicho dominio. WWW Y EL MAIL. Ahora bien los correos con esos nuevos dns ya nos funcionan correctamente. practicamente los dns del proveedor de la pagina ya no los estamos ocupando. Ahora el dilema que tengo es que no puedo ver el sitio http://WWW.AMC.COM.SV Que tendria que hacer el proveedor en este caso…???
otra consulta Si yo ahorita no cuendo con un web server para alojar la pagina en mi empresa; entiendo que utilizariamos el server del proveedor de la pagina apuntando a los nuevos dns.??
Le agradezco su repuesta a mi problema.
Gracias
@Mirian,
Me perdi un poco en lo que necesitas, pero te dire lo que yo haria:
Tu dominio es amc.com.sv.
1. Definiria el registro MX como mail.acm.com.sv no como amc.com.sv.
2. Apuntaria el dominio acm.com.sv y el subdominio http://www.acm.com.sv a la direccion ip donde voy a alojar mi pagina web.
Opino que si pagaste por el dise~o y hosting de una pagina, el proveedor te tiene que asesorar, estas pagando!
Espero haber resuelto tus dudas, saludos.
Hola Rolando:
Muy interesante tu artículo, te comento que yo configuré un DNS primario con un dominio y funciona bien.
Cuando configuro en los equipos locales y les doy la IP del DNS que configuré resuelve el dominio pero otros externos no, así que lo que hice fue que los equipos locales tengan la ip del DNS de mi proveedor de internet. Investigando veo que me falta configurar un archivo donde debo asignarle las ip de los root servers, en CentOS ese archivo se llama named.root pero en Debian no sé como se llama el archivo.
Espero haberme explicado y gracias de antemano.
ALEJANDRA
Hola Rolando, bueno para hacerte unas consultas.
1.- Tengo 3 equipos con Linux
2.- El primero me hace firewall
3.- El segundo lo uso de servidor de correo
4.- El tercero lo uso para la pagina web y ftp
Mi pregunta va a como hago para que funcionen tanto mi servidor de correo como el de la web, ya que estos pasan por el firewall, donde declaro el servidor DNS? y el bind?
Gracias por tu respuesta
@Orlando,
Me perdi un poco con tu pregunta, pero opino que no deberias de tener problema al instalar el bind en el servidor de pagina web y ftp o en el de correo. Me imagino que el servidor que usas de firewall tienes que definir las reglas de redireccionamiento de puertos hacia el servidor donde vas a instalar bind, tienes que desbloquear el puerto 53 en TCP y UDP.
Suerte!
@Alejandra
El archivo con los root name servers se llama db.root y lo encuentras en la carpeta /etc/bind
Saludos.
Hola Rolando. va mi pregunta, tengo un FW con, LAN, DMZ,y un elnace a intenet, como es un dominio educativo , los ip/nombres de mis servidores que estan en la dmz son administrados por los DNS de la organización. A menudo tiene problemas los DNS de la organización y desde mi lan ni si quiera puedo entrar a mis servidores de la DMZ por que no resuelven los nombres , si por IP, la pregunta es crees que me conviene montar un servidor local de dns que tome como raiz (creo que asi se dice) los de la Organizacion,o tocar resolv.conf y algo mas para buscar que los nombres locales se resuelvan en el FW.gracias desde ya.
hola, tengo una consulta, mira yo tengo un dominio, pongamos que es ejemplo.net, comprado y todo listo para configurar, y tengo una maquina con debian, instale bind9, pero hay cosas que no entiendo, como por ejemplo. esto:
Servidor Primario de DNS: 10.1.1.1 – ns1.hola.com
Servidor Secundario de DNS: 10.1.1.2 – ns2.hola.com
Servidor Terciario de DNS: 10.1.1.3 – ns3.hola.com
tu pusiste 3 dns, cada uno aumentando en un numero, pero por ejemplo mi servidor esta en 192.168.1.10, ese seria NS1? y aunque no existan maquinas en 192.168.1.11 etc, tengo que poner eso igual? eso no entiendo
@focaazul,
Te recomiendo que ya sea definas los dominios / ip en el resolv.conf o manejes 2 servidores de dns, el principal y uno de respaldo.
Saludos.
@kiwa
Esos nombres los utilice como ejemplo, podrias montar solo 1 servidor de dns y obviar los demas. Tambien los puedes llamar como quieras.
Saludos.
Hola a todos. BUeno tengo un problema, espero puedan ayudarme.
Yo compre un servidor VPS, ya vino con el bind9 instalado.
Lo que yo quiero hacer es lo siguiente:
Ejemplo:
Tengo un dominio Lucas.com,
Quiero agregar ese dominio en el bind9, y que el mismo, al acceder desde el navegador, me mande a la carpeta /var/www/lucas.com/
entonces tengo cada dominio separado. Necesito saber como hago eso. de antemano muchas gracias.
Pregunto, la ip 10.1.1.1 la reemplazo por la de mi host? en este caso 69.162.106.6???