Domain Name System
Ing. Carlos A. Barcenilla <[email protected]>
Ing. Agustín Eijo <[email protected]>
1
¿Qué es DNS?
DNS es una base de datos distribuida, jerárquica y
redundante.
La información se mantiene en servidores de nombres
(name servers).
La estructura de la base de datos es un árbol invertido
con la raíz en la parte superior (a la raíz a se la llama “.”).
Cada nodo del árbol representa una partición o dominio,
el cual puede ser dividido a su vez en subdominios. 2
Estructura del árbol DNS
Dominio Root
Es el más alto en la jerarquía, se expresa con un punto (.)
Dominios Top-Level
com, org, net, edu, mil, gov, gob, biz, info, arpa, ar, uy, us, uk, ca, py, es, de, uy, tv, ….
Dominios de segundo nivel
Contienen hosts
Contienen subdominios
ar com edu
utn
frlp
edu
abc
www
.
3
Nombres de dominio
Un FQDN (Fully Qualified Domain Name) identifica a un conjunto de registros dentro del DNS.
Los nombres de dominio se expresan como secuencias de etiquetas (labels).
Cada etiqueta está formada por un campo de longitud (1 byte) seguido por ese número de bytes conteniendo el nombre de la etiqueta.
Todos los nombres de dominio terminan en el dominio raíz, el cual se representa con una etiqueta de longitud 0 (ocupa 1 byte)
La representación de un nombre de dominio no debe exceder los 255 bytes.
3 www 4 frlp 3 utn 2 ar 0 3 edu
www.frlp.utn.edu.ar
4
Consultas Recursivas e Iterativas
Consultas Recursivas:
El servidor al que se le pregunta debe responder con:
• Los datos que se le pidieron.
• Un error.
El servidor no puede responder con una referencia hacia otro
servidor.
Consultas Iterativas:
El servidor responde con los datos que tiene, puede responder:
• El nombre solicitado.
• Una referencia hacia otro servidor.
• Un error.
5
Consultas Recursivas e Iterativas
Servidor Raíz
Servidor de zona
frlp.utn.edu.ar
Servidor Local
10
Consulta
Recursiva
Consultas
Iterativas
Servidor de zona
edu.ar
Servidor de zona
ar
Servidor de zona
utn.edu.ar11
9
8
7
6
5
4
3
2
121
6
Mensajes DNS
Todos los mensajes tienen el mismo formato general
Header: especifica cuales son las secciones presentes, el tipo de mensaje y otros campos.
Question: campos que definen una consulta a un servidor de nombres.
Answer: RRs que responden a la consulta.
Authority: RRs que apuntan a los servidores de nombre autoritativos.
Additional: RRs que contienen información adicional
Header (siempre presente)
Question
Answer
Authority
Additional
7
Header de los mensajes DNS
ID: debe coincidir entre las consultas y las respuestas. QR: Indica si es una consulta o una respuesta. OPCODE:
Standard Query (0) Inverse Query (1) Server Status Request (2)
AA: Respuesta autoritativa. TC: Mensaje truncado.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ID
QR Opcode AA TC RD RA Z RCODE
QDCOUNT
ANCOUNT
NSCOUNT
ARCOUNT
RD: Consulta recursiva. RA: Indica si el servidor soporta consultas recursivas. Z: Reservado. RCODE: Código de respuesta. QDCOUNT / ANCOUNT / NSCOUNT / ARCOUNT: Cantidad de registros en cada una de las secciones (Query, Answer, Authority, Additional)
8
Sección QUESTION
Ésta sección se usa para transportar la consulta. Sus parámetros definen qué es lo que se está preguntando.
QNAME: Un nombre de dominio representado como una secuencia de etiquetas.
QTYPE: Un código de dos bytes que especifica el tipo de RR por el que se consulta (A, NS, PTR, ANY,…).
QCLASS: La clase del registro (Normalmente IN).
0 1 2 3 4 5 6 7 8 9 10
11
12
13
14
15
QNAME
QTYPE
QCLASS
Por ejemplo:
QNAME: www.ieee.org
QTYPE: A
QCLASS: IN
Consulta por la dirección IP correspondiente al sitio web de IEEE.
9
Formato de los RRs
Las secciones ANSWER, AUTHORITY Y ADDITIONAL contienen RRs.
Todos los RRs tienen el mismo formato general
Name: el nombre del nodo al que el RR pertenence.
Type: código de RR.
Class: clase del RR (IN para Internet).
TTL: el tiempo de vida del RR en segundos.
RDLength: longitud de la sección RDATA.
RDATA: Datos correspondientes al RR, el formato varía según el tipo de RR.
0 1 2 3 4 5 6 7 8 9 10
11
12
13
14
15
NAME
TYPE
CLASS
TTL
RDLENGTH
RDATA
10
Compresión de mensajes
Para reducir el tamaño de los mensajes DNS utiliza un esquema de compresión que elimina la repetición de nombres de dominio
Un nombre de dominio completo o una lista de etiquetas al final de un nombre de dominio se reemplazan por un puntero a una ocurrencia previa del mismo nombre.
3 www 4 frlp 3 utn 2 ar 0 3 edu
3 ns1 5 lines 3 edu 0
3 ns2 P
3 www P 4 frcu
www.frlp.utn.edu.ar
ns1.lines.edu
ns2.lines.edu
www.frcu.utn.edu.ar
11
Compresión de mensajes
El puntero es una etiqueta especial que ocupa dos bytes.
En las etiquetas normales el primer byte indica la longitud. Las etiquetas pueden tener una longitud de hasta 63 bytes. Por lo tanto los primeros bits de este byte toman el valor 0.
En los punteros los dos primeros bits toman el valor 1, permitiendo distinguir un puntero de una etiqueta normal. Los restantes 14 bits representan un OFFSET a partir del inicio del mensaje.
La compresión permite que un nombre de dominio sea:
Una secuencia de etiquetas terminando en un byte 0.
Un puntero.
Una secuencia de etiquetas terminando en un puntero.
12
Registro de Recurso “A”
$ dig @170.210.16.2 A mit.edu ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4335 ;; flags: qr aa rd ra ;; QUERY: 1, ANSWER: 4, AUTHORITY: 3, ADDITIONAL: 3 ;; QUESTION SECTION: ;mit.edu. IN A ;; ANSWER SECTION: mit.edu. 600 IN A 18.7.21.110 mit.edu. 600 IN A 18.7.21.77 mit.edu. 600 IN A 18.7.21.69 mit.edu. 600 IN A 18.7.21.70 ;; AUTHORITY SECTION: mit.edu. 21600 IN NS BITSY.mit.edu. mit.edu. 21600 IN NS STRAWB.mit.edu. mit.edu. 21600 IN NS W20NS.mit.edu. ;; ADDITIONAL SECTION: BITSY.mit.edu. 21600 IN A 18.72.0.3 STRAWB.mit.edu. 21600 IN A 18.71.0.151 W20NS.mit.edu. 21600 IN A 18.70.0.160
El registro A representa una dirección IPv4. Los hosts que tienen varias direcciones IP tienen múltiples registros A Se representa en los archivos de zona con el formato decimal separado por puntos En el ejemplo se observa que el nombre mit.edu tiene cuatro registros A
13
Registro de Recurso “CNAME”
$ dig @170.210.16.2 CNAME www.yahoo.com ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32440 ;; flags: qr aa rd ra ;; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 5 ;; QUESTION SECTION: ;www.yahoo.com. IN CNAME ;; ANSWER SECTION: www.yahoo.com. 1800 IN CNAME www.yahoo.akadns.net. ;; AUTHORITY SECTION: yahoo.com. 172800 IN NS ns1.yahoo.com. yahoo.com. 172800 IN NS ns2.yahoo.com. yahoo.com. 172800 IN NS ns3.yahoo.com. yahoo.com. 172800 IN NS ns4.yahoo.com. yahoo.com. 172800 IN NS ns5.yahoo.com. ;; ADDITIONAL SECTION: ns1.yahoo.com. 172800 IN A 66.218.71.63 ns2.yahoo.com. 172800 IN A 209.132.1.28 ns3.yahoo.com. 172800 IN A 217.12.4.104 ns4.yahoo.com. 172800 IN A 63.250.206.138 ns5.yahoo.com. 172800 IN A 64.58.77.85
El registro CNAME especifica el nombre de dominio primario (canónico) correspondiente a un nombre de dominio dado. En el ejemplo se ve que el nombre canónico de www.yahoo.com es www.yahoo.akadns.net
14
Registro de Recurso “MX”
$ dig @170.210.16.2 MX mit.edu ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52676 ;; flags: qr aa rd ra ;; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 5 ;; QUESTION SECTION: ;mit.edu. IN MX ;; ANSWER SECTION: mit.edu. 21600 IN MX 100 FORT-POINT-STATION.mit.edu. mit.edu. 21600 IN MX 200 PACIFIC-CARRIER-ANNEX.mit.edu. ;; AUTHORITY SECTION: mit.edu. 21600 IN NS BITSY.mit.edu. mit.edu. 21600 IN NS STRAWB.mit.edu. mit.edu. 21600 IN NS W20NS.mit.edu. ;; ADDITIONAL SECTION: FORT-POINT-STATION.mit.edu. 21600 IN A 18.7.7.76 PACIFIC-CARRIER-ANNEX.mit.edu. 21600 IN A 18.7.21.83 BITSY.mit.edu. 21600 IN A 18.72.0.3 STRAWB.mit.edu. 21600 IN A 18.71.0.151 W20NS.mit.edu. 21600 IN A 18.70.0.160
El registro MX indentifica a un “mail exchanger” para el dominio dado. Los dos campos de este registros son la preferencia del MX con respecto al los otros MX y el nombre de dominio del MX. Cuando se desea enviar correo electrónico a un dominio se localizan sus registros MX y se envían los mensajes al MX con el número de preferencia menor.
15
Registro de Recurso “NS”
$ dig @170.210.16.2 NS mit.edu ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24361 ;; flags: qr rd ra ;; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 3 ;; QUESTION SECTION: ;mit.edu. IN NS ;; ANSWER SECTION: mit.edu. 126923 IN NS STRAWB.mit.edu. mit.edu. 126923 IN NS W20NS.mit.edu. mit.edu. 126923 IN NS BITSY.mit.edu. ;; ADDITIONAL SECTION: STRAWB.mit.edu. 133604 IN A 18.71.0.151 W20NS.mit.edu. 133604 IN A 18.70.0.160 BITSY.mit.edu. 133604 IN A 18.72.0.3
El registro NS indica cuales son los nombres de servidores que contienen una copia de la zona. El único dato que lleva este tipo de registro es el nombre de dominio del servidor de nombres. En el ejemplo los servidores de dominio para el dominio mit.edu son:
STRAWB.mit.edu W20NS.mit.edu BITSY.mit.edu
16
Registro de Recurso “TXT”
[barce@gnu barce]$ dig @170.210.16.2 TXT frlp.utn.edu.ar ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14135 ;; flags: qr aa rd ra ;; QUERY: 1, ANSWER: 3, AUTHORITY: 3, ADDITIONAL: 3 ;; QUESTION SECTION: ;frlp.utn.edu.ar. IN TXT ;; ANSWER SECTION: frlp.utn.edu.ar. 18000 IN TXT "Location: 60 y 124 / La Plata /
Argentina" frlp.utn.edu.ar. 18000 IN TXT "Phone: +54-221-425-4335" frlp.utn.edu.ar. 18000 IN TXT "UTN FR La Plata" ;; AUTHORITY SECTION: frlp.utn.edu.ar. 18000 IN NS caspa.frlp.utn.edu.ar. frlp.utn.edu.ar. 18000 IN NS tutan.frlp.utn.edu.ar. frlp.utn.edu.ar. 18000 IN NS panda.utn.edu.ar. ;; ADDITIONAL SECTION: caspa.frlp.utn.edu.ar. 18000 IN A 170.210.16.2 tutan.frlp.utn.edu.ar. 18000 IN A 170.210.16.3 panda.utn.edu.ar. 74914 IN A 170.210.22.1
El registro TXT se utiliza para incluir un texto cualquiera en un nombre.
El único dato que lleva este tipo de registro es una cadena de caracteres. En el ejemplo se muestran los registros TXT para el dominio frlp.utn.edu.ar
17
Registro de Recurso “PTR”
$ dig @170.210.16.2 PTR 2.16.210.170.in-addr.arpa ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22590 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3,
ADDITIONAL: 3 ;; QUESTION SECTION: ;2.16.210.170.in-addr.arpa. IN PTR ;; ANSWER SECTION: 2.16.210.170.in-addr.arpa. 86400 IN PTR caspa.frlp.utn.edu.ar. ;; AUTHORITY SECTION: 16.210.170.in-addr.arpa. 86400 IN NS caspa.frlp.utn.edu.ar. 16.210.170.in-addr.arpa. 86400 IN NS tutan.frlp.utn.edu.ar. 16.210.170.in-addr.arpa. 86400 IN NS panda.utn.edu.ar. ;; ADDITIONAL SECTION: caspa.frlp.utn.edu.ar. 18000 IN A 170.210.16.2 tutan.frlp.utn.edu.ar. 18000 IN A 170.210.16.3 panda.utn.edu.ar. 76581 IN A 170.210.22.1
El registro PTR se utiliza para la resolución reversa.
El único dato que lleva este tipo de registro es el nombre de dominio al cual apunta. En el ejemplo el nombre de dominio reverso para la dirección IP 170.210.16.2 es caspa.frlp.utn.edu.ar
18
Registro de Recurso “SOA”
$ dig @170.210.16.2 SOA mit.edu ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6451 ;; flags: qr aa rd ra ;; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3 ;; QUESTION SECTION: ;mit.edu. IN SOA ;; ANSWER SECTION: mit.edu. 21600 IN SOA BITSY.mit.edu. NETWORK-
REQUEST.mit.edu. ( 2772 ;; serial 3600 ;; refresh 900 ;; retry 3600000 ;; expire 21600 ) ;; minimum
El registro SOA indica el inicio de una zona.
Los campos son:
Origin: el nombre del servidor que contienen el archivo maestro para la zona. Person: La casilla de correo correspondiente al responsable de la zona. Serial: el número de versión de la zona. Refresh: Cada cuanto tiempo los servidores esclavos verifican si la zona ha cambiado. Retry: Cada cuanto tiempo se reintenta verificar si la zona ha cambiado.
Expire: el tiempo máximo en el que un servidor esclavo reintenta verificar cambios en la zona.
Minimum: el TTL mínimo que deben tener los registros de esta zona.
19
Transporte UDP
Los mensajes se transmiten utilizando el puerto 53 en el servidor.
La longitud de los mensajes está restringida a 512 bytes.
Los mensajes más largos se truncan y se activa el flag TC en el header, indicando que el mensaje ha sido truncado.
Si se recibe una respuesta con TC, para obtener el mensaje completo debe volverse a preguntar utilizando TCP como transporte.
20
Transporte TCP
Los mensajes se transmiten utilizando el puerto 53 en el servidor.
La longitud de los mensajes está restringida a 65535 bytes. A los mensajes se le agrega un prefijo de dos bytes que indica la longitud del mensaje.
Las transferencias de zona se realizan exclusivamente por TCP.
21
Zonas
Un dominio puede particionarse en distintas zonas.
Una zona es una parte del DNS que contiene RRs con nombres contiguos.
Una zona puede delegar un subdominio en otra zona.
Un servidor se considera autoritativo para una zona si tiene una copia de la misma.
Las zonas son las unidades de replicación del DNS.
frlp
.
ar
edu
utn
www
com . . .
www gnu
Zona
utn.edu.ar
Zona
frlp.utn.edu.ar
Dominio
utn.edu.ar
22
Delegación de subdominios
Para delegar un subdominio se listan los registros NS correspondientes a los servidores del subdominio.
Si el nombre del servidor de dominio al que se delega está dentro del subdominio delegado debe agregarse un “glue record” para especificar la dirección IP del servidor.
Las direcciones IP de los demás servidores se resuelven usando el DNS normalmente.
Zona: edu.ar
$ORIGIN edu.ar.utn IN NS ns1.retina.ar. IN NS ns2.retina.ar. IN NS panda.utn
panda.utn IN A 170.210.22.1
Zona: utn.edu.ar
$ORIGIN edu.ar.utn IN NS ns1.retina.ar. IN NS ns2.retina.ar. IN NS panda.utn
panda.utn IN A 170.210.22.1
$ORIGIN utn.edu.arfrlp IN NS caspa.frlp IN NS tutan.frlp IN NS panda
caspa.frlp IN A 170.210.16.2tutan.frlp IN A 170.210.16.3
Zona: frlp.utn.edu.ar
$ORIGIN utn.edu.arfrlp IN NS caspa.frlp IN NS tutan.frlp IN NS panda
caspa.frlp IN A 170.210.16.2tutan.frlp IN A 170.210.16.3
delega
delega
Glue
Record
Glue
Records
23
Slave
Slave
Slave
zone transfer
zone transfer
zone transfer
Master
Zone: utn.edu.ar
SOAMaster: panda.utn.edu.arSerial: 2002071103Refresh: 7200Retry: 3600Expires: 604800
NSpanda.utn.edu.arns1.riu.edu.ar (slave)ns1.retina.ar (slave)ns2.retina.ar (slave)
Zone: utn.edu.ar
SOAMaster: panda.utn.edu.arSerial: 2002071103Refresh: 7200Retry: 3600Expires: 604800
NSpanda.utn.edu.arns1.riu.edu.ar (slave)ns1.retina.ar (slave)
panda.utn.edu.ar ns1.retina.ar
ns2.retina.ar
panda.utn.edu.ar
Zone: utn.edu.ar
SOAMaster: panda.utn.edu.arSerial: 2002071103Refresh: 7200Retry: 3600Expires: 604800
NSpanda.utn.edu.arns1.riu.edu.ar (slave)ns1.retina.ar (slave)
Zone: utn.edu.ar
SOAMaster: panda.utn.edu.arSerial: 2002071103Refresh: 7200Retry: 3600Expires: 604800
NSpanda.utn.edu.arns1.riu.edu.ar (slave)ns1.retina.ar (slave)
Replicación de zonas
Cada zona está contenida en un archivo
El servidor Master tiene el archivo original de la zona
Los servidores esclavos replican el archivo de zona de acuerdo a lo especificado en el registro SOA
24
Resolución Reversa
Para obtener el nombre de un host a partir de su
dirección IP se utiliza un dominio llamado in-addr.arpa
Las direcciones IP se mapean una a una a un nombre de
dominio que incluye la dirección IP.
Cada nombre de dominio tiene un registro PTR que
contiene el nombre del host.
Ejemplo:
Dirección IP: 170.210.16.2
Subdominio de in-addr.arpa: 2.16.210.170.in-addr.arpa
25
Resolución Reversa
ar
edu
utn 210
arpa
in-addr
170
.
caspa IN A 170.210.16.2
frlp
2 IN PTR caspa.frlp.utn.edu.ar
16
26