El servicio DNS
Vicente González Ruiz
December 26, 2013
Contents
El DNS es una de las aplicaciones fundamentales de Internet, con una funci’on
primordial: la de traducir los nombres de los hosts a direcciones IP. El servicio de
nombres de dominio es una gigantesca base de datos distribuida a nivel mundial que
funciona sin pausa, est’a constantemente actualiz’andose y resuelve las consultas en
tiempo real (qu’e m’as se puede pedir?).
El DNS se basa en la arquitectura cliente-servidor. En su consulta m’as frecuente,
los clientes piden resoluciones de nombres de dominio y los servidores las contestan
indicando sus direcciones IP. La comunicaci’on entre ambos se realiza a trav’es del
UDP.
En esta sesi’on pr’actica vamos a aprender a instalar un servidor DNS y a hacer
uso del mismo. Esto genera varias ventajas. La primera y la m’as interesante es que
las consultas son resueltas utilizando un nodo local (en nuestra sub-red), con lo que el
tiempo de acceso se minimiza cuando este nodo almacena en su cach’e una
resoluci’on previa. La segunda es que descargamos de trabajo al resto de servidores
de la jerarqu’ia, cosa que algunos administradores nos agradecer’an. Tambi’en
aprenderemos a realizar consultas de diversa ’indole con el objetivo de aprender qu’e
posibilidades ofrece el sistema DNS.
1 Los nombres de dominio
Un dominio es, b’asicamente hablando, una organizaci’on cualquiera dentro de
Internet que desea ser referenciada mediante un nombre de dominio. Por
ejemplo, la Universidad de Almer’ia es una organizaci’on que posee una serie de
computadoras llamadas de la forma “*.ual.es”. “ual.es” es el nombre del
dominio de la Universidad de Almer’ia. En la pr’actica para mucha gente es
demasiado largo decir “nombre de dominio” y generalmente se dice simplemente
“dominio”.
2 Dominios y subdominios
Es frecuente que un nombre de dominio conste de varios subdominios, normalmente
separados por un punto. Por ejemplo, el dominio “ual.es” es en realidad un
subdominio del dominio “es”.
Este hecho genera una jerarqu’ia de dominios en la que cualquier nodo
p’ublico de Internet puede ser localizado. Por ejemplo, el nodo filabres.ual.es
es un host de la Universidad de Almer’ia, que se trata de una universidad
española.
3 La jerarqu’ia de dominios
En cada dominio normalmente se instala un servidor de nombres de dominio,
tambi’en llamado servidor DNS. Dicho servidor se encarga de mantener la base de
datos de registros DNS para ese dominio. Por ejemplo, en la Universidad de Almer’ia
hay un servidor DNS que conoce todas las resoluciones de las direcciones IP para
todos los hosts con nombres de la Universidad. En concreto, filabres.ual.es
(150.214.156.2) es un servidor DNS del dominio ual.es. Otra forma de decir esto
consiste en llamar a filabres.ual.es el servidor de nombres autorizado para el
dominio ual.es.
4 El proceso de resoluci’on
Normalmente, cuando un servidor DNS no conoce una resoluci’on utiliza otro
servidor DNS situado en un nivel superior en la jerarqu’ia de dominios para intentar
resolverla (o al menos, as’i deber’ia ser). Esta pol’itica de consultas recursivas
finalmente encuentra un servidor DNS que s’i conoce la resoluci’on. Entonces el
registro DNS solicitado viaja desde dicho servidor DNS deshaciendo el camino hasta
el servidor DNS al que inicialmente realizamos la consulta. En este proceso, cada
servidor DNS actualiza su cach’e con esta informaci’on por un determinado periodo
de tiempo.
Por ejemplo, cuando queremos acceder a www.nasa.gov desde un
host de la Universidad de Almer’ia, dicho host deber’ia preguntar a
filabres.ual.es .
Si filabres no almacena en su cach’e la
resoluci’on ,
podr’ia
preguntar al siguiente servidor DNS en la jerarqu’ia que podr’ia ser un
nodo del CICA (Centro Inform’atico Cient’ifico de Andaluc’ia). Si ’este
fallara, preguntar’ia a un servidor de RedIRIS (la red acad’emica y de
investigaci’on nacional), y as’i sucesivamente hasta llegar a un servidor DNS
ra’iz .
Si ’este falla, entonces la consulta comienza a descender por la jerarqu’ia de
servidores DNS hasta llegar al responsable del dominio nasa.gov que necesariamente
debe conocer la resoluci’on.
Existe una versi’on diferente de este algoritmo recursivo que se realiza una
consulta iterativa. La diferencia radica en que cuando un servidor DNS falla en
lugar de hacer ’el la consulta le indica al cliente a qu’e otro servidor DNS
puede preguntar. Este proceso, sin embargo, no actualiza las cach’es de los
servidores.
5 Instalaci’on de un servidor DNS
Para convertir un host con Linux en un servidor DNS basta con instalar el programa
BIND (Berkeley Internet Name Domain) (http://www.isc.org/products/BIND):
-
Debian’s distros:
-
root# apt-get install bind9 bind9-doc dnsutils
-
Red Hat’s distros:
-
root# yum install bind bind-utils caching-nameserver system-config-bind
-
Gentoo’s distros:
-
root# emerge bind bind-utils
6 Configuraci’on del servidor DNS
El servidor puede configurarse para ofrecer servicio de tres formas diferentes:
- Como servidor de nombres autorizado del dominio X: Si almacena
los registros de resoluci’on para los hosts del dominio X.
- Como servidor de nombres r’eplica: Si mantiene una copia de los
registros de otro servidor DNS.
- Como servidor s’olo cach’e: Cuando no almacena ning’un registro,
excepto los adquiridos en las consultas.
La primera configuraci’on es la que utilizar’ia el administrador de una
nueva red que desea que sus hosts tengan nombres de dominio asignados. En
dicha configuraci’on se generar’ian los registros de resoluci’on para cada
uno de estos hosts y se almacenar’ian en el servidor de nombres autorizado.
Adem’as, el servidor DNS del ISP deber’ia tener en cuenta el servidor DNS
instalado .
Por desgracia, esto ’ultimo es imposible llevarlo a la pr’actica si no se adquiere
legalmente un dominio y negociamos la delegaci’on del dominio con el correspondiente
ISP.
Aunque parezca que esta forma de configurar el DNS es demasiado burocr’acica,
en realidad hay razones de peso para hacerse as. Si este tema no estuviera
suficientemente controlado, un usuario malicioso puede inventarse un dominio con el
objetivo de introducir “ruido” en el DNS con la idea de desviar conexiones hacia
un conjunto determinados de servidores (probablemente controlados por
dicho usuario malicioso). Por estos motivos, en esta ocasi’on no vamos a
instalar un servidor DNS autorizado. Sin embargo, bastar’ia con modificar
el fichero de configuraci’on correspondiente y construir los registros DNS
utilizando alguna herramienta como system-config-bind de Red Hat Linux. La
parte de la delegaci’on del dominio es otro tema que ya no depende s’olo de
nosotros.
La segunda configuraci’on sirve para aumentar la fiabilidad del DNS ya que
permite replicar los registros de resoluci’on. As’i, si uno de los servidores de nombres
autorizado fallase, el otro pasar’ia a resolver las consultas. Por ejemplo, en la
Universidad de Almer’ia hay un servidor DNS autorizado para el dominio
ual.es (filabres.ual.es, 150.214.156.2) y otro r’eplica (alboran.ual.es,
150.214.156.32). Instalar un servidor DNS r’eplica plantea los mismos problemas de
seguridad que instalar uno autorizado y adem’as, una replicaci’on sin control
constituye un buen ataque por denegaci’on de servicio. Por estos motivos,
desistiremos tambi’en de realizar dicha opci’on.
Finalmente, la tercera y ’ultima configuraci’on, en la que instalamos un servidor
DNS que funciona en realidad como un proxy DNS, s’i que es posible en cualquier
situaci’on y tiene sentido si queremos reducir el tr’afico a trav’es del gateway de la
red, descargar de trabajo a otros servidores DNS y minimizar el tiempo de resoluci’on
para las m’aquinas a las que servimos. Por suerte, esta configuraci’on es la que por
defecto se instala con BIND.
6.1 Configuraci’on como servidor cach’e
Como hemos indicado anteriormente, en principio no es necesario hacer ninguna
modificaci’on en el fichero named.conf para conseguir que el servidor DNS funcione
como un proxy DNS. Sin embargo, s’i que vamos a hacer un pequeño cambio
para que BIND utilice los servidores DNS m’as pr’oximos cuando la cach’e
falle.
Para hacer esto hay que modificar el fichero named.conf insertando el c’odigo:
forward first;
forwarders {
150.214.156.2;
150.214.156.32;
};
en su secci’on options. Veamos exactamente qu’e hacer en cada distribuci’on:
-
Debian’s:
- La instalaci’on de bind crea el fichero /etc/bind/named.conf
y otros dos ficheros asociados /etc/bind/named.conf.local y
/etc/bind/named.conf.options. El c’odigo anterior debe insertarse en
este ’ultimo fichero.
-
Red Hat’s:
- El fichero que configura el servidor es /etc/named.conf. Para
configurarlo como un servidor DNS cache ejecutar:
root# system-config-bind # Salir sin hacer ninguna modificaci’on
A continuaci’on insertar el c’odigo anterior en el fichero.
-
Gentoo’s:
- La instalaci’on de BIND crea el fichero /etc/bind/named.conf para que
funcione como un DNS cach’e. Simplemente insertaremos el c’odigo anterior en
este fichero.
Finalmente hay que modificar el fichero /etc/resolv.conf indicando que ahora
es localhost el servidor DNS. Si tuvi’eramos m’as hosts en nuestra red local, dicha
modificaci’on deber’ia realizarse en todos ellos.
6.2 Configuraci’on como servidor del dominio X
Aunque realmente no tendra sentido crear un determinado dominio si no se le indica
al resto de servidores DNS que el servidor que vamos a configurar es el responsable de
ese dominio, en esta secci’on vamos a ver qu’e pasos habr’ia que realizar para llevarla
a cabo.
Como ya sabemos, el fichero named.conf es le’ido por Bind cada vez que
’este arranca. Dicho fichero, por defecto, deber’ia incluir la carga del fichero
named.conf.local. En este fichero se definen las zonas (dominios) locales creadas y
mantenidas por el servidor de nombres que estamos configurando. En nuestro caso,
supongamos que estamos declarando el dominio dominio.X. As’i, named.conf.local
deber’ia tener el siguiente contenido:
zone "dominio.X" {
type master;
file "/etc/bind/db.dominio.X";
};
donde /etc/bind/db.dominio.X contiene, a modo de ejemplo:
;$TTL 604800
$TTL 9
@ IN SOA dominio.X. hostmaster.dominio.X. (
2007110701 ; Serial yyyy/mm/dd/id
10800 ; Refresh (3 hours)
7200 ; Retry (2 hours)
1296000 ; Expire (15 days)
172800 ); Negative Cache TTL (2 days)
;
@ IN NS ns0.dominio.X.
@ IN NS ns1.dominio.X.
@ IN MX 10 mail.dominio.X.
@ IN TXT "Servidor"
@ IN HINFO "Servidor privado" "LAN interna"
;
@ IN A 101.102.103.103
* IN A 101.102.103.104
Este ’ultimo fichero define los par’ametros fundamentales del registro de
resoluci’on para el cual nuestro servidor de nombres es el autorizado. De arriba a
abajo se declaran cosas como:
-
TTL 9
- : N’umero m’aximo de saltos a realizar en una consulta DNS.
-
2007110701
- : El instante de creaci’on del dominio dominio.X (año, mes, d’ia e
identificador).
-
10800
- : El tiempo de frescura (medido en segundos) del registro en un servidor
de nombres cach’e. 3 horas.
-
7200
- : Ante una falta del registro, un servidor de nombres no deber’ia reclamarlo
a otro servidor no antes de 2 horas.
-
1296000
- : Los servidores de nombres borrar’an este registro de sus cach’es a los
15 d’ias.
-
NS
- : Name Server.
-
MX
- : Mail eXchanger.
-
101.102.103.103
- : Direcci’on IP del host que corre nuestro servidor de
nombres.
7 Configuraci’on del cliente
La ’unica opci’on de configuraci’on que permiten los clientes es la especificaci’on del
(o los) servidor(es) DNS. En Linux esta informaci’on est’a declarada en el
fichero:
/etc/resolv.conf
quen es texto (ASCII) y puede ser editado como administrador.
8 Ejemplos de consultas
8.1 Cu’ales son mis servidores DNS?
A la hora de determinar el servidor DNS que estamos utilizando existen dos
alternativas:
- Acceder a esta informaci’on en los ficheros de configuraci’on correspondientes.
Por ejemplo, en Linux hay que leer el fichero
/etc/resolv.conf
Evidentemente, esta opci’on s’olo funciona bajo Linux.
En este fichero aparecen al menos la IP de un servidor DNS. Al primero de ellos
se le llama servidor DNS primario y deber’ia ser un servidor DNS pr’oximo, por
motivos de eficiencia. El resto de direcciones IP son los llamados servidores
secundarios porque, en el caso de fallar el primerio, se har’ia uso de
estos.
- Utilizar programas para chequear el funcionamiento del DNS como pueden ser
nslookup y dig. nslookup funciona tanto desde la l’inea de comandos como de
forma interactiva. dig s’olo lo hace desde la l’inea de comandos. Indicar
adem’as que el resultado de la consulta no depende del host, ni de que ’este
pertenezca al dominio por el que estamos preguntando. El resultado
s’olo depende del dominio por el que preguntamos. Veamos algunos
ejemplos:
# Preguntamos a nuestro servidor DNS primario
# el dominio "ual.es"
alumno$ dig ual.es
; <<>> DiG 9.2.4 <<>> ual.es
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65305
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;ual.es. IN A
;; AUTHORITY SECTION:
ual.es. 172800 IN SOA filabres.ual.es.\
postmaster.filabres.ual.es. 2006111502 16400 7200 2592000 172800
;; Query time: 0 msec
;; SERVER: 150.214.156.2#53(150.214.156.2)
;; WHEN: Thu Nov 30 10:26:33 2006
;; MSG SIZE rcvd: 80
En esta consulta, entre mucha otra informaci’on dig indica que el servior DNS
autorizado para el dominio ual.es es filabres.ual.es.
Ejercicio 1: Averigue el (o los) servidor(es) de nombres
autorizado(s) para el dominio google.es.
8.2 Cu’al es la dirección IP del host ...?
En la siguiente consulta preguntamos a nuestro servidores DNS primario (o en su
defecto, secundario) por la dirección IP del host www.google.es:
# Preguntamos a nuestro servidor DNS por la IP de "www.google.es"
alumno$ dig www.google.es
; <<>> DiG 9.2.4 <<>> www.google.es
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46300
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 6, ADDITIONAL: 6
;; QUESTION SECTION:
;www.google.es. IN A
;; ANSWER SECTION:
www.google.es. 167616 IN CNAME www.google.com.
www.google.com. 425476 IN CNAME www.l.google.com.
www.l.google.com. 201 IN A 209.85.129.104
www.l.google.com. 201 IN A 209.85.129.99
www.l.google.com. 201 IN A 209.85.129.147
;; AUTHORITY SECTION:
l.google.com. 81028 IN NS a.l.google.com.
l.google.com. 81028 IN NS b.l.google.com.
l.google.com. 81028 IN NS c.l.google.com.
l.google.com. 81028 IN NS d.l.google.com.
l.google.com. 81028 IN NS e.l.google.com.
l.google.com. 81028 IN NS g.l.google.com.
;; ADDITIONAL SECTION:
a.l.google.com. 23928 IN A 216.239.53.9
b.l.google.com. 23928 IN A 64.233.179.9
c.l.google.com. 14956 IN A 64.233.161.9
d.l.google.com. 81028 IN A 64.233.183.9
e.l.google.com. 14956 IN A 66.102.11.9
g.l.google.com. 21711 IN A 64.233.167.9
;; Query time: 12 msec
;; SERVER: 150.214.156.2#53(150.214.156.2)
;; WHEN: Thu Dec 21 10:39:27 2006
;; MSG SIZE rcvd: 319
Esta respuesta es un poco complicada por dos motivos: (1) www.google.es y
www.google.com son la misma m’aquina cuando hacemos la consulta a nuestro
servidor de nombres y (2), el servidor Web est’a replicado tres veces en las
direcciones IP 209.85.129.104, 209.85.129.147 y 209.85.129.99. Esto puede
comprobarse si preguntamos por www.google.com:
# Preguntamos a nuestro servidor DNS por la IP de "www.google.com"
alumno$ dig www.google.com
; <<>> DiG 9.2.4 <<>> www.google.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20533
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 6, ADDITIONAL: 6
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 420014 IN CNAME www.l.google.com.
www.l.google.com. 207 IN A 209.85.129.104
www.l.google.com. 207 IN A 209.85.129.99
www.l.google.com. 207 IN A 209.85.129.147
;; AUTHORITY SECTION:
l.google.com. 75566 IN NS a.l.google.com.
l.google.com. 75566 IN NS b.l.google.com.
l.google.com. 75566 IN NS c.l.google.com.
l.google.com. 75566 IN NS d.l.google.com.
l.google.com. 75566 IN NS e.l.google.com.
l.google.com. 75566 IN NS g.l.google.com.
;; ADDITIONAL SECTION:
a.l.google.com. 18466 IN A 216.239.53.9
b.l.google.com. 18466 IN A 64.233.179.9
c.l.google.com. 9494 IN A 64.233.161.9
d.l.google.com. 75566 IN A 64.233.183.9
e.l.google.com. 9494 IN A 66.102.11.9
g.l.google.com. 16249 IN A 64.233.167.9
;; Query time: 1 msec
;; SERVER: 150.214.156.2#53(150.214.156.2)
;; WHEN: Thu Dec 21 12:10:30 2006
;; MSG SIZE rcvd: 292
Adem’as, como puede verse www.google.com es un alias de www.l.google.com.
8.3 Cu’ales son los servidores de nombres del dominio ...?
# Preguntamos por el dominio "mit.edu"
alumno$ dig mit.edu
; <<>> DiG 9.2.4 <<>> mit.edu
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10644
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
;; QUESTION SECTION:
;mit.edu. IN A
;; ANSWER SECTION:
mit.edu. 60 IN A 18.7.22.69
;; AUTHORITY SECTION:
mit.edu. 14655 IN NS BITSY.mit.edu.
mit.edu. 14655 IN NS STRAWB.mit.edu.
mit.edu. 14655 IN NS W20NS.mit.edu.
;; ADDITIONAL SECTION:
BITSY.mit.edu. 14655 IN A 18.72.0.3
STRAWB.mit.edu. 8735 IN A 18.71.0.151
W20NS.mit.edu. 8735 IN A 18.70.0.160
;; Query time: 158 msec
;; SERVER: 150.214.156.2#53(150.214.156.2)
;; WHEN: Thu Dec 21 12:20:46 2006
;; MSG SIZE rcvd: 157
Podemos ver que existen tres servidores de nombres autorizados para el dominio
“bit.edu”.
Ejercicio 2: Encuentre los servidores nombres autorizados de un
dominio que conozca. A qu’e servidor de nombres ha consultado?
8.4 C’omo interrogamos a otro servidor DNS?
# Preguntamos al servidor DNS "bitsy.mit.edu" por el host "www.google.es"
alumno$ dig @bitsy.mit.edu www.google.es
; <<>> DiG 9.2.4 <<>> @bitsy.mit.edu www.google.es
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7735
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 7, ADDITIONAL: 7
;; QUESTION SECTION:
;www.google.es. IN A
;; ANSWER SECTION:
www.google.es. 304614 IN CNAME www.google.com.
www.google.com. 557306 IN CNAME www.l.google.com.
www.l.google.com. 174 IN A 64.233.161.104
www.l.google.com. 174 IN A 64.233.161.99
www.l.google.com. 174 IN A 64.233.161.147
;; AUTHORITY SECTION:
l.google.com. 72376 IN NS c.l.google.com.
l.google.com. 72376 IN NS f.l.google.com.
l.google.com. 72376 IN NS d.l.google.com.
l.google.com. 72376 IN NS b.l.google.com.
l.google.com. 72376 IN NS e.l.google.com.
l.google.com. 72376 IN NS g.l.google.com.
l.google.com. 72376 IN NS a.l.google.com.
;; ADDITIONAL SECTION:
c.l.google.com. 40415 IN A 64.233.161.9
f.l.google.com. 72376 IN A 72.14.235.9
d.l.google.com. 38903 IN A 64.233.183.9
b.l.google.com. 38903 IN A 64.233.179.9
e.l.google.com. 38903 IN A 66.102.11.9
g.l.google.com. 44316 IN A 64.233.167.9
a.l.google.com. 39459 IN A 216.239.53.9
;; Query time: 231 msec
;; SERVER: 18.72.0.3#53(bitsy.mit.edu)
;; WHEN: Thu Dec 21 12:15:01 2006
;; MSG SIZE rcvd: 351
Ahora preguntamos al servidor DNS “bitsy.mit.edu” por el host “www.google.com”:
# Preguntamos al servidor DNS "bitsy.mit.edu" por el host "www.google.com"
alumno$ dig @bitsy.mit.edu www.google.com
; <<>> DiG 9.2.4 <<>> @bitsy.mit.edu www.google.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29537
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 7, ADDITIONAL: 7
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 557281 IN CNAME www.l.google.com.
www.l.google.com. 149 IN A 64.233.161.99
www.l.google.com. 149 IN A 64.233.161.147
www.l.google.com. 149 IN A 64.233.161.104
;; AUTHORITY SECTION:
l.google.com. 72351 IN NS c.l.google.com.
l.google.com. 72351 IN NS f.l.google.com.
l.google.com. 72351 IN NS d.l.google.com.
l.google.com. 72351 IN NS b.l.google.com.
l.google.com. 72351 IN NS e.l.google.com.
l.google.com. 72351 IN NS g.l.google.com.
l.google.com. 72351 IN NS a.l.google.com.
;; ADDITIONAL SECTION:
c.l.google.com. 40390 IN A 64.233.161.9
f.l.google.com. 72351 IN A 72.14.235.9
d.l.google.com. 38878 IN A 64.233.183.9
b.l.google.com. 38878 IN A 64.233.179.9
e.l.google.com. 38878 IN A 66.102.11.9
g.l.google.com. 44291 IN A 64.233.167.9
a.l.google.com. 39434 IN A 216.239.53.9
;; Query time: 156 msec
;; SERVER: 18.72.0.3#53(bitsy.mit.edu)
;; WHEN: Thu Dec 21 12:15:25 2006
;; MSG SIZE rcvd: 324
Como podemos ver, ambas respuestas son id’enticas (como en el caso de
preguntar a filabres), pero diferentes comparadas con las que devuelve nuestro
servidor de nombres. Esto significa que, si nos conectamos a www.google.es desde el
MIT, veremos la versi’on americana de google.
Finalmente, n’otese que el servidor DNS no devuelve las direcciones IP de las
r’eplicas del servidor Web siempre en el mismo orden. Esto se utiliza para distribuir
la carga.
Ejercicio 3: Encuentre los servidores nombres autorizados para el
dominio “ual.es” interrogando al servidor DNS “bitsy.mit.edu” (o
a otro que conozca). En esta consuta, est’a usando el servidor DNS
especificado en “/etc/resolv.conf”?
8.5 Averiguando la jerarqu’ia de servidores DNS
Como hemos comentado anteriormente, cuando consultamos a un servidor DNS sobre
una direcci’on para la cual ’el no es el servidor DNS autorizado lo m’as frecuente es
que ’este tenga que consultar a otro servidor DNS (consulta recursiva) o nos
indique a qu’e otro servidor DNS podemos preguntar nosotros (consulta
iterativa).
Activando el flag +trace de dig podemos conocer qu’e servidores DNS se han
consultado. En el siguiente ejemplo preguntamos a bitsy.mit.edu por la dirección
IP del host gogh.ace.ual.es:
alumno$ dig +trace @bitsy.mit.edu gogh.ace.ual.es
; <<>> DiG 9.2.4 <<>> +trace @bitsy.mit.edu gogh.ace.ual.es
;; global options: printcmd
. 488373 IN NS a.root-servers.net.
. 488373 IN NS h.root-servers.net.
. 488373 IN NS c.root-servers.net.
. 488373 IN NS g.root-servers.net.
. 488373 IN NS f.root-servers.net.
. 488373 IN NS b.root-servers.net.
. 488373 IN NS j.root-servers.net.
. 488373 IN NS k.root-servers.net.
. 488373 IN NS l.root-servers.net.
. 488373 IN NS m.root-servers.net.
. 488373 IN NS i.root-servers.net.
. 488373 IN NS e.root-servers.net.
. 488373 IN NS d.root-servers.net.
;; Received 436 bytes from 18.72.0.3#53(bitsy.mit.edu) in 158 ms
es. 172800 IN NS NS3.NIC.FR.
es. 172800 IN NS SUN.REDIRIS.es.
es. 172800 IN NS SUNIC.SUNET.SE.
es. 172800 IN NS NS.UU.NET.
es. 172800 IN NS NS1.NIC.es.
es. 172800 IN NS AUNIC.AUNIC.NET.
es. 172800 IN NS NS1.CESCA.es.
es. 172800 IN NS NS2.NIC.es.
;; Received 352 bytes from 198.41.0.4#53(a.root-servers.net) in 134 ms
ual.es. 7200 IN NS chico.rediris.es.
ual.es. 7200 IN NS alboran.ual.es.
ual.es. 7200 IN NS filabres.ual.es.
ual.es. 7200 IN NS sun.rediris.es.
ual.es. 7200 IN NS dns1.cica.es.
ual.es. 7200 IN NS dns2.cica.es.
;; Received 263 bytes from 192.134.0.49#53(NS3.NIC.FR) in 49 ms
ace.ual.es. 172800 IN NS filabres.ual.es.
ace.ual.es. 172800 IN NS alboran.ual.es.
;; Received 110 bytes from 130.206.1.3#53(chico.rediris.es) in 37 ms
gogh.ace.ual.es. 172800 IN A 193.147.118.57
ace.ual.es. 172800 IN NS filabres.ual.es.
ace.ual.es. 172800 IN NS alboran.ual.es.
;; Received 126 bytes from 150.214.156.2#53(filabres.ual.es) in 0 ms
Como podemos ver, bitsy.mit.edu consulta (en la versi’on recursiva) al servidor
de nombres ra’iz a.root-servers.net, que consulta a NS3.NIC.FR, que consulta a
chico.rediris.es, que consulta a filabres.ual.es.
Ejercicio 4: Determine qu’e servidor(es) DNS de nivel m’as bajo
tienen en com’un los servidores DNS de la Universidad de Almer’ia
y los de la Universidad de C’ordoba.
8.6 Resoluci’on inversa
Finalmente, tambi’en podemos interrogar al servidor DNS por el nombre de un host a
partir de su direccion IP:
# Preguntamos al servidor DNS por el nombre del host que tiene la IP
# 193.147.118.57
alumno$ dig -x 193.147.118.57
; <<>> DiG 9.2.4 <<>> -x 193.147.118.57
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44233
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 7
;; QUESTION SECTION:
;57.118.147.193.in-addr.arpa. IN PTR
;; ANSWER SECTION:
57.118.147.193.in-addr.arpa. 172800 IN PTR gogh.ace.ual.es.
;; AUTHORITY SECTION:
118.147.193.in-addr.arpa. 172800 IN NS filabres.ual.es.
118.147.193.in-addr.arpa. 172800 IN NS alboran.ual.es.
118.147.193.in-addr.arpa. 172800 IN NS dns1.cica.es.
118.147.193.in-addr.arpa. 172800 IN NS dns2.cica.es.
118.147.193.in-addr.arpa. 172800 IN NS sun.rediris.es.
118.147.193.in-addr.arpa. 172800 IN NS chico.rediris.es.
;; ADDITIONAL SECTION:
filabres.ual.es. 172800 IN A 150.214.156.2
alboran.ual.es. 172800 IN A 150.214.156.32
dns1.cica.es. 163357 IN A 150.214.5.83
dns2.cica.es. 3265 IN A 150.214.4.35
sun.rediris.es. 15046 IN A 130.206.1.2
chico.rediris.es. 15295 IN A 130.206.1.3
dns2.cica.es. 127925 IN AAAA 2001:720:c10:9::4
;; Query time: 1 msec
;; SERVER: 150.214.156.2#53(150.214.156.2)
;; WHEN: Thu Dec 21 13:19:57 2006
;; MSG SIZE rcvd: 332
Como podemos ver, el host es gogh.ace.ual.es.
9 Servidores DNS en la Web
Existen servidores Web que prestan servicio DNS. Ejemplos:
http://remote.12dt.com/
http://www.zoneedit.com/lookup.html
Utilice algunas de estas p’aginas Web para comprobar que el resultado coincide con
el que devuelve dig para una determinada consulta.
10 Cuidado con el DNS!
El DNS es uno de los servicios m’as cr’iticos que existen en Internet. A continuaci’on
mostramos algunos de los riesgos m’as importantes a los que nos exponemos
cuando utilizamos un servidor DNS inseguro (m’as informaci’on en BULMA
(http://bulma.net/body.phtml?nIdNoticia=1334)).
- Si definimos un dominio e instalamos un servidor DNS autorizado para
el mismo, estamos obligados a ofrecer informaci’on sobre el dominio
definido. Esto significa que cualquier usuario de Internet puede conocer
qu’e m’aquinas y con qu’e direcciones IP existen en nuestro dominio.
- Los servidores DNS que delegan dominios a otros servidores (es decir, que
ya no son servidores autorizados para ese sub-dominio) est’an obligados
a escuchar las modificaciones que en dichos dominios se producen (en
caso contrario, el DNS no escalar’ia). Si no tenemos cuidado cuando
configuramos nuestro servidor y no controlamos adecuadamente “la
transferencia de dominio”, un hacker puede instalar un servidor DNS y
hacerlo pasar por el servidor DNS autorizado de ese dominio. Si esto
ocurre, puede inyectar informaci’on falsa en el sistema DNS y hacer que
cuando accedamos a un host en realidad entremos en otro. Imagine lo
que ser’ia acceder a nuestra cuenta bancaria a trav’es del host del hacker,
creyendo que estamos enviando los datos al servidor de nuestro banco
cuando en realidad lo estamos haciendo a un host que controla el hacker.
11 DNS + DHCP
Cuando utilizamos el DHCP para gestionar redes p’ublicas en las que las direcciones
IP asignadas son din’amicas, podemos configurar el servidor DHCP para que avise al
servidor DNS autorizado de ese dominio de los cambios que se vayan produciendo en
las asignaciones de las direcciones.
Este sistema tiene una gran ventaja: se gestiona s’olo. Sin embargo, no es muy
recomendable su uso cuando vamos a instalar servicios importantes en los hosts del
dominio. Supongamos que en uno de estos host tenemos un servidor Web que tiene
miles de accesos diarios. En esta situaci’on la dirección IP de este host est’a
diseminada por las cach’es de miles de servidores DNS de toda la Internet. Si dicho
host recibe una nueva IP, muchas resoluciones ser’ian incorrectas hasta que las
cach’es son actualizadas.