Você está na página 1de 12

Servio DNS BIND

Instalao e configurao do servio DNS BIND

abril/2010

1 - DNS BIND (Berkeley Internet Name Domain) Domain Name Service (DNS) um servio na Internet que mapeia endereo IP e Nome de Domnio Totalmente Qualificado1 (FQDN) de um para o outro. Desse modo, o DNS alivia a necessidade de guardar [lembrar] sites pelos seus endereos IPs. Hosts que hospedam DNS so chamados de name servers [servidores de nomes]. Normalmente, os membros da famlia Unix usam o DNS BIND (Berkeley Internet Name Domain), que a aplicao mais comum para resolver nomes na Internet. BIND uma implementao de cdigo fonte aberto do protocolo DNS, e est em uso em cerca de 75% dos servidores de nomes na Internet. Este servio tem a funo bsica de traduzir em endereos IPs nomes de hosts e domnios e vice-versa. Sabemos que nos pacotes TCP, nos seus headers, vo o endereo IP de destino e de retorno, porm o usurio no precisa ter a preocupao em saber esses IPs, basta fazer uma solicitao ao servidor DNS que ele traduz o IP, dados o nome do host e o domnio. A principal funo do DNS mapear endereos IPs em nomes lidos pelos humanos. Por exemplo, se algum quiser acessar a pgina em "www.jairo.pro.br", pacotes TCP devem ser enviados para a porta 80 de um host nesse domnio, porm para qual IP? O servidor DNS responde ao cliente que atualmente www.jairo.pro.br encontra-se no IP 187.16.23.138. Isso chamado de forward DNS. Da mesma forma que obteve o endereo IP do host/domnio, poderia obter o host/domnio dado o IP, que a parte reversa do servidor DNS. Isso chamado de reverse DNS. Um outra funo do DNS realizar cache local dos IPs j resolvidos, isso para evitar fazer novas consultas externas a hosts/domnios j traduzidos, para atender mais rapidamente aos clientes do servio DNS e economizar link de acesso internet. O DNS, Domain Name System, composto de trs partes: 1 resolvedor [resolver] 2 servidor de nome [name server] 3 banco de dados com recursos gravados [database of resource records(RRs)] 1 - FQDN significa Fully Qualified Domain Name. Este o nome de um determinado host composto por seu hostname
seguido do domnio a que pertence. Como exemplo temos um servidor de e-mail de hostname mail, pertencente ao domnio exemplo.com. Ento, o FQDN desse host mail.exemplo.com.

Servio DNS BIND

1/12

O Domain Name System basicamente um grande database que reside em vrios computadores e contm os nomes e endereos IPs dos vrios hosts e domnios na internet. O Domain Name System usado para prover informao ao Domain Name Service, quando houver query. O servio o ato de fazer query no database, e o sistema a estrutura e dados que o compem. O Domain Name System database dividido em sees chamadas zones. Os servidores de nomes [name servers] em suas respectivas zones so os responsveis por responder s queries para as suas zones. Uma zone uma subtree [sub rvore] do DNS e administrado separadamente. Para cada zone, usualmente existe um nameserver primrio e um ou mais nameserver secundrio. Um name server pode ser autoridade sobre mais de uma zone. Os nomes [DNS names] so atribudos atravs de registros, pela IANA [Internet Assigned Number Authority]. O domain name [nome do domnio] um nome atribudo para um domnio internet. Por exemplo, uninove.br o nome do domnio de uma instituio de ensino. J a nomeao de hosts dentro do domnio atribuio dos administradores do domnio. O acesso ao domain name database ocorre atravs de um resolver [a partir de uma aplicao cliente]. O resolver envia requisies aos servidores de nomes, que retornam a informao requisitada pelo usurio. A requisio feita no endereo IP do name server. O DNS uma base de dados hierrquica, distribuda globalmente e gerenciada localmente. A raiz dessa hierarquia distribuda constituda pelos servidores-raiz root-servers. Inicialmente os root-servers eram apenas sete, todos localizados nos Estados Unidos da Amrica, e geridos pela IANA - Internet Assigned Number Authority. Hoje existem treze root-servers, dois dos quais esto localizados na Europa e um no Japo. Esse nmero [13] limitado pelo protocolo, porm existem tambm cerca de 150 root servers regionais, que so atualizados pelos 13 rootservers. Trs deles esto no Brasil, dois em So Paulo e um em Braslia. Essa distribuio regional reduz a carga nos treze root-servers. O contedo da raiz do DNS est baseado em TLD [Top Level Domain]. Os TLD de 3 letras foram os primeiros a serem criados e, originalmente, eram domnios Norte-Americanos. Posteriormente, alguns deles foram reclassificados como gTLD (TLD genricos, mundiais). So eles: .edu: .com: .gov: .net: .org: .mil: .int: rede acadmica; segmento do comrcio/indstria; governo norte-americano; atividades de suporte rede; organizaes no governamentais; segmento militar (Arpanet); organizaes internacionais.

Servio DNS BIND

2/12

Os TLD de 2 letras vieram em 1986. Nesse caso, cada pas corresponde a duas letras e so chamados de ccTLD (Country Codes TLD). Alguns exemplos so: .ar: .au: .br: .ca: .ch: .cl: .de: .fr: .it: .jp: .mx: .pt: .ru: .tw: .us: Argentina Austrlia; Brasil (registrado em 18 de abril de 1989); Canad; Suia; Chile; Alemanha; Frana; Itlia; Japo; Mxico; Portugal; Russia; Repblica da China; Estados Unidos da Amrica.

root .br .edu .com .org .net

.com

Os ccTLD gozam de autonomia para estabelecer sua rvore hierrquica e para estabelecer sua abrangncia e normas de registro. No Brasil, a autoridade sobre o ccTLD est em registro.br. A configurao do DNS envolve diferentes registros. Os principais tipos de registros [os mais comuns] so: A: AAAA: NS: CNAME: MX: PTR: SOA: Address, especifica um endereo IP direto; Address Ipv6, especifica um endereo Ipv6; nameserver, especifica servidores DNS para o domnio ou subdomnio; Canonical NAME, um apelido para outro hostname; Mail eXchanger, o servidor de email; PoinTeR, aponta o hostname/domnio reverso a partir de um endereo IP; Start Of Authority, responsvel por respostas autoritativas por um domnio.

2 - Funcionamento A estrutura hierrquica do DNS funciona como uma rvore invertida, comeando pelo servidor raiz [.] e seguindo pelos TLD (Top Level Domains), que so divididos em genricos (gTLD) usados em todo o mundo e os de cdigo de pas (ccTLD), que possuem extenses de domnios administrados pelos pases. Para o DNS funcionar corretamente necessrio no mnimo dois servidores: um master e um slave. O slave depende do master para as suas atualizaes, porm pode responder sem a existncia deste. Ento, em caso de falha do master, o DNS continua funcionando. Operacionalmente, aps a instalao e configurao do master, configura-se o slave especificando

Servio DNS BIND

3/12

quem o master do domnio. Desse modo, qualquer alterao no database do master ser replicada automaticamente para o slave. Para um determinado domnio na internet podem existir vrios slaves, porm apenas um master. Quanto ao reverso, ele controlado pelas entidades que possuem os endereos IP. Nesse caso, o dono pode escolher sub-delegar DNS reverso em uma faixa de IP para alguma outra entidade, que por sua vez tambm pode sub-delegar. IANA2 quem possui todos os endereos IP, ento o incio dessa sub-delegao ocorre l. IANA delega endereamento de IP aos Registros Internacionais de Internet [RIR: Regional Internet Registry] em 5 regies: AfriNIC [frica], APNIC [sia/Pacfico], ARIN [Amrica do Norte], LACNIC [Amrica Latina] e RIPE [Europa, Oriente Mdio e sia Central. Por root sua vez, esses Registros Internacionais arpa delegam os endereos IP aos provedores de in-addr acesso, que por sua vez delegam aos usurios finais. Para a implementao do reverso, existe um domnio especial reservado chamado in-addr.arpa, ao qual todos os endereos IP pertencem. Por exemplo, 192255.128.91.201.in-addr.arpa para a faixa de IPs 201.91.128.192 a 201.91.128.255. E para chegar aos endereos de host, primeiro ter de perguntar a um root-server onde fica 201.0.0.0/8, depois onde fica 201.91.0.0/16 e por ltimo, 201.91.128.0/24. Por exemplo, para obter o reverso do host no IP 201.91.128.194, o caminho seria o seguido na figura ao lado. 0 0 0 1 1 1 192 ... ... ... 201 ... 91 ... 128 ... 255 255 255 255

194 ...

3 Instalao do DNS BIND Essa instalao ser para um servio standalone, e no inetd. Para descobrir se o servidor DNS BIND est instalado, uma dica simples procurar pelo seu script de inicializao em /etc/init.d:
shell# ls /etc/init.d | grep bind9 /etc/init.d/bind9

Se no houver sada no comando acima indicativo de que o servidor DNS no est instalado. Nesse caso, instalar com o comando apt-get:
2 IANA: Internet Assigned Numbers Authority [www.iana.org] a responsvel pela coordenao global do DNS root, endereamento IP e outros recursos do protocolo IP.

Servio DNS BIND

4/12

shell# apt-get install bind9 dnsutils

O pacote bind9 instala o DNS BIND, o pacote dnsutils instala as aplicaes nslookup, dig e nsupdate, entre outras. Aps instalado, verificar se existem os seguintes arquivos:
shell# file /etc/init.d/bind9 /etc/init.d/bind9: Bourne shell script text executable shell# file /usr/sbin/named /usr/sbin/named: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped shell# file /etc/bind/named.conf /etc/bind/named.conf: ASCII English text

onde: /etc/init.d/bind9 o script de inicializao do servidor DNS; /usr/sbin/named o executvel que ao rodar d origem ao processo daemon; /etc/bind/named.conf o arquivo de configurao do servidor DNS BIND.

Normalmente e erradamente o apt-get instala a aplicao e j inicia o processo, isso sem configurar o servio. Por isso, aps a instalao necessrio verificar se existe o processo daemon rodando:
shell# ps -ef | grep named root 1253 1 0 17:05 ? 00:00:00 /usr/sbin/named

portanto, se houver sada no comando indica que o processo est rodando e deve ser parado esse servio:
shell# /etc/init.d/bind9 stop Parando o bind9:

[ OK ]

Entrar no diretrio de configurao do servio, e listar os arquivos:


shell# cd /etc/bind shell# ls

O arquivo de configurao o named.conf. Repare que no final desse arquivo tem um include para named.conf.local, que onde ser includa a zone aluno.br [que vamos criar].

Servio DNS BIND

5/12

shell# more named.conf // 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 include "/etc/bind/named.conf.options"; // 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"; }; // zone "com" { type delegation-only; }; // zone "net" { type delegation-only; }; // From the release notes: // Because many of our users are uncomfortable receiving undelegated answers // from root or top level domains, other than a few for whom that behaviour // has been trusted and expected for quite some length of time, we have now // introduced the "root-delegations-only" feature which applies delegation-only // logic to all top level domains, and to the root domain. An exception list // should be specified, including "MUSEUM" and "DE", and any other top level // domains from whom undelegated responses are expected and trusted. // root-delegation-only exclude { "DE"; "MUSEUM"; }; include "/etc/bind/named.conf.local";
Servio DNS BIND 6/12

4 Configurao da zone aluno.br Para a configurao da zone aluno.br, sero copiados mapas e configuraes j preparados e disponveis em www.jairo.pro.br/bind9.tar.gz. Entrar no diretrio /tmp e baixar o arquivo com wget:
shell# cd /tmp shell# wget http://www.jairo.pro.br/bind9.tar.gz --2009-10-12 19:44:15-- http://www.jairo.pro.br/bind9.tar.gz Resolvendo www.jairo.pro.br... 187.16.23.138 A conectar www.jairo.pro.br|187.16.23.138|:80... conectado! HTTP requisio enviada, aguardando resposta... 200 OK Tamanho: 1798 (1,8K) [application/x-gzip] A gravar em: 'bind9.tar.gz' 100%[===============================================>] 1.798 --.-K/s em 0,02s 2009-10-12 19:44:15 (74,7 KB/s) - 'bind9.tar.gz' gravado [1798/1798]

Extrair o contedo desse arquivo compactado/aglomerado:


shell# gunzip bind9.tar.gz shell# tar -xvf bind9.tar bind9/ bind9/leiame.txt bind9/named.conf.local bind9/named.conf.options bind9/aluno.br bind9/named.conf bind9/rev.aluno.br

Entrar no diretrio /tmp/bind9, que onde esto os arquivos baixados de www.jairo.pro.br, e listar o contedo:
shell# cd /tmp/bind9 shell# ls aluno.br leiame.txt named.conf

named.conf.local

named.conf.options

rev.aluno.br

Nessa configurao, o arquivo named.conf no foi alterado. J named.conf.local inclui a zone aluno.br. E em named.conf.options foi includo o IP do servirdor DNS da Uninove como
Servio DNS BIND 7/12

forwarder.
shell# more named.conf.local // dominio aluno.br zone "aluno.br" { type master; file "/etc/bind/aluno.br"; } }; // reverso de aluno.br zone "0.102.10.in-addr.arpa" { type master; file "/etc/bind/rev.aluno.br"; };

Convm notar tambm em named.conf.local que estamos configurando um DNS master, e que os mapas da zone aluno.br esto nos arquivos /etc/bind/aluno.br e /etc/bind/rev.aluno.br. No arquivo rev.aluno.br est o mapa reverso, para traduzir IPs em nomes. Desse modo, tudo que resta a fazer antes de copiar esses arquivos para /etc/bind, acertar os IPs em aluno.br e rev.aluno.br:
shell# more aluno.br aluno.br. IN SOA 2006081401 28800 3600 604800 38400 ) aluno.br. aluno.br. ns1 mta pop www IN IN IN IN IN IN NS MX 5

ns1.aluno.br. admin.aluno.br. ( ; serial ; refresh ; retrai ; expire ; minimum ns1.aluno.br. mta.aluno.br. 10.102.0.10 10.102.0.250 ns1 mta

A A CNAME CNAME

O registro MX admite prioridades, por exemplo 5, 10, etc. Quanto menor esse nmero, maior a sua prioridade. O servidor de e-mail com maior prioridade que recebe os e-mails.

Servio DNS BIND

8/12

shell# more rev.aluno.br @ IN SOA ns1.aluno.br. admin.aluno.br. ( 2006081401; 28800; 604800; 604800; 86400 ) IN NS ns1.aluno.br. 10 IN PTR ns1.aluno.br. 250 IN PTR mta.aluno.br.

Depois de acertados os IPs em aluno.br e rev.aluno.br, copiar esses arquivos para /etc/bind:
shell# pwd /tmp/bind9 shell# cp * /etc/bind/

5 Iniciar o servio DNS BIND Antes de iniciar o servio DNS, verificar quais portas TCP esto abertas. Para isso, necessrio a aplicao nmap para fazer um scan de portas. E se esta aplicao no estiver instalada, precisamos instalar.
shell# apt-get install nmap

Agora, s fazer o scan de portas:


shell# nmap localhost Starting Nmap 4.76 ( http://nmap.org ) at 2009-09-07 15:31 BRT Interesting ports on localhost (127.0.0.1): Not shown: 999 closed ports PORT STATE SERVICE 631/tcp open ipp Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds

que mostra apenas a porta 631 [servidor de impresso] aberta. E tambm, antes de iniciar o servio DNS, verificar se existe o processo daemon named

Servio DNS BIND

9/12

rodando:
shell# ps -ef | grep named

que no deve ter sada, indicando que esse daemon no est rodando. Agora, ento, iniciar o servidor DNS com o script de inicializao desse servio:
shell# /etc/init.d/bind9 start Iniciando o bind9:

[ OK ]

Depois disso, o scan de portas vai mostrar que a porta 53 tambm est aberta:

shell# nmap localhost Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-12 21:38 BRT Interesting ports on localhost (127.0.0.1): Not shown: 998 closed ports PORT STATE SERVICE 53/tcp open dns 631/tcp open ipp Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

No caso do servio DNS, ele responde tambm na porta 53 UDP. Para determinar se essa porta est aberta, usar nmap -sU:

shell# nmap -sU localhost Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-14 22:11 BRT Interesting ports on localhost (127.0.0.1): Not shown: 996 closed ports PORT STATE SERVICE 53/udp open|filtered domain 631/udp open|filtered ipp Nmap done: 1 IP address (1 host up) scanned in 1.25 seconds

E o comando ps vai mostrar que o daemon named est rodando:

Servio DNS BIND

10/12

shell# ps -ef | grep named root 2354 1 0 13:41 ? 00:00:00 /usr/sbin/named

6 Testar a resoluo de nomes Para testar, usar as aplicaes clientes nslookup e dig:
shell# nslookup www.aluno.br localhost Server: localhost Address: 127.0.0.1#53 www.aluno.br canonical name = mta.aluno.br. Name: mta.aluno.br Address: 10.102.0.250

shell# nslookup mta.aluno.br localhost Server: localhost Address: 127.0.0.1#53 Name: mta.aluno.br Address: 10.102.0.250

shell# nslookup ns1.aluno.br localhost Server: localhost Address: 127.0.0.1#53 Name: ns1.aluno.br Address: 10.102.0.10

shell# nslookup 10.102.0.250 localhost Server: localhost Address: 127.0.0.1#53 250.0.102.10.in-addr.arpa name = mta.aluno.br.

Servio DNS BIND

11/12

shell# dig www.aluno.br @localhost ; <<>> DiG 9.6.1-P1-RedHat-9.6.1-6.P1.fc11 <<>> www.aluno.br @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45917 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.aluno.br. IN ;; ANSWER SECTION: www.aluno.br. 38400 mta.aluno.br. 38400 ;; AUTHORITY SECTION: aluno.br. 38400 ;; ADDITIONAL SECTION: ns1.aluno.br. 38400 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Oct 12 21:09:13 2009 ;; MSG SIZE rcvd: 98 A IN IN IN IN CNAME A NS A mta.aluno.br. 10.102.0.250 ns1.aluno.br. 10.102.0.10

Servio DNS BIND

12/12