29 de febrero de 2008

Configuración servidor DNSConfiguración servidor DNS

Bind es el servidor DNS mas popular en entornos Linux. Necesitábamos tenerlo instalado, y así lo hicimos:

dns# apt-get install bind

apt-get es un gran programa que, al indicarle que instale otro programa (install bind) él solo se baja de internet dicho programa y todo lo que haga falta para que funcione, lo instala y lo deja apunto para que solo tengamos que configurar lo que necesitamos.

Ahora que tenemos bind instalado (en mi caso la versión 8.3.3-REL-NOESW), falta configurarlo adecuadamente.


Normalmente, para configurar un programa en linux, basta editando los archivos apropiados del programa. Los archivos de configuración del bind se encuentran en /etc/bind/. El primer fichero que editaremos será el named.conf, que es el fichero principal de bind. Una recomendación es hacer una copia de seguridad del archivo original antes de editarlo. Utilizaremos el editor llamado vi o vim puesto que es uno de los editores más comunes en entornos Unix/Linux:


Teclearemos lo siguiente:

# cp /etc/bind/named.conf /etc/bind/named.conf.old
# vi /etc/bind/named.conf

Nos fijamos que en la segunda página se repite bastante una parte de código parecida a esto:

zone "localhost" {
type master;
file "/etc/bind/db.local";
};

Bien, nos dirigiremos al final del archivo y añadiremos lo siguiente:

zone "dominio.org" {
type master;
file "/etc/bind/db.dominio.org";
};


Esas líneas definen una nueva zona, dominio.org, sobre la que se ejerce el control, y el fichero (file) de configuración de esta zona se encontrará en /etc/bind/db.dominio.org. Guardaremos los cambios y saldremos (:wq).

Ahora falta crear el fichero db.dominio.org, y como que el formato del archivo es parecido al ya existente /etc/bind/db.local, haremos una copia de éste con el nombre db.dominio.org sobre el cual modificaremos a nuestro parecer:

# cp /etc/bind/db.local /etc/bind/db.dominio.org
# vi /etc/bind/db.dominio.org

El archivo db.dominio.org tiene que quedar parecido a este:

-Inicio del archivo (esto no debe incluirse)-

;
; BIND data file for dominio.org
;
$TTL 604800
dominio.org. IN SOA dns.dominio.org. root.localhost. (

1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL


IN NS dns.dominio.org.

IN A 80.80.80.80

IN MX 10 mail.dominio.org.
dns IN A 80.80.80.80

mail

IN A 80.80.80.80
www IN CNAME dns
ftp IN CNAME dns


-Fin (esto tampoco debe incluirse)-

Para entender esto:

Lo que sigue después de ";" es ignorado como código, se interpretan como comentario. En las siguientes líneas se entiende que dominio.org se encuentra en la máquina dns.dominio.org (host local de la máquina donde está el servidor DNS), y el encargado de este dominio es root.localhost. (no olvidar poner los puntos en dominio.org. dns.dominio.org. y root.localhost.). El Serial, Refresh y todo esto lo dejamos como está, son tiempos de expiración y otros. Luego se le indica que el servidor DNS (NS) se encuentra en dns.dominio.org. (otra vez lo del punto final) y utiliza como servidor de email (MX)con prioridad máxima (10) (se puede poner la prioridad que se quiera, y la máxima, caso de especificar varios registros MX, es aquella con un número menor) la máquina mail.dominio.org., cuya dirección IP en Internet es 80.80.80.80, y por consiguiente, que el alias dns también está en 80.80.80.80. En este caso, que no hemos puesto punto al final de dns, automáticamente bind lo interpreta de manera
que le añade dominio.org al final, quedando de la manera dns.dominio.org. Lo mismo ocurre con www, ftp y mail pero la etiqueta CNAME matiza que se tratan de tres alias de dns, por lo que si sigues la cadena, tenemos que valen la misma IP que dns, que es lo que nos interesa: tener el servidor web, ftp, dns y mail en la misma máquina. De esta manera, www.dominio.org, ftp.dominio.org, mail.dominio.org y dns.dominio.org se refieren a la misma IP de nuestro ordenador.

Después de esta confusa explicación, debemos poner en marcha named (bind):

# /etc/init.d/bind restart

Lo de restart es porque al haber hecho antes apt-get install bind él solo se ejecuta después de instalarse, con la configuración por defecto que lleva.

Ahora podemos comprobar si todo ha ido bien con el comando siguiente:

# dig @localhost dominio.org

Tendría que salir algo parecido a esto:

; <<>> DiG 9.2.1 <<>> @localhost dominio.org
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63073
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;dominio.org. IN A

;; ANSWER SECTION:
dominio.org. 604800 IN A 80.80.80.80

;; AUTHORITY SECTION:
dominio.org. 604800 IN NS dns.dominio.org.

;; ADDITIONAL SECTION:
dns.dominio.org. 604800 IN A 80.80.80.80

dig se encarga de mirar la configuración de dominio.org utilizando como servidor DNS el que nosotros le indiquemos después de la @. Ya que nos interesa que utilice el servidor DNS que hemos montado nosotros para probar si funciona correctamente, que se encuentra en nuestra máquina local, le escribiremos después de la @ localhost.

Podríamos decir que ya tenemos nuestro propio servidor DNS.

Pero no estamos aún, el ordenador que hace de servidor está detrás de un router, en una red interna, y deberemos abrir el puerto 53 del router (puerto que utiliza el bind para las peticiones DNS) y redirigirlo al puerto 53 del servidor DNS de la intranet.

Desde el servidor Linux haremos un telnet a la IP del router:

# telnet 192.168.0.1
Trying 192.168.0.1...
Connected to 192.168.0.1.
Escape character is '^]'.
login:


Introduciremos el login y la contraseña adecuada y una vez dentro del router teclearemos lo siguiente:

3Com-DSL>add nat tcp vc internet public_port 53 private_port 53 private_address 192.168.0.5

3Com-DSL>add nat udp vc internet public_port 53 private_port 53 private_address 192.168.0.5

Esto hace lo dicho anteriormente: abre el puerto 53 del router (public_port 53) y envía las peticiones que le llegan, a la máquina 192.168.0.5 que se encuentra dentro de la red (private_address 192.168.0.5) , al puerto 53 de esa máquina (private_port 53). Con lo de tcp y udp indicamos que se valide por esos dos protocolos (esta operación que hace el router se denomina NAT, Network Address Translation / Traducción de dirección de red).

Le decimos al router que guarde los cambios y reinicie para que los cambios tengan efecto:

3Com-DSL>save all
3Com-DSL>reboot

Esperamos un par de minutos más, y todo está listo para que, cuando en el registro de dominio.org se nos pregunte por un servidor DNS, poner el que hemos montado: dns.dominio.org como primario y cualquier otro servidor DNS como secundario.

No lo expliqué antes, pero nos piden dos servidores, uno primario y otro secundario, por si el primario dejara de funcionar alguna vez, podamos seguir visitando la web gracias al DNS secundario. En este caso, pusimos como secundario un DNS de Terra, que podría haber sido cualquier otro. Si nuestro servidor DNS se apagara por alguna razón, se cogería el secundario, pero como el de Terra no tiene ninguna información acerca de dominio.org, no podría mostrarnos la página. De todas maneras, si se apagara el servidor DNS, tampoco podríamos dar servicio de WEB, ya que se trata del mismo ordenador.

Los cambios de configuración en el DNS son lentos, y no será hasta unas horas después (incluso hasta 48 horas) que podremos comprobar los resultados.

No hay comentarios: