Você está na página 1de 18

Configurando servidores DNS, no muque

http://www.hardware.com.br/tutoriais/servidores-dns/

(Configurando o bind: venha direto para c).

Introduo

A poucos dias, publiquei um artigo explicando como funciona o sistema DNS e o processo de
registro de domnios que serve como uma boa introduo ao tutorial de hoje. Se voc j leu o
artigo, sinta-se vontade para pular para a segunda pgina:
Com frequncia, ouvimos dizer que o sistema de DNS a maior base de dados do mundo. Sob
certos aspectos, realmente , mas existe uma diferena fundamental entre o DNS e um
sistema de banco de dados tradicional (como um servidor MySQL usado por um servidor Web,
por exemplo), que o fato do DNS ser uma base de dados distribuda.
No topo da cadeia, temos os root servers, 14 servidores espalhados pelo mundo que tm
como funo responder a todas as requisies de resoluo de domnio. Eles so seguidos por
diversas camadas de servidores, que culminam nos servidores diretamente responsveis por
cada domnio.
Um nome de domnio lido da direita para a esquerda. Temos os domnios primrios
(chamados de top level domains, ou TLD's), como .com, .net, .info, .cc, .biz, etc., e, em seguida,
os domnios secundrios (country code TLD's, ou ccTLD's), que recebem o prefixo de cada pas,
como .com.br ou .net.br. Nesse caso, o "com" um subdomnio do domnio "br".
Embora normalmente ele seja omitido, todo nome de domnio termina na verdade com um
ponto, que representa o domnio raiz, de responsabilidade dos root servers. Quando um dos
root servers recebe um pedido de resoluo de domnio, ele encaminha a requisio aos
servidores da entidade responsvel pelo TLD (como ".com") ou pelo ccTLD (como ".com.br")
do qual ele faz parte. Eles, por sua vez, encaminham a requisio ao servidor DNS responsvel
pelo domnio, que finalmente envia a resposta ao cliente.
Ao acessar o endereo "www.gdhn.com.br", o cliente comearia enviando a requisio ao
servidor DNS informado na configurao da rede (o DNS do provedor). A menos que tenha a
informao em cache, o servidor consulta um dos root servers, perguntando: "quem o
servidor responsvel pelo domnio gdhn.com.br?".
O root server gentilmente responde que no sabe, mas verifica qual o servidor responsvel
pelos domnios ".br" (o registro.br) e orienta o cliente a refazer a pergunta, dessa vez a um dos
servidores da entidade correspondente. O processo pode envolver mais um ou dois servidores,
mas eventualmente o cliente chega ao servidor DNS do responsvel pelo site (informado ao
registrar o domnio) que finalmente fornece o endereo IP do servidor ao cliente:

Assim como no caso do "com", que um subdomnio do "br" de responsabilidade do
Registro.br, voc pode criar subdomnios, como "www.gdhn.com.br" ou "ftp.gdhn.com.br"
livremente. Estes subdomnios podem apontar para seu prprio servidor, para um servidor
separado, ou mesmo serem usados como aliases para outros domnios. Dentro da sua zona, ou
seja, do seu domnio, a autoridade voc.
Configurar o servidor DNS uma etapa importante na configurao de qualquer servidor que
vai disponibilizar servios para a Internet, sobretudo hospedar sites, j que nenhum visitante
vai querer acessar os sites hospedados atravs do endereo IP.
Registro de domnios

Assim como no caso das faixas de endereos IP, que so delegados pelas RIRs
(Regional Internet Registries), como a ARIN (http://www.arin.net/) e a LACNIC
(http://www.lacnic.net/pt/), os nomes de domnio so delegados atravs de entidades
menores (com ou sem fins lucrativos), chamadas de "domain name registrars" (ou
simplesmente "registrars"), que coordenam o registro, a delegao e a disputa de
domnios. Embora o valor anual de manuteno de cada domnio seja relativamente
baixo, o enorme volume de domnios registrados faz com que o registro de domnios
seja um negcio que movimenta muito dinheiro.
Os requisitos para registrar domnios variam de acordo com o registrar. Para os TDLs,
ou seja, os domnios primrios genricos, como ".com", ".net", ".org" e outros, no
existe muita burocracia; basta escolher uma empresa de registro e pagar.
Voc pode encontrar uma lista dos registrars oficialmente reconhecidos pela ICANN
no:
http://www.icann.org/registrars/accredited-list.html
O maior o Godaddy (http://godaddy.com), que cobra US$ 9.99 por ano, por domnio
.com (com valores diferentes para outros prefixos), seguido pelo Enom
(http://www.enom.com/). Existem tambm algumas empresas nacionais registradas,
como a Locaweb (http://locaweb.com.br). Essas empresas concorrem entre si, o que faz
com que os preos variem. Os registros de domnio so oferecidos como se fossem um
produto, com direito a descontos e promoes:


Voc pode ver estatsticas com relao ao volume de domnios TLD registrados,
prefixos mais populares e outros detalhes no: http://www.domaintools.com/internet-
statistics/
O ranking dos registrars (baseado no volume de domnios registrados por cada um) est
disponvel no: http://www.domaintools.com/internet-statistics/registrar-stats.html
Alm das empresas listadas na pgina da Internic, que so os registrars primrios,
existem inmeras empresas menores que entram como prestadores de servio,
intermediando o registro, como no caso dos provedores de acesso e de empresas como a
Brasnic (http://brasnic.com).
Normalmente, elas cobram mais caro, j que precisam registrar o domnio junto a um
dos registrars primrios, repassando o valor cobrado por ele, e ainda ganharem alguma
coisa. O registro de um domnio .com, que custa US$ 9.99 no Godady (e at 6.99 em
outros registrars menores) custa US$ 12.00 na Brasnic, por exemplo.
O registro de domnios .br menos catico, pois eles so controlados por uma nica
entidade, o Registro.br (http://registro.br), uma entidade sem fins lucrativos. A taxa de
registro (enquanto escrevo) de R$ 30 anuais por domnio registrado, mas existem
algumas exigncias adicionais.
Para registrar um domnio ".com.br", por exemplo era, at pouco tempo, necessrio ter
uma empresa aberta em territrio nacional, para registrar um domnio ".net.br"
necessrio ter uma empresa dentro do ramo de telecomunicaes e assim por diante.
Pessoas fsicas (residentes no Brasil, ou que possuam um contato no Brasil) podem
registrar apenas domnios especficos, como o "nom.br", "blog.br", "flog.br" e outros.
Em primeiro de maio de 2008 entrou em vigor uma nova norma, que flexibilizou o
registro dos domnios ".com.br", liberando o registro para pessoas fsicas, desde que
com um CPF vlido.
Existem ainda outros detalhes interessantes, como o fato de empresas estrangeiras
poderem fazer o registro apenas atravs de um procurador. Voc pode ver mais detalhes
no FAQ:
http://registro.br/faq/index.html

Note que o registro de domnios inclui apenas o cadastramento do domnio e o
encaminhamento das requisies aos seus servidores DNS, informados durante o
registro. Em muitos casos, so oferecidos servios adicionais, como a exibio de uma
pgina "em construo" (placeholder), a configurao dos servidores DNS para voc, ou
mesmo a hospedagem do site. Entretanto, estes so servios adicionais, que variam de
acordo com a empresa de registro escolhida.
Uma prtica muito comum registrar domnios em que voc tenha interesse, mas que
no pretenda usar de imediato, mostrando uma pgina genrica, contendo um "em
construo" ou alguns links de anncios. Esta prtica chamada de "domain parking"
(reserva de domnios, ou estacionamento de domnios) e bastante difundida, j que sai
mais barato registrar um domnio antecipadamente do que ter que disput-lo mais tarde.
Existem tambm casos de empresas que deliberadamente registram um grande volume
de domnios contendo palavras ou frases populares, com o objetivo de vend-los mais
tarde, ou simplesmente lucrar com cliques de visitantes que acessam os endereos por
acidente.
Existem tambm casos de registros de domnios contendo marcas, ou palavras similares
a marcas, com objetivo de enganar os visitantes (encaminhando-os a outras pginas)
e/ou lesar ou extorquir os proprietrios da marca. Esta prtica chamada de
"cybersquatting" (grilagem de domnios) e ilegal na maioria dos pases, incluindo o
Brasil.
Embora seja um processo demorado, possvel disputar a posse de um domnio
registrado, o que se aplica em casos em que voc o detentor de uma marca registrada,
ou o proprietrio de um site que esteja sendo lesado por um domnio similar,
registrado com o propsito de roubar visitantes.
Para os domnios primrios, o processo chamado de UDRP (Uniform Domain-Name
Dispute-Resolution Policy), cujos detalhes esto disponveis no:
http://www.icann.org/udrp/udrp.htm
Para os domnios ccTLDs, ou seja, os domnios com cdigo de pas, que so
responsabilidade de entidades separadas, o processo varia. Algumas entidades aceitam a
aplicao do UDRP, outras aplicam conjuntos particulares de regras, enquanto outras
simplesmente no possuem uma poltica definida, se limitando a acatar decises
judiciais.
Atualmente (junho de 2008) o Registro.br ainda faz parte da terceira categoria, mas
existem negociaes com relao adoo do UDRP. Voc pode ver algumas cartas
nesse sentido, trocadas entre os responsveis pelo Registro.br e a ICANN, disponveis
no:
http://www.icann.org/cctlds/br/br-icann-letters-10may07.pdf



DNS e virtual hosting

Com poucas excees, ao registrar um domnio voc precisa fornecer o endereo de
dois servidores DNS (primrio e secundrio), para onde sero encaminhadas as
consultas referentes ao seu domnio. O segundo servidor exigido para fins de
redundncia, garantindo que as requisies continuem a ser respondidas mesmo que o
primeiro servidor esteja fora do ar.
Uma opo muito usada para o segundo DNS pedir para que algum amigo, que
tambm possua um servidor dedicado, seja seu DNS secundrio. Ele precisar apenas
adicionar a configurao do seu domnio na configurao do DNS, o que rpido e
indolor. Se voc administra dois servidores diferentes, pode tambm configurar o
servidor B para ser o DNS secundrio dos domnios hospedados no servidor A e vice-
versa.
Ao locar um servidor dedicado, comum que voc receba dois ou mais endereos IP's
vlidos. Originalmente, seu servidor vai estar configurado para usar apenas um deles,
mas voc pode ativar o segundo (mesmo que o servidor possua apenas uma placa de
rede) usando o ifconfig, como veremos em detalhes a seguir. Isso permite que o mesmo
servidor seja usado simultaneamente como DNS primrio e secundrio, eliminando a
necessidade de um segundo servidor.
Continuando, ao registrar um domnio, voc passa a ter autoridade sobre ele e pode criar
subdomnios da forma como quiser, como "fulano.meunome.com.br" ou
"vendas.minhaempresa.com". Veja o caso dos servios de hospedagem gratuita de blogs
e sites, como o blogger, o wordpress e tantos outros, que, em muitos casos, criam
milhes de subdomnios diferentes para as pginas hospedadas.
Resolver um nome de domnio (ou seja, percorrer todo o caminho necessrio para
descobrir o IP do servidor responsvel, comeando com a requisio enviada aos root
servers) uma operao que pode demorar vrios segundos, por isso os servidores DNS
armazenam um cache de domnios j resolvidos, minimizando o nmero de requisies.
por isso que quando voc faz alguma mudana na configurao do domnio, demora
algumas horas para que ela se replique. Isso explica tambm casos onde voc no
consegue acessar um determinado site usando o DNS do provedor (que est
desatualizado), mas consegue usando um DNS local, ou outro servidor qualquer.
Um nico servidor pode ser configurado para responder por inmeros domnios, assim
como um nico servidor web pode hospedar vrios sites. As duas configuraes acabam
intimamente ligadas, j que justamente a presena de vrios domnios, ou vrios
subdomnios que permite ao servidor web entregar a pgina apropriada ao cliente.
Imagine o caso de um servidor que hospeda 10.000 sites. Na configurao do Apache,
especificamos o domnio e o diretrio local correspondente a cada site, como em:
<VirtualHost *>
ServerAdmin webmaster@gdhn.com.br
ServerName www.gdhn.com.br
ServerAlias gdhn.com.br
DocumentRoot /var/www/gdhn
</VirtualHost>
A idia aqui que o visitante digita o nome de domnio do site no navegador e, ao
receber a requisio, o Apache se encarrega de envi-lo ao diretrio correto. Isso
possvel porque o domnio a ser acessado uma informao que faz parte da requisio
enviada pelo cliente.
Depois de resolver o domnio e obter o endereo do servidor do site, o cliente no
pedir "me envie a pgina index do site", mas sim "me envie a pgina index do site
www.gdhn.com.br". O fato do domnio ser includo na requisio permite que o Apache
verifique a configurao e fornea os arquivos do diretrio correto.
Se seu servidor estiver hospedando subdomnios, ou seja, endereos como
"www.fulano.gdhn.com.br", "www.ciclano.gdhn.com.br", etc., como fazem servios de
hospedagem, a configurao continua basicamente a mesma: voc especifica o
subdomnio do cliente na configurao do VirtualHost do Apache e tambm na
configurao do servidor DNS.
Uma observao importante que, para o Apache, o domnio
"www.fulano.gdhn.com.br" diferente de apenas "fulano.gdhn.com.br". A linha
"ServerAlias" na configurao serve justamente para permitir que o site seja acessado
tanto com o www quanto sem, de acordo com o gosto do fregus.
Muitos sites grandes acabam ficando acessveis apenas com (ou apenas sem) o "www",
simplesmente por que os administradores deixam de criar os aliases necessrios na
configurao do DNS, ou deixam de configurar o servidor web para responder pelos
dois endereos, como no caso do site da claro. Ao acessar o "www.claro.com.br" acesso
o site normal da operadora, mas ao tentar o "http://claro.com" obtenho uma mensagem
de erro "Invalid Hostname", gerada pelo servidor IIS que hospeda o site. Este um
exemplo de erro que voc vai querer evitar na configurao dos seus servidores:

Voltando explicao inicial, como os servidores de registro de domnio lem as URLs
de trs para a frente, todos os acessos a subdomnios dentro do "gdhn.com.br" sero
enviados para o servidor DNS responsvel pelo domnio e da para o servidor Apache.
Chegamos ento ao prato principal, que a configurao do servidor DNS propriamente
dito.

Configurando o Bind

O servidor DNS mais usado no Linux o Bind, que aprenderemos a configurar aqui. No existe
problema em instal-lo no mesmo servidor onde foi instalado o Apache e os demais servios,
embora, do ponto de vista da segurana, o ideal seja utilizar servidores separados (ou usar
uma mquina virtual) ou usar um chroot, onde o Bind roda dentro de um diretrio separado,
sem acesso aos demais arquivos do sistema. Veremos como configurar o Bind para operar
dentro do chroot mais adiante, por enquanto vamos nos concentrar na configurao
propriamente dita.
O Bind um software open-source, desenvolvido pelo ISC (Internet Software Consortium) e
largamente utilizado no apenas no Linux, mas em sistemas Unix em geral, incluindo o
FreeBSD e o Mac OS X, ou seja, praticamente todos os sistemas operacionais com exceo do
Windows.
Instalao

Para instalar o Bind, procure pelo pacote "bind" ou "bind9" no gerenciador de pacotes da
distribuio usada. Nas distribuies derivadas do Debian, o pacote "bind" instala o Bind 8,
enquanto o pacote "bind9" instala o Bind 9, que a verso recomendada:
# apt-get install bind9
No CentOS, no Fedora e no Mandriva o pacote "bind" instala diretamente a verso mais
recente, sem opo de escolher entre instalar o Bind 8 ou 9:
# yum install bind

ou:
# urpmi bind
No Slackware voc encontra o pacote dentro da pasta "n" do primeiro CD. Ao instalar,
verifique a verso includa na distribuio. Use sempre o Bind 8 ou 9; nunca o Bind 4, que est
em desuso.
O Bind passou diretamente da verso 4 para a verso 8, de forma a acompanhar a numerao
de verses usada no Sendmail. Com isso, as verses 5, 6 e 7 no existiram e o Bind 8 equivale
quinta verso do software.
Se voc est instalando o Bind em um servidor local, configure as estaes para utilizarem o
endereo IP do servidor como DNS primrio e voc ver que eles j sero capazes de navegar
normalmente, sem precisar mais do DNS do provedor. Esta a configurao padro do Bind,
onde ele trabalha como um servidor DNS de cache, encaminhando as requisies para os root
servers, sem responder nada diretamente. A configurao que veremos aqui necessria para
que ele passe a responder pelos seus domnios, assumindo a funo de servidor autoritativo.
O principal arquivo de configurao do Bind o "/etc/bind/named.conf" (em verses antigas,
o arquivo pode ser simplesmente "/etc/named.conf"). Como comentei, por padro o Bind j
vem configurado para trabalhar como um servidor DNS de cache, que pode ser usado tanto
localmente quanto por outros PCs da rede local. Dentro do arquivo de configurao, voc
encontrar entradas similares a essas:
zone "." {
type hint;
file "/etc/bind/db.root";
};
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";
};
Como pode ver, cada uma das sees indica a localizao de um arquivo, onde vai a
configurao referente a ela. Por exemplo, na primeira seo ("zone ".") indicado o
arquivo "/etc/bind/db.root", que contm os endereos dos 14 root servers, que o Bind
contactar na hora de resolver os domnios.
Esta configurao vem includa por padro e no deve ser alterada, a menos que voc saiba
bem o que est fazendo. O que fazemos ao configurar o servidor DNS incluir novas zonas (ou
seja, novas sees de configurao), contendo os domnios que desejamos configurar.
Uma exceo fica por conta do CentOS 5 onde (acompanhando a mudana feita no RHEL 5) os
arquivos de configurao do Bind no so instalados junto com o pacote. Nele, necessrio
que voc gere a configurao inicial copiando os modelos de configurao que esto dentro da
pasta "/usr/share/doc/bind-9.?.?/sample/" para as pastas apropriadas, como
em:
# cp -r /usr/share/doc/bind-9.?.?/sample/etc/* /etc/
# cp -r /usr/share/doc/bind-9.?.?/sample/var/named/* /var/named/
O servio referente ao Bind pode se chamar "bind" ou "named", de acordo com a distribuio.
Nos derivados do Debian voc controla o servio atravs do comando "/etc/init.d/bind9" (ou
"/etc/init.d/bind" para a verso 8), enquanto nas distribuies derivadas do Red Hat utilizamos
o comando "service named", como em:
# /etc/init.d/bind9 restart
ou:
# service named restartc

Adicionando os domnios

Com o Bind instalado, o prximo passo configurar o servio para responder pelos
domnios que voc registrou. Vamos usar como exemplo o domnio "gdhn.com.br".
Como ele um domnio .br, ele registrado atravs do http://registro.br. Depois de
pagar e fornecer os dados da empresa e do responsvel pelo domnio, necessrio
fornecer os endereos dos dois endereos (nomes e endereos IP) dos dois servidores
DNS responsveis pelo seu domnio, como no screenshot abaixo:


atravs dessa interface de gerenciamento que voc pode alterar a configurao do seu
domnio, alterar os endereos dos servidores DNS (caso voc migre seu site para outro
servidor, ou outra empresa de hospedagem, por exemplo), ou mesmo transfer-lo para
outra pessoa. A senha definida ao criar sua conta essencial, j que qualquer um que
tenha acesso s suas informaes de login poderia se apoderar do seu domnio (
possvel recuper-lo depois caso voc seja o responsvel legal pela empresa, mas o
processo demorado).
possvel registrar o domnio usando um plano ADSL empresarial, ou outra
modalidade de conexo onde voc tenha um endereo IP fixo. No seria recomendvel
hospedar o site da sua empresa (ou nem mesmo seu site pessoal) em um servidor ligado
a um link ADSL, pois o acesso dos visitantes seria muito ruim, mas, de qualquer forma,
na falta de um servidor dedicado, voc pode montar um servidor de internet domstico
para fins de estudo ou de testes. A dica para conseguir registrar o domnio tendo um
nico endereo IP utilizar um modem discado (ou qualquer outro tipo de conexo
temporria) para obter um segundo endereo e assim conseguir efetuar o processo de
registro do domnio.
No faria muito sentido tentar registrar um domnio usando uma conexo domstica,
com IP dinmico, j que a entrada ficaria desatualizada assim que o IP mudasse,
fazendo com que o domnio deixasse de funcionar. A nica soluo vivel nesse caso
utilizar um servio de DNS dinmico (no-ip.com, dyndns.com, etc.).
Continuando, a checagem dos servidores DNS feita durante a fase final do registro, de
forma que, para concluir o registro do domnio, seu DNS j deve estar funcionando.
Vamos ento configurao do Bind.
Comece adicionando as seguintes linhas no final do arquivo "/etc/bind/named.conf" do
servidor (sem modificar as demais):
zone "gdhn.com.br" IN {
type master;
file "/etc/bind/db.gdhn";
allow-transfer { 64.234.23.12; };
};
Na configurao, o "zone "gdhn.com.br" na primeira linha indica o domnio que
estamos configurando, como registrado no Registro.br.
O "file "/etc/bind/db.gdhn" especifica o arquivo onde vai a configurao desse
domnio. Na verdade, voc pode salvar esse arquivo em qualquer lugar, muita gente usa
a pasta "/var/named". Aqui estou seguindo o padro do Debian, colocando os arquivos
dentro da pasta "/etc/bind", junto com os demais arquivos de configurao do Bind.
Estas linhas dizem que o servidor o responsvel pelo domnio "gdhn.com.br" (type
master;) e que sempre que receber uma requisio vai responder de acordo com o
especificado no arquivo db.gdhn (file "/etc/bind/db.gdhn";).
A linha "allow-transfer" indica quais servidores tero permisso para realizar
transferncias de zona. Ao utilizar um servidor DNS secundrio, a linha conteria o
endereo IP do segundo servidor, que seria o nico autorizado a realizar as
transferncias. Se voc estiver utilizando um nico servidor, utilize o prprio endereo
IP do servidor (como no exemplo). No deixe de utilizar a opo, caso contrrio
qualquer servidor poder realizar transferncias, o que permite obter diversas
informaes sobre seu domnio, que podero ento serem utilizadas para formular
ataques.
No caso do Debian, recomendado que voc use o arquivo
"/etc/bind/named.conf.local", que processado como se fosse parte do named.conf
principal. No arquivo named.conf do Debian, voc encontra as seguintes linhas:
// If you are just adding zones, please do that in
/etc/bind/named.conf.local
include "/etc/bind/named.conf.local";
A existncia desse arquivo separado visa separar a configurao geral do servidor e a
configurao dos domnios, minimizando a possibilidade de erros, mas, na verdade, o
efeito de editar qualquer um dos dois arquivos o mesmo.
Em seguida vem a parte principal, que adicionar a configurao do domnio no
arquivo "/etc/bind/db.gdhn", que foi citado na configurao. Este um exemplo de
configurao:
@ IN SOA servidor.gdhn.com.br. hostmaster.gdhn.com.br. (
2008061645 3H 15M 1W 1D )
NS servidor.gdhn.com.br.
IN MX 10 servidor.gdhn.com.br.
gdhn.com.br. A 64.234.23.12
www A 64.234.23.12
ftp A 64.234.23.12
smtp A 64.234.23.12
Nesse arquivo a formatao especialmente importante. Voc pode usar espaos e tabs
(ambos tm o mesmo efeito) para organizar as opes, mas existem algumas regras. As
linhas "IN SOA" at "IN MX" precisam ficar justificadas (como no exemplo) e voc
no pode esquecer dos espaos entre as opes. Caso queira incluir comentrios, use ";"
ao invs de "#", como em outros arquivos.
Pesquisando no Google, voc pode encontrar inmeros templates como esse, mas
difcil encontrar alguma explicao clara de cada uma das opes. Isso faz com que
configurar um servidor DNS parea muito mais complicado do que realmente . Vamos
ento a uma descrio detalhada de cada um dos campos, comeando pela primeira
linha:
@ IN SOA servidor.gdhn.com.br. hostmaster.gdhn.com.br. (
A "@" na primeira linha indica a origem do domnio e, ao mesmo tempo, o incio da
configurao. Ela sempre usada, assim como em um endereo de e-mail.
O "IN" abreviao de "internet" e o "SOA" de "Start of autority". Em seguida vem o
nome do seu servidor (que voc checa usando o comando "hostname"), seguido do e-
mail de contato do administrador (voc).
Note que, no caso do e-mail, temos a conta separada do domnio por um ponto, e no
por uma "@". O mais comum criar uma conta chamada "hostmaster", mas isso no
uma regra. Voc poderia usar "fulaninho.meudominio.com.br", por exemplo. A
principal observao que voc no deve usar um e-mail contendo pontos na poro
antes da arroba.
Note tambm que existe um ponto depois do "servidor.gdhn.com.br" e do
"hostmaster.gdhn.com.br", que faz parte da configurao. Como citei no incio, na
realidade todos os nomes de domnio terminam com um ponto; em muitas situaes o
ponto omitido (como acessar um site atravs do navegador), mas ele obrigatrio
dentro da configurao do Bind.
O ponto se refere ao domnio raiz, de responsabilidade dos rootservers. No exemplo,
nosso servidor o responsvel pelo domnio "gdhn", que faz parte do domnio
".com.br", que, por sua vez, faz parte do domnio raiz. Lembre-se que os domnios so
lidos da direita para a esquerda, de forma que, ao resolver o domnio, o cliente leria: raiz
. br . com . gdhn.
A linha diz algo como: na internet, o servidor "servidor" responde pelo domnio
"gdhn.com.br" e o e-mail do responsvel pelo domnio "hostmaster@gdhn.com.br".
A primeira linha termina com um parnteses, que indica o incio da configurao do
domnio. Temos ento:
2008061645 3H 15M 1W 1D )
O "2008061645" o valor de sincronismo, que permite que o servidor DNS secundrio
se mantenha sincronizado com o principal, detectando alteraes na configurao. O
servidor DNS checa periodicamente as informaes disponibilizadas pelo servidor
primrio e realiza uma atualizao sempre que percebe que o nmero de sincronismo do
servidor mais alto que o seu (do servidor secundrio).
No existe uma regra especfica para a formatao do nmero de sincronismo; voc
pode simplesmente usar um nmero de 10 dgitos aleatrio e aument-lo a cada
mudana na configurao.
Uma conveno popular usar a data da ltima alterao (como em: 20080616) e um
nmero de dois dgitos qualquer, aumentando sequencialmente a cada mudana. Ela
acaba sendo til, pois faz com que voc nunca se esquea de atualizar o nmero de
sincronismo ao alterar a configurao do servidor. :)
Sempre que editar a configurao ou sempre que configurar um servidor DNS a partir
de um template qualquer, lembre-se de atualizar o nmero de sincronismo, usando a
data atual ou outro nmero definido por voc. Uma observao que o nmero no
servidor primrio deve ser sempre superior ao nmero no servidor secundrio, caso
contrrio a atualizao nunca disparada. Veja que a conveno de usar a data evita
esse problema, j que ela faz com que o servidor que foi atualizado por ltimo tenha
sempre o nmero mais alto.
Continuando, os quatro campos seguintes (3H 15M 1W 1D) orientam o servidor DNS
secundrio (caso voc tenha um). O primeiro campo indica o tempo que o servidor
aguarda entre as atualizaes (3 horas). Caso ele perceba que o servidor principal est
fora do ar, ele tenta fazer uma transferncia de zona, ou seja, tenta assumir a
responsabilidade sob o domnio. Caso a transferncia falhe e o servidor principal
continue fora do ar, ele aguarda o tempo especificado no segundo campo (15 minutos) e
tenta novamente.
O terceiro campo indica o tempo mximo que ele pode responder pelo domnio, antes
que as informaes expirem (1 semana, tempo mais do que suficiente para voc arrumar
o servidor principal ;) e o tempo mnimo antes de devolver o domnio para o servidor
principal quando ele retornar (1 dia). Se voc acha que uma semana pouco tempo,
voc pode aumentar o valor, usando, por exemplo, "4W" (4 semanas). Com isso voc
tem mais tempo para restaurar o servidor primrio em caso de catstrofe.
Esses so os valores padro, por isso no existem muitos motivos para alter-los. A
transferncia do domnio para o DNS secundrio sempre uma operao demorada, por
causa do cache feito pelos diversos servidores DNS espalhados pelo mundo: demora de
um a dois dias at que todos atualizem suas tabelas de endereos. A principal prioridade
deve ser evitar que o servidor principal fique indisponvel em primeiro lugar.
Muitos preferem especificar esses valores em segundos. Uma configurao muito
comum separar os valores por linha, incluindo comentrios, como em:
2008061645; serial
10800; refresh, seconds
900; retry, seconds
604800; expire, seconds
86400 ); minimum, seconds
O resultado exatamente o mesmo. A nica diferena que voc vai acabar digitando
vrias linhas a mais.
As duas linhas a seguir concluem a seo inicial:
NS servidor.gdhn.com.br.
IN MX 10 servidor.gdhn.com.br.
A linha "NS" (Name Server) diz quem so os servidores DNS responsveis pelo
domnio. Ao usar apenas um servidor DNS, voc simplesmente repete o nome do
servidor, seguido pelo domnio, como adicionamos na primeira linha. Caso voc esteja
usando dois servidores, ento voc precisa declarar ambos, como em:
NS servidor.gdhn.com.br.
NS ns2.gdhn.com.br.
A linha "IN MX" (Mail Exchangers) necessria sempre que voc pretende usar um
servidor de e-mails (voc pode escolher entre usar o Postfix, Qmail, Sendmail ou outro
MTA). Aqui estou simplesmente usando a mesma mquina para tudo, por isso
novamente citei o "servidor.gdhn.com.br", que acumula mais esta funo. Assim como
no caso do DNS, voc pode especificar um servidor de e-mails secundrio, que passa a
receber os e-mails caso seu servidor principal saia fora do ar. Nesse caso, voc adiciona
uma segunda linha, como em:
IN MX 10 servidor.gdhn.com.br.
IN MX 20 outroservidor.outrodominio.com.br.
Os nmeros indicam a prioridade de cada servidor. O servidor da primeira linha tem
prioridade 10, por isso o primrio. O segundo tem prioridade 20 e por isso s assume
em casos de problemas com o primrio. Usar um segundo servidor de e-mails, em um
domnio separado, adiciona uma camada extra de redundncia e evita que voc perca e-
mails caso seu servidor fique temporariamente fora do ar.
Em grandes redes, possvel adicionar um volume muito maior de servidores, de forma
a garantir a operao do servio em qualquer situao. possvel at mesmo terceirizar
o servio, adicionando os servidores de uma empresa externa. Ao usar o Google apps
for your domain (https://www.google.com/a/), que permite criar contas do Gmail com o
domnio do seu site, por exemplo, voc orientado a adicionar as seguintes linhas na
configurao:
IN MX 1 ASPMX.L.GOOGLE.COM.
IN MX 5 ALT1.ASPMX.L.GOOGLE.COM.
IN MX 5 ALT2.ASPMX.L.GOOGLE.COM.
IN MX 10 ASPMX2.GOOGLEMAIL.COM.
IN MX 10 ASPMX3.GOOGLEMAIL.COM.
IN MX 10 ASPMX4.GOOGLEMAIL.COM.
IN MX 10 ASPMX5.GOOGLEMAIL.COM.
Com isso, os e-mails so recebidos pelos servidores do Google (veja que so usados
nada menos do que 7 servidores diferentes), que os armazenam nas contas apropriadas.
O servidor DNS do seu site passa a apenas encaminhar as requisies.
Uma observao que o protocolo SMTP prev falhas nos links entre os servidores, de
forma que, caso o servidor de e-mail principal esteja inativo, o emissor tenta contact-lo
durante um longo perodo (o default so 3 dias) antes de tentar o servidor secundrio.
Com isso, usar vrios servidores no resolve o problema completamente, j que em caso
de falha no servidor primrio, as mensagens passaro a chegar com um grande atraso.
Outra observao que os endereos dos domnios da configurao fornecida pelo
Google aparecem em letras maisculas, mas, apesar disso, a configurao funciona sem
problemas. Isso acontece porque, diferente de outras configuraes, os nomes de
domnio so case-insensitive, de forma que tanto faz escrev-los usando letras
minsculas ou maisculas.
Depois dessas linhas iniciais, temos a parte mais importante, em que voc especifica o
endereo IP do servidor e pode cadastrar subdomnios, como em:
gdhn.com.br. A 64.234.23.12
www A 64.234.23.12
ftp A 64.234.23.12
smtp A 64.234.23.12
Nesse exemplo, inclu tambm trs subdomnios, o "www", "ftp" e "smtp", ambos
relacionados ao IP do servidor. Isso permite que os visitantes digitem
"www.gdhn.com.br" ou "ftp.gdhn.com.br" no navegador. Ao trabalhar com
subdomnios, voc pode relacion-los com IP's ou domnios diferentes. Por exemplo,
muitos portais possuem vrios subdomnios, como "www1", "www2" e "www3", onde
cada um um servidor diferente, configurados para dividir os acessos.
Ao trabalhar com dois servidores DNS, adicione tambm uma entrada para o servidor
secundrio, especificando o nome do segundo servidor (ns2 no exemplo) e o endereo
IP, como em:
gdhn.com.br. A 64.234.23.12
www A 64.234.23.12
ftp A 64.234.23.12
smtp A 64.234.23.12
ns2 A 64.234.23.13
Note o segundo DNS usa o IP .13, enquanto o servidor principal usa o .12, mas ambos
esto dentro da mesma faixa de endereos.

DNS primrio e secundrio no mesmo servidor

Como comentei anteriormente, possvel fazer com que um nico servidor dedicado
(que disponha de dois ou mais endereos IP) atue simultaneamente como servidor DNS
primrio e secundrio, evitando que voc precise de um segundo servidor separado.
Para isso, precisamos apenas criar um alias para a placa de rede. Se o segundo IP o
"64.234.23.13" e a placa de rede a "eth0", o comando seria:
# ifconfig eth0:1 64.234.23.13
A partir da, seu servidor passa a responder pelos dois endereos IP, e voc pode us-lo
simultaneamente como DNS primrio e secundrio.
Naturalmente, ao fazer isso, voc perde a redundncia (que o grande motivo de usar
dois servidores DNS em primeiro lugar) mas isso nem sempre um grande problema, j
que se o servidor DNS est hospedado no mesmo servidor que seu site, no faz muita
diferena ter dois servidores DNS, pois se o servidor principal cair, o site ficar fora do
ar de qualquer forma.
Sites maiores possuem sistemas de redundncia e, muitas vezes, servidores DNS
separados, o que cria uma malha de segurana. por isso que muito raro a pgina de
um portal ficar fora do ar, por exemplo.
Continuando, o comando do ifconfig no permanente, de forma que voc deve
adicion-lo a um dos arquivos de inicializao do sistema (como o "/etc/rc.local") para
que a configurao torne-se permanente. Nas distribuies derivadas do Debian voc
pode adicionar o alias diretamente ao arquivo "/etc/network/interfaces", logo depois da
configurao da interface principal, como em:
auto eth0:1
iface eth0:0 inet static
address 64.234.23.13
netmask 255.255.255.248
necessrio tambm especificar o segundo endereo na configurao da zona no Bind,
adicionando uma linha "NS" adicional. Como no caso o mesmo servidor responde pelos
dois endereos IP, voc pode simplesmente inventar um nome fictcio para o segundo
endereo ao inclu-lo na configurao, como nesse exemplo, onde uso o nome
"secundario":
@ IN SOA servidor.gdhn.com.br. hostmaster.gdhn.com.br. (
2008061645 3H 15M 1W 1D )
NS servidor.gdhn.com.br.
NS secundario.gdhn.com.br.
IN MX 10 servidor.gdhn.com.br.
gdhn.com.br. A 64.234.23.12
secundario A 64.234.23.13
O "A" abreviao de "Address mapping" e usado em entradas onde um domnio ou
um subdomnio relacionado a um endereo. Voc pode tambm usar a diretiva "IN
CNAME" para criar aliases, ou seja, subdomnios que atuam como apelidos para outros.
Veja um exemplo:
gdhn.com.br. A 64.234.23.12
www A 64.234.23.12
ftp A 64.234.23.12
smtp A 64.234.23.12
ns2 A 64.234.23.13
joao A 200.123.23.2
maria IN CNAME joao
Nesse caso, o subdomnio "maria" simplesmente um alias para o "joao", que aponta
para um IP externo. Voc pode criar quantos subdomnios de aliases precisar.
Para especificar endereos IPV6, voc usa a diretiva "AAAA" no lugar de "A", como
em:
isac AAAA 2001:bce4:5641:3412:341:45ae:fe32:65
Concluindo, o nome do DNS secundrio especificado na configurao (o "secundario"
no meu exemplo) deve ser includo no arquivo "/etc/hosts", de forma que o endereo IP
fornecido no alias da placa de rede seja relacionado ao segundo nome, como em:
# /etc/hosts
127.0.0.1 localhost.localdomain localhost
64.234.23.12 servidor.gdhn.com.br servidor
64.234.23.13 secundario.gdhn.com.br secundario
Ao terminar, voc pode testar a configurao do seu servidor DNS usando o comando
dig. No Debian ele instalado juntamente com o pacote "dnsutils". Faa uma busca
pelo domnio, especificando o endereo IP do DNS que acabou de configurar, como em:
$ dig gdhn.com.br @64.234.23.12
Isso faz com que ele pergunte diretamente ao seu servidor, o que permite testar a
configurao imediatamente, sem precisar esperar pela propagao do registro do
domnio. Se tudo estiver correto, voc ver algo como:
;; ANSWER SECTION:
gdhn.com.br. 86400 IN A 64.234.23.12
;; AUTHORITY SECTION:
gdhn.com.br. 86400 IN NS servidor.gdhn.com.br.
gdhn.com.br. 86400 IN NS secundario.gdhn.com.br.
Faa o mesmo com o IP do DNS secundrio, como em:
$ dig gdhn.com.br @64.234.23.13
Ambos devem devolver a mesma resposta.
Para adicionar mais domnios, edite o arquivo "/etc/named.conf" (ou o
"/etc/named.conf.local"), adicionando sees separadas (e especificando arquivos de
configurao separados) para cada um dos domnios, como em:
zone "joao.com.br" IN {
type master;
file "/etc/bind/db.joao";
allow-transfer { 64.234.23.13; };
};
zone "maria.com.br" IN {
type master;
file "/etc/bind/db.maria";
allow-transfer { 64.234.23.13; };
};
Depois que voc configurou o primeiro domnio, fica fcil adicionar domnios
adicionais, pois voc pode simplesmente gerar cpias do arquivo original, alterando
apenas as opes que forem diferentes, tais como o nome do domnio e os subdomnios
desejados. Aqui temos mais um exemplo de configurao:
@ IN SOA servidor.joao.com.br. contato.joao.com.br. (
2008051567 3H 15M 1W 1D )
NS servidor.joao.com.br.
NS ns2.joao.com.br.
IN MX 10 servidor.joao.com.br.
joao.com.br. A 64.234.23.12
www A 64.234.22.12
forum A 64.234.22.12
smtp A 64.234.22.12
ns2 A 64.234.23.13
downloads A 72.213.45.23
Veja que o subdomnio "downloads" aponta para um servidor diferente que,
naturalmente, deve ter um servidor web configurado para responder pelo domnio.

Usando um servidor secundrio separado

Vamos agora a uma configurao mais elaborada, usando dois servidores, configurados
como master e slave. Como comentei, essa configurao se aplica apenas quando voc
realmente utiliza dois servidores separados e no em casos em que voc tem um nico
servidor configurado para utilizar dois endereos IP. No exemplo, temos dois
servidores, o primrio utilizando o endereo "64.234.23.12" e o secundrio o endereo
"64.234.23.13".
O primeiro passo a configurao no arquivo "/etc/bind/named.conf", ou
"/etc/bind/named.conf.local", que diferente nos dois servidores.
No servidor primrio, a entrada deve conter a linha "allow-transfer", especificando o
endereo do servidor secundrio. Ela indica que o servidor secundrio pode assumir a
responsabilidade sobre o domnio em caso de problemas com o titular:
zone "gdhn.com.br" IN {
type master;
file "/etc/bind/db.gdhn";
allow-transfer { 64.234.23.13; };
};
Na configurao do servidor DNS secundrio, mudam duas linhas, onde voc
especifica a posio hierrquica do servidor ("type slave" ao invs de "type master") e o
endereo IP do servidor configurado como master:
zone "gdhn.com.br" IN {
type slave;
file "/etc/bind/db.gdhn";
masters { 64.234.23.12; };
};

Ao usar dois servidores separados como master e slave, importante que a porta 53
TCP esteja aberta no firewall tanto para entrada quanto para sada. Embora o protocolo
DNS utilize a porta 53 UDP para a resoluo de nomes, a porta 53 TCP usada durante
as transferncias de zona (Zone Transfers), ou seja, durante o processo de sincronismo
entre os dois servidores. Sem acesso porta 53 TCP do servidor principal, o servidor
DNS secundrio simplesmente no tem como desempenhar suas funes.
Continuando, temos a configurao do arquivo "/etc/bind/db.gdhn", que deve conter
duas entradas "NS", uma para o servidor primrio e outra para o servidor secundrio,
alm de uma entrada "A" relacionando o nome do servidor secundrio com o endereo
utilizado por ele, como em:
@ IN SOA servidor.gdhn.com.br. hostmaster.gdhn.com.br. (
2008061645 3H 15M 1W 1D )
NS servidor.gdhn.com.br.
NS ns1.gdhn.com.br.
IN MX 10 servidor.gdhn.com.br.
gdhn.com.br. A 64.234.23.12
www A 64.234.23.12
ftp A 64.234.23.12
smtp A 64.234.23.12
ns2 A 64.234.23.13
Uma curiosidade que a configurao precisa ser feita apenas no servidor primrio, j
que o servidor secundrio se sincroniza periodicamente em relao a ele, realizando
transferncias de zona. O mesmo se aplica s atualizaes no arquivo que, novamente,
precisam ser feitas apenas no servidor primrio. Ao terminar, no esquea de reiniciar o
servio para que as alteraes entrem em vigor.
Na segunda parte deste tutorial veremos detalhes sobre a configurao do DNS
reverso, configurao de servidores DNS para redes locais e tambm sobre o uso do
Bind dentro de um chroot para melhorar a segurana.
Confira a segunda parte em: http://www.hardware.com.br/tutoriais/servidores-dns_2/