bind_dns
TRANSCRIPT
Administração de redes
Servidor de nomes DNS
O servidor de nomes DNS é um serviço que faz a tradução de endereços IP (200.xxx.xxx.xxx) para nome de domínios como linuxbrasil.org.br, google.com.br etc e vice-versa. O programausado no Linux / Unix é o Bind que iniciou com a versão 4 depois 8, 9 e atualmente disponívelna versão 9.4.2 e o serviço (chamado de daemon) que responde pelas requisições de nomesde domínios é o serviço named.
O serviço de DNS do lado do cliente que faz a requisições sobre um nome de domínio é oarquivo /etc/resolv.conf e o do lado do servidor é o daemon named onde veremos seusarquivos e scripts de configuração no Red Hat / Fedora e Debian e similares, mas podendo serusado em qualquer distribuição Linux.
Não se esqueça de fazer com que seu firewall de aceite conexões TCP e UDP na porta 53 noiptables.
iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPTiptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
Para instalar o Bind no Debian use o comando apt-get e no Fedora o comando yum
# apt-get install bind9
# yum install bind
Servidor mestre (master) - é o servidor principal (servidor primário) onde estáarmazenado em arquivos de configuração local todas as configurações de nomes dedomínios com autoridade máxima para consultas de um domínio.
•
Servidor escravo (slave) - também chamado de servidor secundário com autoridadepara responder consultas de nomes de domínio caso o servidor mestre saia do ar, noservidor escravo é feito uma transferência do banco de dados de arquivos de nomes de
•
1
domínios do servidor mestre mantendo uma copia local do servidor mestre,essa transferência é chamada de zona de transferência.Servidor cache (chaching) - um servidor cache é um servidor que não temautoridade de respostas de domínios e tem apenas instalado e executado o serviçonamed, com as respostas das consultas de domínios através de servidores mestres eescravos remotos.
•
Dependendo da quantidade de domínios ou do domínio é necessário para as requisições deconsultas DNS apenas um servidor mestre (primário) ou um servidor mestre(primário) e umou mais escravo(s) (secundário).
Para aumentar e desempenho e confiabilidade caso algum servidor saia fora do ar énecessário colocar dois ou mais servidores mestres e escravos e um servidor cache em cadarede ou sub-rede local para atender e armazenar as pesquisas de nomes de domínios.
Arquivos de configuração do named
Para uma configuração do named são necessário os seguintes arquivos: arquivo de nomes dehosts (localhost), arquivos dos servidores root(raíz) (db.root no Debian e named.ca noFedora e Red Hat) e o arquivo do named (named.conf).
Abaixo segue os arquivos do named no Red Hat / Fedora e Debian, em outras distribuiçõesLinux pode estar em diretórios diferentes.
2
* Obs - O Fedora instala o named com chroot, onde o usuário do named é enjaulado no diretório/var/named/chroot, portanto a configuração do named fica localizado em /var/named/ .
localhost - (/etc/hosts) - arquivo que contém de consulta de dominio local(localhost) e nome do computador (hostname).
•
hint - Red Ha t / Fedo ra ( /etc /named.ca) e Deb ian(/etc/bind/db.root)- armazena os nomes dos servidores root (raiz) da internet.
•
named - Red Hat / Fedora(/etc/named.conf) e Debian(/etc/bind/named.conf) - arquivo de configuração principal do named onde ficaarmazenado as informações dos nomes dos domínios podendo ser locais ou remotos.
•
Abaixo seguem os arquivos de zonas e zonas reversas onde são armazenados os nomes dosdomínios, sendo necessários apenas no servidor mestre(primário).
arquivos de zona - é o arquivo onde fica armazenado as informações dos domínios e nomes dos hosts apontando para os endereços IP, geralmente armazenadoformato dominio.zone. (Ex : dns1.dominio.com.br => 200.000.000.000).
•
arquivos de zona reversa - é o inverso dos arquivos de zona aponta endereços IPpara nome de hosts, geralmente armazenado formato dominio.rev. (Ex : => 200.000.000.000 => dns1.dominio.com.br ).
•
/etc/bind/named.conf
/etc/named.confÉ o arquivo principal de configuração dos nomes dos domínios e onde são definidas as zonas.Neste arquivo todas as linhas que começam com duas barras //, # é um comentário e emcada final de linha é inserido um ponto e vírgual ( ; ). Já os caracteres /* */ é comentário devárias linhas.
// uma linha# uma linha/*varias linhas*/
3
Debian
// /etc/bind/named.confinclude "/etc/bind/named.conf.options";
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";
};include "/etc/bind/named.conf.local";
include - essa diretiva utiliza um arquivo de inclusão externo onde contém opções deconfiguração dentro do arquivo principal named.conf.
•
zone - essa diretiva é usada para idêntificar uma zona de um domínio e existem 3opções de configuração: zona de servidor cache root (raiz), zona de servidormaster e zona servidor slave.
•
type - essa opção de configuração pode ser configurada de 3 formas:
hint - especifica os servidores raiz como servidores cache♦
•
slave - especifica os servidores escravos(slave)• master - especifica os servidores mestres(master)• file - especifica o arquivo a ser usado pela diretiva de zona dos domínios zone.•
4
/etc/bind/db.root e named.ca - representado por umponto ( . ) na diretiva zone.
♦
/etc/bind/db.local e named.local - representado pela zonalocal localhost na diretiva zone.
•
/etc/bind/db.127 e named.local - representado pela zonareversa local 127.in-addr.arpa na diretiva zone.
•
/etc/bind/named.conf.optionsEste arquivo o próprio nome já diz options que é um arquivo onde contém opções deconfiguração global como a diretiva options e dentro dessa diretiva outras diretivas como:directory, listen-on, recursion e etc. Na diretiva directory acima é especificado o diretórioonde são armazenados os arquivos de configuração e de zonas dos domínios.
// /etc/bind/named.conf.optionsoptions {
directory "/var/cache/bind";};
Abaixo seguem as principais diretivas de instruções usada em named.conf
Diretiva Significado
include Anexa um arquivo a named.conf (como chaves, opções e etc) sendolegiveis apenas pelo usuário do named
options Configura opções globais de configuraçãoserver Especifica opções por servidorlwres Configura o servidor DNS como um resolvedor levekey Define uma chave de autênticaçãoacl Define listas de controle de acessozone Define uma zona de registrostrusted-keys Utiliza chaves preconfiguradas
controls Especifica o canal de comunicação para controlar servidores de nomescom ndc
logging Define categorias de registros e seus destinosview Especifica uma visão de opções de nomes de domínio
5
/var/named/chroot/etc/rndc.confArquivo de configuração da chave secreta do rndc usando na versão Bind 9.x.x, onde matémum clone da chave no arquivo /etc/named.conf ou /etc/rndc.key.
/var/named/chroot/etc/rndc.keyCaso o arquivo /etc/named.conf não tenha a chave , então é usado o arquivo/etc/rndc.key, onde armazena uma cópia da chave de controle do Bind.
/etc/bind/db.root
/var/named/chroot/etc/named.caEste arquivo é onde fica armazenado os servidores root DNS da internet mundial, onde deveser atualizado após algum tempo, para isso use o comando dig.
$ dig ns . > db.root.atual$ dig ns . > named.ca.atual
Arquivo de configuração /etc/bind/db.root
;<<>> DiG 9.2.3<<>> ns . @a.root-servers.net.;; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status:NOERROR, id: 18944;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13;; QUESTION SECTION:;. IN NS;; ANSWER SECTION:. 518400 IN NS A.ROOT-SERVERS.NET.. 518400 IN NS B.ROOT-SERVERS.NET.. 518400 IN NS C.ROOT-SERVERS.NET.. 518400 IN NS D.ROOT-SERVERS.NET.. 518400 IN NS E.ROOT-SERVERS.NET.. 518400 IN NS F.ROOT-SERVERS.NET.. 518400 IN NS G.ROOT-SERVERS.NET.. 518400 IN NS H.ROOT-SERVERS.NET.. 518400 IN NS I.ROOT-SERVERS.NET.. 518400 IN NS J.ROOT-SERVERS.NET.
6
. 518400 IN NS K.ROOT-SERVERS.NET.
. 518400 IN NS L.ROOT-SERVERS.NET.
. 518400 IN NS M.ROOT-SERVERS.NET.;; ADDITIONAL SECTION:A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30K.ROOT-SERVERS.NET. 3600000 IN A 193.0.14.129L.ROOT-SERVERS.NET. 3600000 IN A 198.32.64.12M.ROOT-SERVERS.NET. 3600000 IN A 202.12.27.33;; Query time: 81 msec;; SERVER: 198.41.0.4#53(a.root-servers.net.);; WHEN: Sun Feb 1 11:27:14 2004;; MSG SIZE rcvd: 436
/etc/nsswitch.conf
Este arquivo é utilizado por serviços DNS e NIS, não havendo a necessidade de edita-lo
/etc/bind/db.127
/var/named/chroot/var/named/named.localEste arquivo contém as configurações de zonas reversas para os domínios, repare que noDebian este arquivo é idêntico ao arquivo db.local.
$TTL 604800@ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS localhost.@ IN A 127.0.0.1
7
/etc/bind/db.local
/var/named/chroot/var/named/named.localEste arquivo contém as configurações de domínio local (localhost) através da interface deloopback (127.0.0.1).
$TTL 604800@ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS localhost.@ IN A 127.0.0.1
Neste tipo de arquivo contém as configurações de zona do DNS no formato de Registros deRecursos Padrão (RRs) separados por espaços ou tabulações e podem conter caracteresespeciais exibidos na tabela abaixo. Sua sintaxe é :
Caractere Significado; põe um comentário na linha@ especifica o nome de domínio atual
() Permite que seja inserido dados em varias linhas como data doserial, atualização, expiração e etc
* Este caractere chamado de coringa é usado apenas para o campo nome
nome TTL classe tipo dados
Campo nome - é onde especifica a identidade (geralmente pode ser um computador(host)ou um domínio) que o registro especifica. O nome pode ser relativo ou absoluto:
Absoluto - terminam sempre com um ponto no final ( . ) e o nome de domínio ecompleto. (não esqueça de colocar o ponto " . ") Por exemplo ( dns1.dominio.com.br.) -repare um ponto no final após o br.
•
Relativo - a falta de um ponto no final onde é um erro cometido com freqüência,implica em um nome relativo por exemplo ( webmail.dominio.com.br ), isso resultariaem webmail.dominio.com.br.dominio.com.br. anexando ao domínioprincipal .dominio.com.br
•
8
Campo TTL(Time to Live - Tempo de vida) - especifica o tempo em segundos que osdados desse registro possa ser colocado em cache e considerado válido. Seu valor padrão eespecificado pela diretiva $TTL no início do arquivo de dados da zona. Caso não sejaespecificado nenhum valor é utilizado o valor padrão do registro SOA.Campo classe - especifica o tipo de rede e são três valores:
IN - servidores de Internet (usaremos somente este) • HS - servidores de Hesiod• CH - servidores de ChaosNet•
Campo tipo - este campo especifica o tipo de registro DNS e seus principais tipos sãoexibidos na tabela abaixo:
Tipo Descrição
OpçõesSOA
@ Especifica a localização do nome de domínio atual
Serial
Serve para sincronizar servidores escravos com servidoresmestres e para avisar os servidores escravos quando o registroSOA no servidor mestre é atualizado. Se o serial do servidormestre(20080315001)(15/03/2008) for maior que o serialdo escravo(20080312001)(12/03/2008) então será feito atransferência de zona, caso contrário apenas mantém umbackup e não faz a transferência de zona. Repare que 001indica que foi a primeira mudança
Refresh Tempo usado para o servidor escravo fazer a comparação doserial com o servidor mestre.
RetrySe o servidor mestre sair do ar, o servidor escravo iráseqüencialmente tentar restabelecer a conexão com servidormestre
Expire
Tempo de vida do banco de dados de um domínio no servidorescravo, se não for realizado uma conexão com o servidormestre nesse tempo, o banco de dados de nomes de domíniosficará desatualizado podendo até interromper a resolução denomes de domínios (DNS).
TTL (Time to Live - Tempo de vida) É o tempo de resposta usadopara resolver um nome de domínio em um servidor
ZonaSOA Define uma zona DNS definindo a autoridade dos dados para
esse domínio
NS Servidor de nomes - identifica os servidores de zonas onde temautoridade para delegar sobre domínios e subdomínios
Básicos
A Endereço IPV4 usado converter nome de domíniosem endereços IP(Ex: www.dominio.com.br. <=> 192.168.0.10)
9
AAAA Endereço IPV6 estava obsoleto mas agora está sendo utilizado
A6 Endereço IPV6 converte endereço de nome IPV6
PTRApontador usado para converter endereços IP em nomes dedomínios (dns reverso). (Ex: 192.168.0.10 <=>www.dominio.com.br.)
DNAME Redirecionador para consultas IPV6 reversas
MX Especifica os servidores de E-mail
SegurançaKEY Especifica a chave pública para um nome e domínio
NXT (Next - Próximo) usado com DNSSEC para respostas negativas
SIG Especifica a zona com assinatura autênticada
OpcionaisCNAME (Nome canônico - Alias ou Apelido) especifica um apelido ou
nome para um computador host
LOC Especifica a localização geográfica e extensão
SRV Especifica a localização de serviços mais conhecidos
TXT Comentários ou informações
/etc/resolv.conf
Neste arquivo você especificar os endereços IP de DNS e o nome do domínio para nossodominio dominio.com.br.
# /etc/resolv.confsearch dominio.com.brnameserver 127.0.0.1nameserver 192.168.1.100
Caso você não tenha um servidor DNS na sua rede coloque os DNS do seu provedor.
# /etc/resolv.confsearch provedor.com.brnameserver 200.000.000.001nameserver 200.000.000.002
10
/etc/hostsNeste arquivo você especificar nomes de hosts e endereços IP e vice-versa, usado paratestes locais na rede e para loopback (localhost). No exemplo abaixo o nome de host dns1corresponde ao IP 192.168.1.100 e vice-versa.
# /etc/hosts127.0.0.1 localhost localhost.localdomain dns1192.168.1.100 dns1.dominio.com.br dns1
Após as alterações reinicie a rede
/etc/init.d/networking restart
/sbin/service network restart
/etc/hosts.confNo Red Hat e Fedora altere as configurações desse arquivo da seguinte forma:
#/etc/hosts.conforder hosts,bindmulti on
/etc/hostnameEste arquivo define o nome do computador, após as alterações reinicie a computador com umreboot.
dns1
Configurando um servidor master
Neste exemplo de configuração o computador dns1.dominio.com.br será o servidor masterchamado de dns1.
11
Arquivos de configuração
Hostname dns1
Domínio dominio.com.br
DNS primário 127.0.0.1
DNS secundário 192.168.1.100
Endereço IP eth0 192.168.1.100
Máscara de rede 255.255.255.0
Endereço de rede 192.168.1.0
Gateway 192.168.1.1
Usaremos como exemplo de configuração um computador com o Debian 4.0 etch com ohostname dns1.dominio.com.br e endereço IP 192.168.1.100.
/etc/bind/named.conf
Edite o arquivo e acrescente no final os arquvios de zona e zona reversa para o domínio.Esses arquivos podem ser salvos no diretório /etc/bind ou no diretório especificado noarquivo /etc/bind/named.conf.options que é no diretório /var/cache/bind.
// /etc/bind/named.confinclude "/etc/bind/named.conf.options";
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";};
12
zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0";};
zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255";};include "/etc/bind/named.conf.local";// aqui criaremos a zona para o domínio dominio.com.br
zone "dominio.com.br" { // seu dominio type master; // tipo master file "/var/cache/bind/db.dominio.com.br"; // arquivo de zona};
zone "db.1.168.192.in-addr.arpa" { // seu IP reverso type master; // tipo master file "/var/cache/bind/db.1.168.192"; // arquivo de zona reversa};
/var/cache/bind/db.dominio.com.br
Este arquivo de zona armazena os dados do domínio dominio.com.br, onde é definido oservidor dns no computador dns1.dominio.com.br com endereço IP 192.168.1.100, oservidor de email no computador mx1.dominio.com.br com endereço IP 192.168.1.101 e oservidor www no computador com endereço IP 192.168.1.102.
* não esqueça do ponto ( . ) depois no final de dn1.dominio.com.br.e root.dns1.dominio.com.br. por que ocorrerá erro.
// var/cache/bind/db.dominio.com.br$TTL 604800@ IN SOA dns1.dominio.com.br. root.dns1.dominio.com.br. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL
13
;@ IN NS dns1.dominio.com.br.@ IN MX 5 mx1.dominio.com.br.
dns1 IN A 192.168.1.100mx1 IN A 192.168.1.101www IN A 192.168.1.102
/var/cache/bind/db.1.168.192
Este é o arquivo de zona reversa db.1.168.192 para o domínio dominio.com.br, onde éconvertido endereços IP em nomes de domínios. Repare abaixo que o endereço IP é invertidod e 1 9 2 . 1 6 8 . 1 . 1 0 0 p a r a 1 0 0 . 1 . 1 6 8 . 1 9 2 , 1 9 2 . 1 6 8 . 1 . 1 0 1 p a r a101.1.168.192, 192.168.1.102 para 102.1.168.192, portanto no arquivo de zona reversaé utilizado apenas o último número do endereço IP, neste caso 100, 101, 102 e assim pordiante.
// var/cache/bind/db.1.168.192$TTL 604800@ IN SOA dns1.dominio.com.br. root.dns1.dominio.com.br. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS dns1.dominio.com.br.
100 IN PTR dns1.dominio.com.br.101 IN PTR mx1.dominio.com.br.102 IN PTR www.dominio.com.br.
/etc/resolv.conf
Neste arquivo você especificar os endereços IP de DNS e o nome para o nosso domíniodominio.com.br.
# /etc/resolv.confsearch dominio.com.brnameserver 127.0.0.1
14
nameserver 192.168.1.100
Após as alterações nos arquivos de zona reinicie o named
# /etc/init.d/bind9 stop# /etc/init.d/bind9 start
Agora faça os teste com ping, named-checkconf, named-checkzone, host, dig enslookup
$ ping dns1.dominio.com.brPING dns1.dominio.com.br (192.168.1.100) 56(84) bytes of data.64 bytes from dns1.dominio.com.br (192.168.1.100): icmp_seq=1 ttl=64 time=0.050 ms
$ ping mx1.dominio.com.brPING mx1.dominio.com.br (192.168.1.101) 56(84) bytes of data.64 bytes from 192.168.1.101: icmp_seq=1 ttl=64 time=0.413 ms
$ ping www.dominio.com.brPING www.dominio.com.br (192.168.1.101) 56(84) bytes of data.64 bytes from 192.168.1.101: icmp_seq=1 ttl=64 time=0.413 ms
#named-checkconf
# named-checkzone zonename/var/cache/bind/db.dominio.com.brzone zonename/IN: loaded serial 1OK
# host -l dominio.com.brdns1.dominio.com.br has address192.168.1.100mx1.dominio.com.br has address192.168.1.101www.dominio.com.br has address192.168.1.102
15
# dig -t ANY dominio.com.br;; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56566;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 2
;; QUESTION SECTION:;dominio.com.br. IN ANY
;; ANSWER SECTION:dominio.com.br. 604800 IN SOA dn1.dominio.com.br. root.dns1.dominio.com.br. 1 60480086400 2419200 604800dominio.com.br. 604800 IN NS dns1.dominio.com.br.dominio.com.br. 604800 IN MX 5 mx1.dominio.com.br.
;; ADDITIONAL SECTION:dns1.dominio.com.br. 604800 IN A 192.168.1.100mx1.dominio.com.br. 604800 IN A 192.168.1.101
;; Query time: 2 msec;; SERVER: 127.0.0.1#53(127.0.0.1);; WHEN: Tue Dec 4 21:54:32 2007;; MSG SIZE rcvd: 149
# nslookup> set q=any> dominio.com.brServer: 127.0.0.1Address: 127.0.0.1#53
dominio.com.br origin = dn1.dominio.com.br mail addr = root.dns1.dominio.com.br serial = 1 refresh = 604800 retry = 86400 expire = 2419200 minimum = 604800dominio.com.br nameserver = dns1.dominio.com.br.dominio.com.br mail exchanger = 5mx1.dominio.com.br.> exit
Configurando um servidor escravo
16
Neste exemplo de configuração o computador slave1.dominio.com.br será o servidor slave(escravo), ou seja, servidor secundário para responder pelas consultas de nomes de domínios caso o servidor master (primário) saia fora do ar.
Arquivos de configuração
Hostname slave1
Domínio dominio.com.br
DNS primário 127.0.0.1
DNS secundário 192.168.1.101
Endereço IP eth0 192.168.1.101
Máscara de rede 255.255.255.0
Endereço de rede 192.168.1.0
Gateway 192.168.1.1
Usaremos como exemplo de configuração um computador com o Debian 4.0 etch com ohostname slave1.dominio.com.br e endereço IP 192.168.1.101.
/etc/bind/named.conf
Edite o arquivo e configure apenas na diretiva type para slave e logo em seguidaespecifique o endereço IP do servidor master na diretiva masters. Após as configurações oservidor escravo manterá um backup do banco de dados dos nomes de domínio fazendo o que chamamos de transferência de zona.
// /etc/bind/named.confinclude "/etc/bind/named.conf.options";
zone "." { type hint; file "/etc/bind/db.root";};
zone "localhost" { type master; file "/etc/bind/db.local";
17
};
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";};include "/etc/bind/named.conf.local";// aqui criaremos a zona para o domínio dominio.com.br
zone "dominio.com.br" { // seu dominio type slave; // tipo slave file "/var/cache/bind/db.dominio.com.br"; // arquivo de zona
masters { 192.168.1.100; } ; // endereço IP do servidor master};
zone "db.1.168.192.in-addr.arpa" { // seu IP reverso type slave; // tipo slave file "/var/cache/bind/db.1.168.192"; // arquivo de zona reversa
masters { 192.168.1.100; } ; // endereço IP do servidor master};
/etc/resolv.conf
Neste arquivo você especificar os endereços IP de DNS e o nome para o nosso domíniodominio.com.br.
# /etc/resolv.confsearch dominio.com.brnameserver 127.0.0.1nameserver 192.168.1.100 # IP do servidor mestre
/etc/hostsNo exemplo abaixo o nome de host slave1 corresponde ao IP 192.168.1.101 e vice-versa.
18
# /etc/hosts127.0.0.1 localhost localhost.localdomain slave1192.168.1.101 slave1.dominio.com.br slave1
/etc/hostnameNeste arquivo é definido o nome do computador.
slave1
Após as alterações nos arquivos de zona reinicie o named
# /etc/init.d/bind9 stop# /etc/init.d/bind9 start
Agora periodicamente de será feito o backup do banco de dados dos domínios no diretórioespificando na diretiva directory, neste caso em /var/cache/bind/. Repare que apósreiniciar o Bind será feito um cópia em /var/cache/bind/db.dominio.com.br
$ORIGIN .$TTL 604800 ; 1 weekdominio.com.br IN SOA dn1.dominio1.com.br. root.dns1.dominio1.com.br. ( 1 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 604800 ; minimum (1 week) ) NS dns1.dominio.com.br. MX 5 mx1.dominio.com.br.$ORIGIN dominio.com.br.dns1 A 192.168.1.100mx1 A 192.168.1.101www A 192.168.1.102
Configurando um servidor cache
Quando é instalado o Bind ele já vem configurado para atuar como somente cache paraguardar as consultas das respostas, no nosso exemplo usaremos um ou mais servidorescache na nossa rede em conjunto com um ou mais servidores master (primário) ou um oumais servidores slaves (secundários).
Arquivos de configuração
19
Usaremos como exemplo de configuração um computador com o Debian 4.0 etch com ohostname cache1.dominio.com.br e endereço IP 192.168.1.102.
/etc/bind/named.conf
// /etc/bind/named.confinclude "/etc/bind/named.conf.options";
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";};include "/etc/bind/named.conf.local";
/etc/bind/db.localEsse arquivo é usado para configuração de zona do DNS local para localhost (127.0.0.1).
$TTL 604800@ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;
20
@ IN NS localhost.@ IN A 127.0.0.1
/etc/bind/db.127Arquivo de zona reversa para localhost(127.0.0.1)
; BIND reverse data file for local loopback interface
$TTL 604800@ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS localhost.1.0.0 IN PTR localhost.
/etc/hostsNo exemplo abaixo o nome de host cache1 corresponde ao IP 192.168.1.102 e vice-versa.
/etc/hosts127.0.0.1 localhost localhost.localdomain cache1192.168.1.102 cache1.dominio.com.br cache1
/etc/hostnameNeste arquivo é definido o nome do computador.
cache1
/etc/resolv.conf
Neste arquivo você especificar os endereços IP de DNS e o nome do domínio para nossodomínio dominio.com.br.
# /etc/resolv.confsearch dominio.com.brnameserver 127.0.0.1nameserver 192.168.1.100 # IP do servidor mestre
21
Após as alterações nos arquivos de zona reinicie o named
# /etc/init.d/bind9 stop# /etc/init.d/bind9 start
Configuração de dominios virtuais
Para a configuração de domínios virtuais no mesmo servidor para a hospedagem de um siteweb, é necessário que o servidor DNS esteja configurado e respondendo por requisições deum determinado nome de domínio atrás de um firewall ou roteador utilizando NAT (veja aaula de configuração do roteador NAT).
Para isso é utilizado um recurso no Linux chamado de IP Aliasing, onde permite atribuirvários endereços IP na mesma placa de rede.
Neste exemplo iremos utilizar os endereços IP virtuais 192.168.1.10 e 192.168.1.11 paraos domínios virtuais dominio1.com.br e dominio2.com.br.
Configuração do servidor master DNS1
Crie os endereços IP virtuais criando o script abaixo em /etc/init.d
# /etc/init.d/rc.aliasecho "configurando IP Aliasing"
/sbin/ifconfig eth0:0 192.168.1.10 netmask 255.255.255.0/sbin/ifconfig eth0:1 192.168.1.11 netmask 255.255.255.0
/sbin/route add -host 192.168.1.10 dev eth0:0/sbin/route add -host 192.168.1.11 dev eth0:1
Mude as permissões do arquivo tornando-o executável
# chmod +x /etc/init.d/rc.alias
Execute o script e repare o endereço de hardware 00:90:F5:63:33:EE da placa de rede eth0
22
é o mesmo das interfaces virtuais eth0:0 e eth0:1.
# /etc/init.d/rc.aliaseth0 Encapsulamento do Link: Ethernet Endereço de HW 00:90:F5:63:33:EE inet end.: 192.168.1.100 Bcast:192.168.1.255 Masc:255.255.255.0 endereço inet6: fe80::290:f5ff:fe63:33ee/64 Escopo:Link UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1 RX packets:2656 errors:0 dropped:0 overruns:0 frame:0 TX packets:2671 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:287927 (281.1 KiB) TX bytes:1262904 (1.2 MiB) IRQ:50 Endereço de E/S:0x4800
eth0:0 Encapsulamento do Link: Ethernet Endereço de HW 00:90:F5:63:33:EE inet end.: 192.168.1.10 Bcast:192.168.1.255 Masc:255.255.255.0 UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1 IRQ:50 Endereço de E/S:0x4800
eth0:1 Encapsulamento do Link: Ethernet Endereço de HW 00:90:F5:63:33:EE inet end.: 192.168.1.11 Bcast:192.168.1.255 Masc:255.255.255.0 UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1 IRQ:50 Endereço de E/S:0x4800
Adicione o script na inicialização do sistema no final do arquivo /etc/rc.local
# /etc/rc.local/etc/init.d/rc.alias
Edite o arquivo named.conf e adicione as seguintes linhas referentes aos domíniosvirtuais dominio1.com.br e dominio2.com.br
// /etc/bind/named.conf
// aqui criaremos as zonas para os domínios dominio1.com.br edominio2.com.br
zone "dominio1.com.br" { type master; file "/var/cache/bind/db.dominio1.com.br"; };
zone "dominio2.com.br" { type master; file "/var/cache/bind/db.dominio2.com.br"; };
23
Crie o arquivo /var/cache/bind/db.dominio1.com.br
// var/cache/bind/db.dominio1.com.br$TTL 604800@ IN SOA dominio1.com.br. root.dominio1.com.br. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS dns1.dominio.com.br.@ IN NS dns2.dominio.com.br.
@ IN MX 5 webmail.dominio1.com.br.@ IN MX 10 mx1.dominio.com.br.
dominio1.com.br. IN A 192.168.1.10www.dominio1.com.br. IN A 192.168.1.10ftp.dominio1.com.br. IN A 192.168.1.10webmail.dominio1.com.br. IN A 192.168.1.10
Crie o arquivo /var/cache/bind/db.dominio2.com.br
// var/cache/bind/db.dominio2.com.br$TTL 604800@ IN SOA dominio2.com.br. root.dominio2.com.br. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS dns1.dominio.com.br.@ IN NS dns2.dominio.com.br.
@ IN MX 5 webmail.dominio2.com.br.@ IN MX 10 mx1.dominio.com.br.
www IN A 192.168.1.11ftp IN A 192.168.1.11webmail IN A 192.168.1.11
Edite o arquivo de zona reversa /var/cache/bind/db.1.168.192 e adicione as seguintes
24
linhas referentes aos domínios virtuais dominio1.com.br e dominio2.com.br
// var/cache/bind/db.1.168.192$TTL 604800@ IN SOA dns1.dominio.com.br. root.dns1.dominio.com.br. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS dns1.dominio.com.br.@ IN NS dns2.dominio.com.br.
; dominio1.com.br10 IN PTR dominio1.com.br.10 IN PTR www.dominio1.com.br.10 IN PTR ftp.dominio1.com.br.10 IN PTR webmail.dominio1.com.br.
; dominio2.com.br11 IN PTR dominio2.com.br.11 IN PTR www.dominio2.com.br.11 IN PTR ftp.dominio2.com.br.11 IN PTR webmail.dominio2.com.br.
Reinicie o bind
# /etc/init.d/bind9 restart
Configuração do servidor slave DNS2
O servidor DNS2 será configurado como slave, para isso edite o arquivo named.conf eadicione as seguintes linhas referentes aos domínios virtuais dominio1.com.br edominio2.com.br
// /etc/bind/named.conf
// aqui criaremos a zona para o domínio dominio.com.br
zone "dominio.com.br" { // seu dominio type slave; // tipo slave file "/var/cache/bind/db.dominio.com.br"; // arquivo de zona masters { 192.168.1.100; } ; // endereço IP do servidor master};
25
zone "db.1.168.192.in-addr.arpa" { // seu IP reverso type slave; // tipo slave file "/var/cache/bind/db.1.168.192"; // arquivo de zona reversa masters { 192.168.1.100; } ; // endereço IP do servidor master};
// aqui criaremos as zonas para os domínios dominio1.com.br edominio2.com.br
zone "dominio1.com.br" { type slave; // tipo slave file "/var/cache/bind/db.dominio1.com.br"; masters { 192.168.1.100; } ;};
zone "dominio2.com.br" { type master; file "/var/cache/bind/db.dominio2.com.br"; masters { 192.168.1.100; } ;};
Reinicie o bind e teste com comandos ping, host, dig e nslookup
# /etc/init.d/bind9 restart
$ ping www.dominio1.com.brPING www.dominio1.com.br (192.168.1.10) 56(84) bytes of data.64 bytes from dns1.local (192.168.1.10): icmp_seq=1 ttl=64 time=0.036 ms64 bytes from dns1.local (192.168.1.10): icmp_seq=2 ttl=64 time=0.041 ms
$ ping www.dominio2.com.brPING www.dominio2.com.br (192.168.1.11) 56(84) bytes of data.64 bytes from dns1.local (192.168.1.11): icmp_seq=1 ttl=64 time=0.034 ms64 bytes from dns1.local (192.168.1.11): icmp_seq=2 ttl=64 time=0.042 ms
26