Você está na página 1de 34

Introduo s Redes e Protocolos TCP/IP Sesso n7

Jorge Gomes jorge@lip.pt

DNS
(Domain Name System)

Resoluo de Nomes
Os humanos so melhores com nomes do que com nmeros
Memorizar e usar nomes de maquinas em vez de endereos IP mais fcil www.lip.pt 193.136.91.234

Resoluo de nomes:
Atravs de ficheiros locais /etc/hosts Atravs de bases de dados locais (NIS / YP, NIS+) Atravs do DNS

/etc/hosts
Simples de usar:
Cada linha corresponde a um host Formato:
# Endereo-IP nome-canonico aliases

193.136.91.234 127.0.0.1

www.lip.pt localhost.localdomain

www localhost

No possui escalabilidade:
No podemos introduzir todos os sistemas da Internet manualmente No eficiente copiar manualmente o ficheiro para todos os sistemas aps cada actualizao

NIS
O NIS uma forma de distribuir informao de configurao como o /etc/hosts
usado em redes locais

Permite o acesso a um ficheiro de hosts centralizado


Mas no podemos introduzir todos os sistemas da Internet manualmente O NIS relativamente complexo por servir diversos tipos de informao e objectivos

Escolha
Existindo diversas fontes para a informao:
NIS, NIS+, /etc/hosts, DNS

Como que um host (cliente) escolhe a origem da informao ?


Depende do sistema operativo e sua configurao Por exemplo nem todos os sistemas suportam NIS Alguns procuram sempre primeiro no hosts e depois no DNS Outros s usam DNS Em Linux existe o /etc/nsswitch.conf

/etc/nsswitch.conf
passwd: shadow: group: #hosts: hosts: files nisplus nis files files nisplus nis db files nisplus nis dns files dns

#services: nisplus [NOTFOUND=return] files #networks: nisplus [NOTFOUND=return] files #protocols: nisplus [NOTFOUND=return] files #rpc: nisplus [NOTFOUND=return] files #ethers: nisplus [NOTFOUND=return] files #netmasks: nisplus [NOTFOUND=return] files # rpcbootparamd or local file bootparams: nisplus [NOTFOUND=return] files ethers: netmasks: networks: protocols: rpc: services: netgroup: publickey: automount: aliases: files files files files files files nisplus nisplus files nisplus files nisplus

DNS
O DNS uma base de dados distribuda que usada pelas aplicaes TCP/IP para efectuar:
O mapeamento de nomes em endereos IP. O mapeamento inverso de endereos IP em nomes. Encaminhamento de Email, etc

O DNS distribudo porque no existe nenhum sistema na Internet que possua toda a informao.
Os servidores de DNS so responsveis por fornecer a informao.

Os servidores de DNS so mantidos por:


organizaes que possuam um domnio na Internet fornecedores de servio IP

Os servidores e clientes DNS no so implementados no kernel dos sistema operativo.


De facto a pilha de protocolo TCP/IP no sabe da existncia do DNS.

DNS
Os servidores de DNS so implementados como processos (bind / named). Os clientes de DNS so implementados como funes de biblioteca (resolver):
Com as quais a aplicao compilada

As duas funes do DNS mais usadas so:


gethostbyname() : obtm o endereo IP a partir do nome. gethostbyaddr() : obtm o nome a partir de um endereo.

Os dois RFCs relevantes para o DNS so:


RFC 1034 define o conceito e funcionalidade. RFC 1035 especifica os detalhes de implementao.

O esquema de nomes do DNS hierrquico


Similar arvore de directrios de um sistema de ficheiros.

DNS
root arpa com edu gov mil int net org pt uk

...

tw

Domnios De topo Domnios de segundo nvel

in-addr sun

fnal

ripe

linux

uc

co

com

193

www

www

www www

dei

ibm

asus

139 Domnios genricos 44

ftp

www

www

Domnios nacionais Country codes ISO 3166

DNS
Cada n da arvore possui uma etiqueta com at 63 caracteres.
O n de topo no possui nome. No existe distino entre nomes em maisculas e minsculas.

Cada nome completo l-se de baixo para cima separando cada nvel por um ponto e terminando em ponto.
Os nomes que no terminam em ponto tem de ser completados, o modo como so completados dependo do software usado. Um nome que termina em ponto designa-se por Fully Qualified Domain Name (FQDN)

Os domnios de topo mil e gov so para uso dos militares e governo dos Estados Unidos. A informao de topo da arvore de DNS mantida num conjunto de servidores conhecido por root name servers.
Estes servidores mantm informao sobre as delegaes dos domnios de topo

A responsabilidade por outras zonas da arvore delegada.


Uma zona uma sub-arvore da arvore de DNS que administrada separadamente.

DNS
O DNS de topo gerido pelo ICANN:
Existem 13 servidores da root zone do DNS de A a M Mantm uma copia de http://www.internic.net/zones/root.zone
IPv4 address
A B C D 198.41.0.4 192.228.79.201 192.33.4.12 128.8.10.90

IPv6 address

Operator

Location
distributed using anycast Marina Del Rey, California, U.S. distributed using anycast College Park, Maryland, U.S.

Soft
BIND BIND BIND BIND

2001:503:BA3E::2:30 VeriSign 2001:478:65::53 (not in USC-ISI root zone yet) Cogent Communications University of Maryland

E
F G H I J K L M

192.203.230.10
192.5.5.241 192.112.36.4 128.63.2.53 192.36.148.17 192.58.128.30 193.0.14.129 199.7.83.4 202.12.27.33 2001:500:1::803f:235 2001:7fe::53 (testing, not in root zone yet) 2001:503:C27::2:30 2001:7fd::1 2001:500:3::42 2001:dc3::35 2001:500:2f::f

NASA
Internet Systems Consortium Defense Information Systems Agency U.S. Army Research Lab Autonomica VeriSign RIPE NCC ICANN WIDE Project

Mountain View, California, U.S.


distributed using anycast distributed using anycast Aberdeen Proving Ground, Maryland, U.S. distributed using anycast distributed using anycast distributed using anycast distributed using anycast distributed using anycast

BIND
BIND BIND NSD BIND BIND NSD NSD BIND

DNS
Os servidores de topo:
Existe mais de um servidor por detrs de cada endereo IP associado s letras A a M Algumas letras usam anycast

Anycast e DNS:
Permite replicao geogrfica dos servidores Funciona anunciando o mesmo endereo IP via BGP a partir de mltiplas localizaes Na prtica permite que em cada local seja escolhido o servidor mais prximo Permite redundncia Quando um servidor falha a sua rota automaticamente removida Outra rota mais distante passa a ser escolhida

DNS
O ICANN controla tambm diversos domnios TLD genricos:
O registo nestes domnios delegado em registrars

O registo em .com e .net:


operado pela Verisign sobre contrato com o ICANN

O registo em .edu:
operado pelo net.educase.edu Organizao sem fins lucrativos criada pela Internet Society

Domnios nacionais so controlados por entidades nacionais:


O domnio (.pt) controlado pela FCCN (www.dns.pt)

Podem efectuar-se registos atravs:


Agentes de registo (Registrars) (http://www.internic.net/alpha.html) Companhias de web hosting Pagam-se fees anuais

DNS
Muitos domnios de segundo nvel subdividem o seu domnio em mais sub-domnios de acordo:
com a sua estrutura administrativa ou distribuio geogrfica.

Uma vez que a delegao de uma zona (domnio) tenha sido efectuada da responsabilidade da organizao qual a delegao foi efectuada:
Disponibilizar a informao sobre essa zona atravs da implementao de servidores de DNS. Cada vez que um novo sistema adicionado a uma zona o administrador da rede deve introduzir no servidor DNS correspondente o nome e endereo IP do novo sistema.

Cada zona tem de possuir um servidor de DNS primrio e um ou mais servidores de DNS secundrios:
Servidor de DNS primrio: obtm a sua informao a partir de ficheiros em disco. Servidor de DNS secundrio: obtm a sua informao a partir de informao copiada do servidor de DNS primrio.

DNS
Os servidores secundrios existem para garantir a disponibilidade da informao sobre uma zona em caso de falha do servidor primrio.
A transferncia de informao sobre uma zona entre um servidor primrio e um servidor secundrio chama-se transferncia de zona.

As transferncias de zona so sempre efectuadas pelos servidores secundrios e ocorrem quando:


Um servidor de DNS primrio l os ficheiros de configurao em disco e detecta com base no numero de srie da zona que ocorreu uma actualizao. Neste caso o primrio envia uma notificao aos servidores secundrios. Quando os servidores secundrios determinam que houve uma actualizao do primrio atravs de uma verificao peridica do numero de srie da zona. A informao mantida nos servidores secundrios valida durante um perodo limitado de tempo, aps o qual uma nova transferncia de zona tem de ser obrigatoriamente efectuada.

DNS
Quando um servidor que suporta recurso recebe um pedido de informao para uma zona sobre a qual no possui informao
desencadeado um processo iterativo de traduo.

Cada servidor conhece os endereos IP de um ou vrios servidores de DNS responsveis pela root:
Informao sobre os root servers no muda frequentemente Desta forma possvel obter informao sobre os endereos IP dos servidores responsveis pelos domnios de topo. Contactando o servidor de topo pode-se obter informao sobre os servidores responsveis pelos domnios de segundo nvel O processo continua iterativamente at encontrar o servidor responsvel pela zona que contm a informao que se pretende obter, que ento questionado directamente.

Para melhorar o desempenho do DNS cada servidor mantm uma cache com a informao que obteve durante o seu funcionamento.
Cada informao em cache possui um tempo de vida ao fim do qual expira

Formato de Mensagem DNS


Identificao (16) Nmero de questes (16) Nmero de RRs autoritrios (16) Questes RRs com respostas (Nmero varivel de RRs) RRs autoritrios (Nmero varivel) Flags (16) Nmero de RRs de resposta (16) Nmero de RRs adicionais (16)

RRs com informao adicional (Nmero varivel)

O Campo Flags
O campo de flags divide-se em:
QR (1) opcode (4) AA (1) TC (1) RD (1) RA (1) zero (3) rcode (4)

QR: 0 a mensagem uma questo, 1 a mensagem uma resposta. AA: 1 o servidor que est a responder autoritria para a zona. TC: 1 mensagem truncada a 512 bytes (s usado com UDP). RD: 1 quando usado numa query indica que se pretende que o servidor use recursividade para responder query. 0 numa query indica que se o servidor no for autoritrio para a zona deve apenas retornar uma lista de servidores que o sejam.
Um servidor root nunca aceita queries recursivas Cada vez mais servidores tambm possuem esta politica. Devem ser os servidores locais a efectuar a recursividade

RA: usado nas respostas para indicar que o servidor suporta recursividade. RCODE: 0 OK, 3 erro.

O Campo Questes
O campo de questes divide-se em:
Nome a traduzir Tipo de questo (16) Classe da questo ( 1 = IP) (16)

Nome a traduzir: sequncia de etiquetas que so precedidas por um byte com o numero de caracteres de cada etiqueta e terminando com um byte com valor zero.
ns.dns.pt.
2 n s 3 d n s 2 p t 0

Tipo de questo: o tipo de questo indica o tipo informao (RR) que se pretende obter:
Nome A NS CNAME PTR HINFO MX AXFR ANY Valor 1 2 5 12 13 15 252 255 Descrio da informao a obter Endereo IP Name server responsvel por um domnio Nome cannico, um nome virtual que aponta para o nome real Nome a partir de endereo (Pointer) Informao sobre o host, duas strings com CPU e sist. operativo Nome e prioridade do servidor de email para um host / domnio Pedido de transferncia de zona Obteno de todos os registos

Formato das respostas DNS


Nome do domnio Tipo de RR (16) Tempo de vida (32) Tamanho dos dados (16) Classe (16)

Dados

Nome do domnio: nome ao qual os dados (RR) corresponde. Tipo: especifica um dos tipos de RR tal como nas questes. Tempo de vida: nmero de segundos que um cliente DNS pode manter esta informao em cache (2 dias um valor usual). Tamanho dos dados: Nmero de bytes do campo de dados. Dados: resposta depende do tipo de RR. Para um endereo IP so quatro bytes. Para nomes usado o formato mencionado anteriormente.

Exemplo com um Cliente


Pretende-se fazer ssh para uma maquina usando o seu nome:
usada a funo gethostbyname para obter o endereo IP do sistema. O cliente de DNS determina o endereo IP do servidor de DNS a usar com base em informao de configurao existente em armazenamento local.
Podem existir vrios servidores configurados para redundncia.

Envia uma query para o servidor de DNS usando UDP. A query usa:
O bit RD a 1 (deseja-se recursividade) O bit QR a 0 ( uma questo) Classe 1 (questo sobre IP) Tipo 1 (pretende-se obter um RR do tipo A endereo IP)

O servidor verifica se possui informao sobre a zona correspondente ao nome que se pretende traduzir:
Pode existir em cache ou numa zona localmente suportada Caso afirmativo responde imediatamente ao cliente usando UDP. Se for primrio para a zona a resposta ter o bit de autoritrio a 1. Caso contrario contactar outros servidores para obter a informao.

Mapeamento Reverso
possvel obter o nome correspondente a um endereo IP atravs da funo gethostbyaddr() Para este efeito existe o domnio in-addr.arpa. As varias classes de endereos IP atribudas podem ser registadas como sub-domnios debaixo deste domnio. Para efectuar o mapeamento inverso da rede 193.139.77.0 / 24 necessria a delegao do domnio 77.139.193.in-addr.arpa a um servidor de DNS. O servidor deve usar registos PTR para efectuar o mapeamento entre os endereos IP e o nome correspondente. O mapeamento reverso frequentemente usado pelos servidores (por ex. o SSH) para verificar que os clientes tm origem em domnios de confiana Um cliente que no tenha um mapeamento reverso frequentemente considerado suspeito

Exemplo com um Servidor


Um servidor de DNS local recebe uma questo:
pedido com recursividade obteno de um endereo IP referente a uma zona que no local(www.cern.ch).

Resoluo:
O servidor local usa a sua lista de root name servers para seleccionar um servidor que ser interrogado para determinar os endereos IP dos servidores de DNS responsveis por ch. O servidor root responde com registos autoritrios para os nomes dos servidores de DNS de ch e informao adicional com os endereos IP destes servidores. O servidor local questiona um dos servidores de DNS de ch para obter os endereos IP dos servidores responsveis pelo domnio cern.ch. O servidor ch responde com registos autoritrios para os nomes dos servidores de DNS de cern.ch e informao adicional com os seus endereos IP. Finalmente um servidor de DNS de cern.ch interrogado para obter o endereo IP de www.cern.ch. O servidor de cern.ch responde com o endereo IP ou com a indicao de que o RR no existe.

DNS
Em sistemas *NIX a configurao do cliente de DNS efectuada no ficheiro /etc/resolv.conf
search lip.pt nameserver 10.226.1.1 nameserver 10.226.1.2

Ateno alguns utilitrios de configurao podem reescrever o /etc/resolv.conf Em RH se o NetworkManager estiver activo a configurao do DNS poder ser reescrita A configurao faz-se tambm atravs dos scripts /etc/sysconfig/network-scripts/ifcfg-ethX
DOMAIN=lip.pt DNS1=10.226.1.1
DNS2=10.226.1.2

DNS
Em sistemas *NIX o ficheiro de configurao do servidor de DNS chama-se /etc/named.conf

Um servidor de DNS responde a queries na porta 53 Um servidor de DNS efectua queries:


Inicialmente a porta 53 era usada A partir de uma qualquer porta pr-definida pelo sysadm Usando portas alocadas dinamicamente (mais difcil de passar nas firewalls)

acl ns { 192.178.4.3; }; acl my-net { 192.137.86.0/24; }; options { directory /etc/namedb; query-source address * port 5678; recursion yes; allow-transfer { ns; my-net; }; allow-recursion { my-net; }; }; zone . { type hint; file named.root; }; zone blabla.net { type master; file master/blabla.net; }; zone 86.137.192.in-addr.arpa { type master; file master/192.137.86; };

; ; Ficheiro de configurao para a zona blabla.net ;

$TTL 86400 @

IN SOA 2010030901 28800 7200 604800 86400 ) IN IN IN IN NS NS MX MX NS NS A A A A A A CNAME A A

dns1.blabla.net. sysadm.blabla.net. ( ; Serial number yymmddss, xx zone change ; Refresh 4 hours ; Retry 2 hours ; Expire 7 days ; minimum time-to-live 1 day dns1.blabla.net. dns2.blabla.net. 10 20 mail1.blabla.net. mail2.blabla.net.

frog frog dns1.frog dns2.frog alfa beta delta mail1 mail2 dns1 dns2

IN IN IN IN IN IN IN IN IN IN IN

dns1.frog.blabla.net. dns2.frog.blabla.net. 192.178.231.2 192.178.234.7 192.137.86.56 192.137.86.92 193.116.2.82 192.137.86.12 alfa.blabla.net. 192.137.86.14 123.81.11.5

; ; Ficheiro de configurao para a zona 86.137.192.in-addr.arpa ;

$TTL 86400 @

IN SOA 2010030901 28800 7200 604800 86400 ) IN IN NS NS PTR PTR PTR PTR

dns1.blabla.net. sysadm.blabla.net. ( ; Serial number yymmddss, xx zone change ; Refresh 4 hours ; Retry 2 hours ; Expire 7 days ; minimum time-to-live 1 day dns1.blabla.net. dns2.blabla.net. mail1.blabla.net. dns1.blabla.net. alfa.blabla.net. beta.blabla.net.

12 14 56 92

IN IN IN IN

UDP e TCP
O DNS suporta UDP e TCP:
Ambos os protocolos usam o mesmo numero de porta (53).

Por norma usado UDP:


Quando uma resposta recebida com o bit TC a 1 indicando que a mensagem foi truncada a 512 bytes, ento o TCP usado para efectuar a transferncia.

As transferncias de zona entre servidores primrios e secundrios so sempre efectuadas usando TCP:
Para garantir maior fiabilidade. Por existir probabilidade elevada da transferncia precisar mais de 512 bytes.

Exemplos
Traduzir via DNS o nome de um host
$ host lnlip01.lip.pt lnlip01.lip.pt has address 10.1.1.101

$ host www.cern.ch www.cern.ch is an alias for webr4.cern.ch. webr4.cern.ch has address 137.138.137.177

Traduzir via DNS o endereo de um host


$ host 10.1.1.101 101.1.1.10.in-addr.arpa domain name pointer lnlip01.lip.pt. $ host 137.138.137.177 177.137.138.137.in-addr.arpa domain name pointer webr4.cern.ch.

Exemplos
Obter via DNS o nome dos servidores de mail para um domnio:
$ host -t MX cern.ch cern.ch mail is handled by 10 cernmxgwlb.cern.ch.

$ host -t MX fct.mctes.pt fct.mctes.pt mail is handled by 5 anubis.fct.mctes.pt.


$ host -t MX lip.pt lip.pt mail is handled by 10 smtp.lip.pt.

Obter os servidores de DNS para um domnio:


$ host -t NS lip.pt lip.pt name server ns02.lip.pt. lip.pt name server ns01.lip.pt.

Exemplos
$ host vT www.cern.ch
Trying "www.cern.ch" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5145 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 6

;; QUESTION SECTION: ;www.cern.ch. IN


;; ANSWER SECTION: www.cern.ch. 9235 IN webr4.cern.ch. 9235 IN

CNAME webr4.cern.ch. A 137.138.137.177

;; AUTHORITY SECTION: cern.ch. 555 IN cern.ch. 555 IN cern.ch. 555 IN

NS NS NS

scsnms.switch.ch. ext-dns-1.cern.ch. ext-dns-2.cern.ch.

;; ADDITIONAL SECTION: scsnms.switch.ch. 53873 IN A 130.59.1.30 scsnms.switch.ch. 53873 IN A 130.59.10.30 scsnms.switch.ch. 53873 IN AAAA 2001:620::1 ext-dns-1.cern.ch. 3146 IN A 192.65.187.5 ext-dns-2.cern.ch. 10101 IN A 192.91.245.85 ext-dns-2.cern.ch. 10101 IN AAAA 2001:1458:e008:1::2 Received 261 bytes from 10.226.1.1#53 in 0 ms

Exemplos
$ dig +trace +tcp www.lip.pt
; <<>> DiG 9.2.4 <<>> +trace +tcp www.lip.pt ;; global options: printcmd . 234746 IN NS C.ROOT-SERVERS.NET. . 234746 IN NS D.ROOT-SERVERS.NET. . 234746 IN NS E.ROOT-SERVERS.NET. . 234746 IN NS F.ROOT-SERVERS.NET. . 234746 IN NS G.ROOT-SERVERS.NET. . 234746 IN NS H.ROOT-SERVERS.NET. . 234746 IN NS I.ROOT-SERVERS.NET. . 234746 IN NS J.ROOT-SERVERS.NET. . 234746 IN NS K.ROOT-SERVERS.NET. . 234746 IN NS L.ROOT-SERVERS.NET. . 234746 IN NS M.ROOT-SERVERS.NET. . 234746 IN NS A.ROOT-SERVERS.NET. . 234746 IN NS B.ROOT-SERVERS.NET. ;; Received 508 bytes from 10.226.1.1#53(10.226.1.1) in 1 ms pt. 172800 IN NS NS.DNS.BR. pt. 172800 IN NS NS.DNS.pt. pt. 172800 IN NS AUTH200.NS.UU.NET. pt. 172800 IN NS NS2.NIC.FR. pt. 172800 IN NS NS-EXT.ISC.ORG. pt. 172800 IN NS AUTH210.NS.UU.NET. pt. 172800 IN NS NS2.DNS.pt. ;; Received 363 bytes from 192.33.4.12#53(C.ROOTSERVERS.NET) in 24 ms lip.pt. 28800 IN NS ns02.fccn.pt. lip.pt. 28800 IN NS lnnet02.lip.pt. lip.pt. 28800 IN NS afnet01.lip.pt. ;; Received 215 bytes from 200.160.0.5#53(NS.DNS.BR) in 235 ms www.lip.pt. 86400 IN CNAME lnnet08.lip.pt. lnnet08.lip.pt. 86400 IN A 193.136.91.234 lip.pt. 86400 IN NS afnet01.lip.pt. lip.pt. 86400 IN NS ns02.fccn.pt. lip.pt. 86400 IN NS lnnet02.lip.pt. ;; Received 210 bytes from 193.136.2.228#53(ns02.fccn.pt) in 5 ms