You are here: Home // Tecnología // Como controlar tus dominios fácilmente con Bind

Como controlar tus dominios fácilmente con Bind

Uno de los aspectos que más nos gusta a los “Linuxeros” es la capacidad del sistema operativo de controlar todos y cada uno de los aspectos de lo que hacemos.

Por ese mismo motivo, en muchas ocasiones nos sentimos frustrados cuando al contratar un servicio de hosting para un blog, una página personal u otra, vemos que no podemos hacerlo a nuestro gusto por las limitaciones de las condiciones de uso, la falta de flexibilidad que tienen, o símplemente por la sensación de no tener el control absoluto de lo que estamos haciendo.

Si bien para un blog sencillo puede ser suficiente contratar alojamiento y dominio en un proveedor, en el caso de instalaciones más extensas el paquete estandard no suele ser todo lo completo que necesitamos.

Por ejemplo, en mi trabajo actual tenemos wikis, crm, cms, webs, webmail,… y todos y cada uno de ellos con su subdominio. Es más, casi a diario nos vemos en la necesidad de crear subdominios nuevos para algunos de los proyectos de los clientes con los que trabajamos.

La mayoría de proveedores permite crear un cierto número de subdominios, pero esto puede ser limitado, y casi en todos los casos el número es limitado.

En este tutorial aprenderemos:

  1. Los principios básicos de un DNS para gestionar los nombres de dominio.
  2. A instalar el servicio Bind
  3. Editar los archivos de configuración
  4. Gestionar nuestros dominios y subdominios.

Los servicios DNS

Creo que ya casi todos sabeis lo que es un DNS, como funciona y que hace. Si este es vuestro caso, id al paso siguiente que no os voy a descubrir nada nuevo.

Para el resto, intentaré daros una explicación sencilla de cómo funciona esto.

Bien, como sabreis al conectarnos a internet o en una red, lo hacemos mediante una dirección IP. De igual forma, si queremos visitar alguna página ponemos en la barra del navegador la dirección, por ejemplo www.google.es

Ahora supongamos este caso: yo vivo en Sevilla, y vosotros estais en Berlín.

Os montais en un taxi y le decís al conductor que os lleve “a casa de Alfonso”. Como no creo que me conozca, el conductor obtendrá unas coordenadas en el GPS y se dirigirá hacia ellas.

Bien, pues “casa de Alfonso” es el dominio, y las coordenadas del GPS es la dirección IP.

Pero como además resulta que vais a venir frecuentemente, el taxista decide guardar en la memoria del GPS mi dirección, de forma que cuando le digais “casa de Alfonso”, el GPS le indique las coordenadas para llegar. (como lo hagais, no vais a tener dinero suficiente para pagar al taxista :-D)

En este caso, el GPS hace de DNS.

Como veis, un DNS relacciona un nombre con una dirección, o para ser más exacto, un dominio con una IP.

Bien, ahora un día cuando os montais en el taxi alguien se adelanta y le dice al conductor “vamos a casa de Macarena”. El taxista, obviamente, os dirá que no sabe donde está. Pero si le decís que es la “casa de Alfonso”, ya sabe llegar.

Como podreis deducir, una dirección IP puede tener asociados varios dominios, pero esto no siempre puede ser así. No os asusteis, que eso lo trataremos en otro documento, pero creo que es interesante que conozcais que es posible hacerlo.

Ahora supongamos que me toca la lotería, gano 100 millones de euros, y me compro cinco casas: una para dormir, otra para comer, otra para jugar con la Play 3, otra para ver la televisión y otra para guardar mis cosas.

Si le decís al taxista, que tiene mis cinco direcciones guardadas en su GPS como “casa de Alfonso” que os traiga, primero irá a una, llamareis a la puerta, y si no contesto ireis a la segunda. Nuevamente llamareis a la puerta, y si no estoy ireis a la tercera.

Bien, eso se puede hacer y es más corriente de lo que parece, pero como os dije antes, esas cosas avanzadas las veremos en otro manual.

Ahora vamos a lo sencillo: tengo un dominio y quiero usarlo a mi antojo con control absoluto ;-)

Requisitos técnicos

Para controlar un dominio, necesitamos:

  • Dos servidores DNS. Pero como el 99% de los mortales sólo contamos con una ADSL, más adelante os explico el truco.
  • Una dirección IP fija.
  • Un equipo con GNU/Linux que podais mantener encendido todo el día. No hace falta que sea muy potente. En mi caso, estoy usando un portatil que tiene casi 9 años y muevo todo lo necesario para dns, correos, blogs, wikis…
  • Abrir el puerto 53 UDP del router, y redirigir el tráfico al equipo que alojará los servicios de DNS. A estas alturas, todos sabemos hacer esto, pero si teneis dudas de como hacerlo os recomiendo que visiteis adsl4ever.com o adslayuda.com, y encontrareis manuales de como hacerlo.

¡Listo! Ahora vamos a meternos en faena.

Llegados a este punto, quisiera aclarar una cosa:

Las capturas que voy a poner son de registrador, pero quiero que conste que no tengo nada que ver con él, salvo la facturita que me manda cada año por renovar el dominio.

Hay muchos para elegir, y eso ya es cuestión de cada uno ver cual le gusta más.

Bien, lo primero que haremos será logarnos en la página donde hayamos comprado el dominio.

Aqui veis los dominios que tengo. Vamos a ver como controlar alfonsoarjona.net

Nos metemos en el icono que tiene un PC dibujado:

Y nos aparecerá esto:

Como podeis ver, tengo dos DNS configurados, tal y como resulta necesario para mantener el dominio presente en internet. Ahora viene el truco del que os hablaba antes: pulsad en “Create nameserver”

Como podeis ver, mis dos DNS apuntan a la misma dirección IP. Vosotros haced lo mismo: dadle un nombre de host, el que querais, y ponedle la dirección IP pública que tengais.

Una vez creados, apuntad los nombres de DNS y ya hemos terminado ;-)

Instalando Bind

Esto ya está… “chupao”.

Entrad en vuestro equipo servidor, haceos root y ejecutad un apt-get install bind9 (los que tengais Centos/Fedora o similares, haced lo mismo con un yum install bind9)

Fin del capítulo, ahora viene lo que más asusta, pero creedme que es muy fácil.

Configurando Bind

Ahora iros al directorio de configuración de bind con un cd /etc/bind, y mirad lo que hay dentro:

Esta captura contiene:

  • los archivos de bind, que son: db.0, db.127, db.255, db.empty, db.local, db.root, named.conf, named.conf.local, named.conf.options, rndc.key y zones.rfc.1918
  • Los dominios que tengo alojados en mi equipo, que son: db.alfonsoarjona.net, db.cassfa.com, db.cassfa.net y db.cassfa.org

Pues bien, nos interesan dos archivos: named.conf y db.alfonsoarjona.net

named.conf contiene esto:

// This is the primary configuration file for the BIND DNS server named. // // Please read /usr/share/doc/bind9/README.Debian.gz for information on the // structure of BIND configuration files in Debian, *BEFORE* you customize // this configuration file.
//// If you are just adding zones, please do that in /etc/bind/named.conf.local// prime the server with knowledge of the root servers
zone “.” { type hint; file “/etc/bind/db.root”; };
// be authoritative for the localhost forward and reverse zones, and for // broadcast zones as per RFC 1912
zone “localhost” { type master; file “/etc/bind/db.local”; };
zone “127.in-addr.arpa” { type master; file “/etc/bind/db.127″; };
zone “0.in-addr.arpa” { type master; file “/etc/bind/db.0″; };
zone “255.in-addr.arpa” { type master; file “/etc/bind/db.255″; };

Bien, pues añadiremos al final este código:

zone “alfonsoarjona.net” { type master; file “/etc/bind/db.alfonsoarjona.net”; };

Con esto le indicamos que lea del archivo de configuración db.alfonsoarjona.net

Veamos que contiene este archivo:

; BIND data file for local loopback interface
; $TTL 6000 @ IN SOA dns0.alfonsoarjona.net. root.alfonsoarjona.net. ( 20060724 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 )
; Negative Cache TTL    
NS dns0 ;servidor de nombres A 80.59.13.101  
localhost A 127.0.0.1
dns0 A 80.59.13.101
dns1 A 80.59.13.101
mail A 80.59.13.101
www CNAME dns0
wiki CNAME dns0
correo CNAME mail

Esto nos proporciona resolución de los nombres:

  • dns0.alfonsoarjona.net
  • dns1.alfonsoarjona.net
  • mail.alfonsoarjona.net
  • www.alfonsoarjona.net
  • wiki.alfonsoarjona.net
  • correo.alfonsoarjona.net

Como podemos ver, debajo de localhost hay dos líneas que contienen dns0 y dns1. Eso hará que tengamos dos “servidores” DNS para manejar el nombre del dominio.

La sintaxis es simple. Si ponemos “nombre” A “dirección IP”, como por ejemplo “dns0 A 80.59.13.101”, estaremos dando la IP donde actua ese servicio. Si en lugar de A ponemos CNAME, es para indicar que lo que viene detrás es un alias.

En este caso, nos puede dar igual manejar el DNS con A o CNAME, pero en instalaciones mayores resulta bastante cómodo.

Por ejemplo, si tuvieramos varias IP públicas y quisiesemos dedicar una a servicios de web en general, otra a servicios de correo y otra servir archivos multimedia, resulta más claro hacerlo de esta forma:

; BIND data file for local loopback interface
; $TTL 6000 @ IN SOA dns0.alfonsoarjona.net. root.alfonsoarjona.net. ( 20060724 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 )
; Negative Cache TTL NS dns0
;servidor de nombres A 80.59.13.101
localhost A 127.0.0.1
dns0 A 80.59.13.101
dns1 A 80.59.13.101
correo A 80.59.13.101
web A 80.59.13.101
multimedia A 80.59.13.101
www CNAME web
webmail CNAME web
wiki CNAME web
pop3 CNAME correo
smtp CNAME correo
imap CNAME correo
videos CNAME multimedia
audio CNAME multimedia
fotos CNAME multimedia

Lo cual nos proporcionaría resolución para:

  • dns0.alfonsoarjona.net
  • dns1.alfonsoarjona.net
  • correo.alfonsoarjona.net
  • web.alfonsoarjona.net
  • multimedia.alfonsoarjona.net
  • www.alfonsoarjona.net
  • webmail.alfonsoarjona.net
  • wiki.alfonsoarjona.net
  • pop3.alfonsoarjona.net
  • smtp.alfonsoarjona.net
  • imap.alfonsoarjona.net
  • videos.alfonsoarjona.net
  • audio.alfonsoarjona.net
  • fotos.alfonsoarjona.net

Pues bien, una vez hecho esto, sólo nos queda reiniciar el servicio de bind… y listo.
Espero que os sea útil, y si teneis dudas, preguntad con toda confianza ;-)

Conclusiones finales

Como podeis ver, este manual es completamente práctico, y los datos que aparecen son reales.La primera vez que me enfrenté a esto, hace algunos años, no había información al respecto, salvo en un par de libros bastante… digamos que “espesitos”, poco claros y que no ayudaban mucho precisamente.Haced las pruebas, y vereis que es bastante fácil una vez que entendeis como funciona. No hace falta meterse en conocimientos profundos, al menos en este manual, sólo tener ganas de aprender y experimentar.Y un consejo final: no olvideis abrir el puerto 53 UDP del router. Me pasé una tarde completa dándole vueltas a esto por un error que me daba bind, y símplemente era que no podía comunicarse por no haberlo hecho antes.

Tags: , , , ,

2 Responses to " Como controlar tus dominios fácilmente con Bind "

  1. Cesar dice:

    Y como configuro el db.otrodominio.com?

  2. Sito dice:

    Hola Cesar:
    Lo más fácil es añadir al final de “named.conf” una linea debajo de
    zone “alfonsoarjona.net” { type master; file “/etc/bind/db.alfonsoarjona.net”; };
    que sea

    zone “otrodominio.com” { type master; file “/etc/bind/db.otrodominio.com”; };

    Luego copias db.alfonsoarjona.net como db.otrodominio.com, y editas db.otrodominio.com según tus necesidades

    ;)

Leave a Reply

Copyright © 2012 Alfonso Arjona. Some rights reserved.