bind_dns

26
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 programa usado no Linux / Unix é o Bind que iniciou com a versão 4 depois 8, 9 e atualmente disponível na versão 9.4.2 e o serviço (chamado de daemon) que responde pelas requisições de nomes de 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 é o arquivo /etc/resolv.conf e o do lado do servidor é o daemon named onde veremos seus arquivos e scripts de configuração no Red Hat / Fedora e Debian e similares, mas podendo ser usado 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 no iptables. iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT iptables -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 de domínios com autoridade máxima para consultas de um domínio. Servidor escravo (slave) - também chamado de servidor secundário com autoridade para responder consultas de nomes de domínio caso o servidor mestre saia do ar, no servidor escravo é feito uma transferência do banco de dados de arquivos de nomes de 1

Upload: pablo-verly

Post on 29-Dec-2015

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bind_DNS

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

Page 2: Bind_DNS

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

Page 3: Bind_DNS

* 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

Page 4: Bind_DNS

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

Page 5: Bind_DNS

/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

Page 6: Bind_DNS

/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

Page 7: Bind_DNS

. 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

Page 8: Bind_DNS

/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

Page 9: Bind_DNS

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

Page 10: Bind_DNS

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

Page 11: Bind_DNS

/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

Page 12: Bind_DNS

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

Page 13: Bind_DNS

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

Page 14: Bind_DNS

;@ 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

Page 15: Bind_DNS

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

Page 16: Bind_DNS

# 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

Page 17: Bind_DNS

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

Page 18: Bind_DNS

};

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

Page 19: Bind_DNS

# /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

Page 20: Bind_DNS

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

Page 21: Bind_DNS

@ 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

Page 22: Bind_DNS

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

Page 23: Bind_DNS

é 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

Page 24: Bind_DNS

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

Page 25: Bind_DNS

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

Page 26: Bind_DNS

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