El DNS (Domain Name System, Sistema de Nombres de Dominio) es una base de datos jerárquica distribuida que almacena la información sobre nombres de dominio e IPs en Internet, que se implementa con arquitectura cliente-servidor, por lo que necesita:
- un servidor DNS que escucha en los puertos 53 TCP y 53 UDP, que se ocupa de responder las
consultas DNS. Prácticamente el único software utilizado en servidores DNS es
Bind, del
ISC
(Internet Systems Consortium, isc.org).
Equivalencias en Windows: MS-DNS.
- un cliente DNS, generalmente un navegador o un servidor de correo, el programa que genera peticiones DNS de resolución de nombres a un servidor DNS, del tipo ¿qué IP corresponde a www.domain.com?
Vamos a ver dos ejemplos:
- Servidor DNS para un dominio registrado.
- Servidor DNS local, sin dominio registrado.
Una vez configurado el servidor DNS comprobaremos que funciona correctamente con los comandos ping y dig.
Es muy conveniente leer los HOWTOs y algún manual bueno de DNS:
- DNS COMO: es.tldp.org/COMO-INSFLUG/COMOs/DNS-Como/
- DNS – Bulma: bulma.net/body.phtml?nIdNoticia=1334
- DNS – Smaldone: blog.smaldone.com.ar/2006/12/05/como-funciona-el-dns/
- Analiza el DNS de nuestro dominio: dnsreport.com
Servidor DNS Bind para un dominio registrado
Vamos a instalar un servidor DNS y vamos a configurarlo para servir tanto a la red local como a Internet, proporcionando a cada red distinta información.
- los ordenadores de la LAN consultarán a este servidor cuando tengan que resolver un nombre de host local o de Internet. De este modo, no tendremos que añadir manualmente los nombres de las máquinas de la LAN a /etc/hosts.
- a las máquinas de Internet que soliciten nuestro dominio www.fransberns.com (suponemos que está registrado y que dd1.dd2.dd3.dd4 es la IP asociada), les dirán que el servidor DNS para ese dominio está en nuestra máquina (IP del servidor DNS primario dd1.dd2.dd3.dd4, IP del servidor DNS secundario ss1.ss2.ss3.ss4).
Veamos cómo instalar el servidor DNS:
- instalamos Bind (Berkeley Internet Name Domain, isc.org/products/BIND/, paquete bind9): el demonio es named y escucha los puertos 53 TCP y 53 UDP.
- editamos el archivo de configuración de bind /etc/bind/named.conf.local
y añadimos las siguientes líneas:
acl slaves { ss1.ss2.ss3.ss4; }; acl internals { 127.0.0.1; 192.168.1.0/24; }; view "internal" { match-clients { internals; }; recursion yes; zone "fransberns.com" { type master; file "/etc/bind/internals/db.fransberns.com"; }; zone "dd3.dd2.dd1.in-addr.arpa" { type master; file "/etc/bind/db.dd1.dd2.dd3"; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192.168.1"; }; }; view "external" { match-clients { any; }; recursion no; zone "fransberns.com" { type master; file "/etc/bind/externals/db.fransberns.com"; allow-transfer { slaves; }; }; zone "dd3.dd2.dd1.in-addr.arpa" { type master; file "/etc/bind/db.dd1.dd2.dd3"; }; };
¿Qué hemos hecho?
- definimos una nueva zona, fransberns.com, sobre la que Bind ejerce el control, que tiene 2 sub-zonas: internal y external.
- Bind servirá distintos contenidos según la sub-zona de donde provenga la consulta:
- consultas "internas" son las que provienen de una IP que coincide con el rango de IPs definido en acl internal, es decir, las que proceden de 192.168.1.0/24, y su configuración está en el archivo /etc/bind/internals/db.fransberns.com
- consultas "externas" son todas las demás, y su configuración está en el archivo /etc/bind/externals/db.fransberns.com
- ambas sub-zonas son type master: significa que el servidor DNS es primario.
- definimos un servidor DNS secundario (que lo tenemos en la IP ss1.ss2.ss3.ss4), mediante la directiva acl slave. Con la directiva allow-transfer permitimos transferir los datos de la sub-zona external a este servidor secundario.
- creamos las zonas 1.168.192.in-addr.arpa y dd3.dd2.dd1.in-addr.arpa para que nuestro servidor DNS haga el mapeo inverso (traducir una IP a un nombre de dominio).
- creamos el archivo /etc/bind/externals/db.fransberns.com (IN NS
indica que este equipo es el servidor DNS):
; fransberns.com-externals $TTL 604800 @ IN SOA ns1.fransberns.com. root.fransberns.com. ( 2006020201 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ); Negative Cache TTL ; @ IN NS ns1 IN MX 10 mail IN A dd1.dd2.dd3.dd4 ns1 IN A dd1.dd2.dd3.dd4 mail IN A dd1.dd2.dd3.dd4 www IN A dd1.dd2.dd3.dd4
- creamos el archivo /etc/bind/internals/db.fransberns.com (IN A añade
un nombre de host y su IP correspondiente):
; fransberns.com-internals $include "/etc/bind/externals/db.fransberns.com" @ IN A 192.168.1.3 pc350 IN A 192.168.1.3 pc450 IN A 192.168.1.2 pc266 IN A 192.168.1.4
- creamos el archivo /etc/bind/internals/db.192.168.1 (contiene la misma
información del mapeo de nombres a IPs):
; fransberns.com inverso red local $TTL 604800 @ IN SOA fransberns.com. root.fransberns.com. ( 1 ; Serial 8H ; Refresh 2H ; Retry 4W ; Expire 1D ) ; Minimum TTL ; @ IN NS fransberns.com 3 IN PTR pc350.fransberns.com. 2 IN PTR pc450.fransberns.com. 4 IN PTR pc266.fransberns.com.
- creamos el archivo /etc/bind/internals/db.dd1.dd2.dd3 (contiene la misma
información del mapeo de nombres a IPs):
; fransberns.com inverso red pública $TTL 604800 @ IN SOA fransberns.com. root.fransberns.com. ( 1 ; Serial 8H ; Refresh 2H ; Retry 4W ; Expire 1D ) ; Minimum TTL ; @ IN NS fransberns.com dd4 IN PTR ns1 dd4 IN PTR mail dd4 IN PTR www
- ¿cómo se configura el servidor secundario? En el /etc/bind/named.conf
del servidor DNS secundario añadiremos las líneas:
zone "fransberns.com" { type slave; file "sec.db.fransberns.com"; masters { dd1.dd2.dd3.dd4; }; }; zone "dd3.dd2.dd1.in-addr.arpa" { type slave; file "sec.db.dd1.dd2.dd3"; masters { dd1.dd2.dd3.dd4; }; };
- ¿y si no tenemos servidor DNS secundario? Un servidor DNS debe tener un servidor secundario. Podemos conseguir un servidor DNS secundario en xname.org. Sólo tenemos que abrir una cuenta para fransberns.com y decirles que dd1.dd2.dd3.dd4 es la IP desde donde transferirán la información DNS del dominio fransberns.com. En ese caso, sustituiremos ss1.ss2.ss3.ss4 por la IP de xname.org (193.218.105.146).
- editaremos /etc/bind/named.conf.options e incluiremos las IPs de los servidores
DNS de nuestro ISP, de manera que Bind las utilizará para resolver peticiones que no
pertenezcan a nuestro dominio. Buscaremos la directiva forwarders y pondremos:
forwarders { 80.58.61.250; 80.58.61.254; };
- editaremos el archivo /etc/resolv.conf y añadiremos la IP del servidor DNS (dejaremos
los de nuestro ISP por si falla Bind):
search fransberns.com nameserver 192.168.1.3 nameserver 80.58.61.250 nameserver 80.58.61.254
- cuando se nos pregunte por un servidor DNS al registrar fransberns.com, pondremos el que hemos montado, ns1.fransberns.com, como primario y ss1.ss2.ss3.ss4 como secundario. Los cambios de configuración en el DNS son lentos, y no podremos comprobar los resultados hasta transcurridas algunas horas (hasta 48 horas).
- reiniciamos el demonio de Bind (named) ejecutando:
# /etc/init.d/bind9 restart
Una vez instalado el servidor DNS configuraremos los clientes. Para ello, configuraremos cada ordenador de la red local para que use el servidor DNS local editando el archivo /etc/resolv.conf de cada máquina y añadiendo la IP del servidor DNS:
search fransberns.com nameserver 192.168.1.3 nameserver 80.58.61.250 nameserver 80.58.61.254 |
Servidor DNS Bind local sin dominio registrado
Veamos cómo instalar un servidor DNS local:
- editamos el archivo /etc/bind/named.conf.local y añadimos las siguientes
líneas:
zone "fransberns.com" { type master; file "/etc/bind/db.fransberns.com"; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/internals/db.192.168.1"; };
- creamos el archivo /etc/bind/db.fransberns.com, cuyo contenido es:
; fransberns.com $TTL 604800 @ IN SOA ns1.fransberns.com. root.fransberns.com. ( 2006020201 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ); Negative Cache TTL ; @ IN NS ns1 IN A 192.168.1.3 ns1 IN A 192.168.1.3 www IN A 192.168.1.3 pc350 IN A 192.168.1.3 pc450 IN A 192.168.1.2 pc266 IN A 192.168.1.4
- creamos el archivo /etc/bind/internals/db.192.168.1, cuyo contenido es:
; fransberns.com inverso red local $TTL 604800 @ IN SOA fransberns.com. root.fransberns.com. ( 1 ; Serial 8H ; Refresh 2H ; Retry 4W ; Expire 1D ) ; Minimum TTL ; @ IN NS fransberns.com 3 IN PTR pc350.fransberns.com. 2 IN PTR pc450.fransberns.com. 4 IN PTR pc266.fransberns.com.
- editamos /etc/bind/named.conf.options para que consulte a los DNS del ISP:
forwarders { 80.58.61.250; 80.58.61.254; };
- editamos el archivo /etc/resolv.conf y añadiremos la IP del servidor DNS local:
search fransberns.com nameserver 192.168.1.3 nameserver 80.58.61.250 nameserver 80.58.61.254
- reiniciamos el demonio de Bind (named) ejecutando:
# /etc/init.d/bind9 restart
Los clientes los configuraremos exactamente igual que en el caso anterior.
Configurar BIND en el entorno gráfico
En el entorno gráfico podemos configurar BIND con GBIND Admin (paquete gbindadmin).
Tengo una duda, poseeo una ip dinamica, y necesito montar un servidor que funcione no solo en una lan interna, sino que el servidor funcione como el de una empresa de hosting, he cambiado las direcciones y tratado de direccionar mediante iptables, pero no he logrado que funcionen, agradesco la ayuda que me puedan prestar…. gracias de antemano!
JFF, si quieres acceder a tu máquina desde Internet sin tener IP fija tienes que utilizar un Dynamic DNS provider. Tienes más info en nuestro artículo Cómo tener una web
Hola, estoy estudiando la posibilidad de montar un FTP con acceso desde el internet o fuera de la LAN y tengo una duda; quiero hacerlo mediante un nombre de dominio que me conecte directamente con mi servidor, para esto es necesario que instale un Servidor de DNS? no es posible con tan solo un cliente DNS? (que no sea con aplicaciones de terceros como DynDNS), es decir, solo deseo que MIDOMINIO.COM este en la base de datos del DNS de mi ISP y resuelva solo la IP cuando lo soliciten. Asi me evito una IP fija y el trabajo de resolver N cantidad de direcciones.
Jesus, para acceder a tu máquina desde Internet sin tener IP fija tendrás que utilizar un Dynamic DNS provider. Y si quieres que MIDOMINIO.COM esté en el servidor DNS de tu ISP tendrás que registar el dominio. Más info en nuestro artículo Cómo tener una web.
Gran tutorial amigo fue el unico que sirvio de los muchos que he consultado, hize la parte del DNS sin dominio registrado (y si funciono pero solo en el sever) sin embargo lo unico que necesito por ahora es que los clientes de mi red local accedan a el pero eso no pasa jajajjaja
Ya tenia instalado apache y phpmyadmin y podia acceder a el servidor desde cualquier cliente solo tecleando el ip pero cuando puse el DNS ya no jalo no entra ningun cliente por la ip
¿¿¿¿tengo que hacer la parte del DNS con dominio registrado?????
uauuuu! k respuesta tan rapida :P , aprovechando mira pare bind9 e intente acceder a el server como estaba acostumbrado a acerlo (solo apache) pero ya no lo hace, aparte al reiniciar apache me mandaba unos errores k corregi agregando al archivo de configuracion de apache el nombre del servidor, y pues uno de los problemas k se me presenta aparte de k ahora no puedo acceder a mis clientes aunq sea por ip es k los clientes son windows (no me regañes no soy yo jajjaj odio windows jajajajajja) y pues no puedo aplicar esos pasos ya agrege al resolv.conf la sintaxis del server y su direccion
jeva vader, tranquilo, BIND no es el programa más fácil de configurar del mundo y suele costar hacerlo funcionar, su sintaxis no es precisamente intuitiva.
Si has instalado correctamente el servidor DNS todavía no has terminado, tienes que configurar adecuadamente todos y cada uno de los clientes de tu red local para que usen el servidor DNS local. Para ello tendrás que editar el archivo /etc/resolv.conf de cada máquina y añadir una línea con la IP del servidor DNS local, por ejemplo:
nameserver 192.168.1.3
Además, asegúrate de que tienes bien configurado en cada cliente el ‘resolver’, el mecanismo de resolución de nombres de dominio (más info en nuestro artículo resolución de nombres de dominio).
Y acuérdate de limpiar la caché del navegador. Los browser cachean las consultas DNS por lo que tienes que vaciar la caché si cambias la configuración de tu servidor DNS local.
Listo por fin me quedo mi error es que usaba de direccion del servidor la 200.200.200.0 (broadcast) no me habia dado cuenta hasta hacer ping pero ya quedo con clientes linux thx
al hacer nslookup de mi direccion estatica desde fuera me da el siguente error: xxx.xxx.xxx.xxx.in-addr.arpa not found al igual si pruebo con host
Saludos
instale Ubuntu 7.10 y necesito instalar un servidor de correo DNS, pero cuando voy a instalar el paquete BIND, aparece un mensaje que dice:
El paquete bind no tiene candidato para su instalacion
que debo hacer? gracias
julian, para instalar BIND el paquete a instalar es ‘bind9′ no ‘bind’
Excelente tuto, te felicito, soy nuevo configurando servidores y tengo problemas para configurar un servidor local. El problema es que puedo acceder desde los otros equipos al servidor solamente por la IP y no por el nombre del servidor, e seguido el tutor pero tengo problemas ya que tengo fedora 9 y en algunas cosas cambia y lo otro es que no e podido hacer que el demonio named funcione al igual que el servicio inetd no existe (creo que lo reemplaza Xinetd), espero me puedan colaborar gracias.
Muchos saludos
Muy buen aporte!!! probaré y veré los resultados gracias. Justo lo que necesitba.
Bonito tutorial, siguido los pasos del manual llegue a configurar DNS hace 1 dia cuando digito la ip se ve la pagina, cuando digito el nombre de la web no ingresa donde podria estar la falla, la configuracion es la siguiente.
En named.conf.local tengo esto.
zone “dirbol.com” {
type master;
file “/etc/bind/dirbol.com.hosts”;
};
zone “71.58.200.in-addr.arpa” {
type master;
file “/etc/bind/200.58.71.rev”;
};
Se creo y/o edito el siguiente archivo.
$ttl 38400
dirbol.com. IN SOA es.dirbol.com. dptosalud.yahoo.es. (
1230513593
10800
3600
604800
38400 )
dirbol.com. IN NS es.dirbol.com.
es.dirbol.com. IN A 200.58.71.40
http://www.dirbol.com. IN CNAME dirbol.com.
Esta otra resolucion inversa ( 200.58.71.rev ) tambien la edite de la siguiente manera.
$ttl 38400
71.58.200.in-addr.arpa. IN SOA es.dirbol.com. dptosalud.yahoo.es. (
1230513999
10800
3600
604800
38400 )
71.58.200.in-addr.arpa. IN NS es.dirbol.com.
40.71.58.200.in-addr.arpa. IN PTR es.dirbol.com.
http://www.71.58.200.in-addr.arpa. IN CNAME dirbol.com.
En named.conf.options coloque los DNS de mi ISP
Hace aproximadamente 24 horas que tengo con esta configuracion, pero no me resulve, cuando digito en firefox el http://es.dirbol.com
Podrian indicarme donde esta la falla gracias y saludos a todos.
Tengo una duda. Tu mencionas en tu articulo que la ip dd1.dd2.dd3.dd4 es la ip asociada o publica que se tiene. Yo en mi red tengo un nettica (dns manager) con el dominio sinaloawireless.com. Desde afuera visualizo bien la pagina http://www.sinaloawireless.com. La pregunta es si puedo sustituir el dd1.dd2.dd3.dd4 por sinaloawireless.com en la configuracion del dns manager. Si es asi como se le haria para sustituir expresiones como zone “dd3.dd2.dd1.in-addr.arpa”. Para mi seria perfecto poder hacer eso con mi ip dinamica ya que no quiero pagar una ip fija. Mas en mexico que son caras. Agradezco mucho tu apoyo. Gracias..
daniel soto, puedes tener IP fija gratis. Échale un vistazo al apartado “Free Dynamic DNS provider” de nuestro artículo Cómo tener una web
Hola, quería comentaros una duda que tengo ya que no se me inicia el servicio named. Tengo CentOS 5.3
He seguido tus pasos de DNS local, pero poniendo mi dominio.
Al reiniciar el servidor named me da este error:
———————
Error en la configuración de named:
zone 0.0.127.IN-ADDR.ARPA/IN: loading master file localhost.rev: file not found
_default/0.0.127.IN-ADDR.ARPA/IN: file not found
zone servidor.example.com/IN: loading master file /var/named/db.servidor.example.com: file not found
_default/servidor.example.com/IN: file not found
zone 2.168.192.in-addr.arpa/IN: loading master file /var/named/db.192.168.2: file not found
_default/2.168.192.in-addr.arpa/IN: file not found
———————
Pero en el directorio /var/named están estos archivos:
———————
chroot db.servidor.example.com localhost.zone named.ip6.local run-root data named.broadcast named.local db.192.168.2 localdomain.zone named.ca named.zero slaves
———————
No encuentro el fallo de por qué no encuentra los archivos de configuración
Un saludo. Y gracias por la ayuda.
Por favor quisiera recibir cotizacion formal de un servidor dedicaco, con las siguientes caracteristicas: 300 gb de disco, 10 Mb de ancho de banda, linux centos 5.3, core 2 duo , y de 2 gb de RAM.
Asi como conocer tambien si les es posible asignar un rango completo de ips a ese servidor (256 ips, una clase C)
Desde ya muchas gracias.
Paula
Preguntas:
1- si tengo ip dinamica puedo utilizar un Free Dynamic DNS provider como dyndns y la direccion que se creo por ejemplo server.homedns.org
y ponerla en la configuracion del servidor dns bind ya que no poseo ip fija??
2- se puede hacer esta misma configuracion con webmin.
si es asi tienes algun tutorial???
muy buen tutorial primer post que encuentro que entiendo te pasaste el reto no entendia nada nada.
saludos.
Ahí va un tuto sobre el tema
http://remember.homelinux.com
muy buen aporte, pero yo uso webmin y es mas rapido a la hora de configurar un dominio, para los nuevos linuxeros webmin es una herramienta intuitiva que nos sirve para administrar por web los servidores como el openvpn, dhcp, dns, crear nuevos usuarios y grupos, subir y bajar los servicios de linux todo y hasta + por web hasi de facil por youtube hay muchos video tutos que te enseñan de como instalar y configurar webmin.
slu2
Existing Client Views
Warning – the following zones are not in any view : dd3.dd2.dd1.in-addr.arpa , . , 0 , mydomain.com , 255 , localhost , 127
BIND may not be able to start until they are moved to a view.
i try many many times reinstalling bind and finaly always the same problem :(
if you have any idea please write in the forum or to me: [email protected]
Buenas, tengo una consulta.
Yo tengo en mi empresa dos servidores DNS, uno primario y una esclavo.
Estuve bastante tiempo configurandolo para que puedan transferirse datos y al final lo logré.
Lo que no estoy logrando es que cuando bajo el servicio named del DNS1, quede el DNS2 como primario y que los sistemas sigan arriba. Eso no debería suceder automáticamente? En todas las demás máquinas están ambas direcciones IP indicadas en el resolv.conf, por lo que al no encontrar activo al DNS1, debería ir automáticamente al DNS2, pero no lo hace.
Alguna sugerencia?
Desde ya, muchas gracias,
Martín.
Muchas gracias, por fin he encontrado una buena explicación para el caso con el que me encontraba; está todo de lujo.
A seguir así!