Você está na página 1de 26

Administrao de redes

Servidor de nomes DNS O servidor de nomes DNS um servio que faz a traduo de endereos IP (200.xxx.xxx.xxx) para nome de domnios como linuxbrasil.org.br, google.com.br etc e vice-versa. O programa usado no Linux / Unix o Bind que iniciou com a verso 4 depois 8, 9 e atualmente disponvel na verso 9.4.2 e o servio (chamado de daemon) que responde pelas requisies de nomes de domnios o servio named.

O servio de DNS do lado do cliente que faz a requisies sobre um nome de domnio o arquivo /etc/resolv.conf e o do lado do servidor o daemon named onde veremos seus arquivos e scripts de configurao no Red Hat / Fedora e Debian e similares, mas podendo ser usado em qualquer distribuio Linux.

No se esquea de fazer com que seu firewall de aceite conexes 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 primrio) onde est armazenado em arquivos de configurao local todas as configuraes de nomes de domnios com autoridade mxima para consultas de um domnio. Servidor escravo (slave) - tambm chamado de servidor secundrio com autoridade para responder consultas de nomes de domnio caso o servidor mestre saia do ar, no servidor escravo feito uma transferncia do banco de dados de arquivos de nomes de

domnios do servidor mestre mantendo uma copia local do servidor mestre, essa transferncia chamada de zona de transferncia. Servidor cache (chaching) - um servidor cache um servidor que no tem autoridade de respostas de domnios e tem apenas instalado e executado o servio named, com as respostas das consultas de domnios atravs de servidores mestres e escravos remotos. Dependendo da quantidade de domnios ou do domnio necessrio para as requisies de consultas DNS apenas um servidor mestre (primrio) ou um servidor mestre(primrio) e um ou mais escravo(s) (secundrio).

Para aumentar e desempenho e confiabilidade caso algum servidor saia fora do ar necessrio colocar dois ou mais servidores mestres e escravos e um servidor cache em cada rede ou sub-rede local para atender e armazenar as pesquisas de nomes de domnios.

Arquivos de configurao do named Para uma configurao do named so necessrio os seguintes arquivos: arquivo de nomes de hosts (localhost), arquivos dos servidores root(raz) ( db.root no Debian e named.ca no Fedora e Red Hat) e o arquivo do named (named.conf).

Abaixo segue os arquivos do named no Red Hat / Fedora e Debian, em outras distribuies Linux pode estar em diretrios diferentes.

* Obs - O Fedora instala o named com chroot , onde o usurio do named enjaulado no diretrio /var/named/chroot, portanto a configurao do named fica localizado em /var/named/ .

localhost - (/etc/hosts) - arquivo que contm de consulta de dominio local (localhost) e nome do computador (hostname). hint Red Hat / Fedora(/etc/named.ca) e Debian (/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 configurao principal do named onde fica armazenado as informaes dos nomes dos domnios podendo ser locais ou remotos. Abaixo seguem os arquivos de zonas e zonas reversas onde so armazenados os nomes dos domnios, sendo necessrios apenas no servidor mestre(primrio). arquivos de zona - o arquivo onde fica armazenado as informaes dos domnios e nomes dos hosts apontando para os endereos IP, geralmente armazenado formato dominio.zone. (Ex : dns1.dominio.com.br => 200.000.000.000). arquivos de zona reversa - o inverso dos arquivos de zona aponta endereos IP para 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 configurao dos nomes dos domnios e onde so definidas as zonas. Neste arquivo todas as linhas que comeam com duas barras //, # um comentrio e em cada final de linha inserido um ponto e vrgual ( ; ). J os caracteres /* */ comentrio de vrias linhas.

// uma linha # uma linha /* varias linhas */

Debian // /etc/bind/named.conf include "/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 incluso externo onde contm opes de configurao dentro do arquivo principal named.conf. zone - essa diretiva usada para idntificar uma zona de um domnio e existem 3 opes de configurao: zona de servidor cache root (raiz), zona de servidor master e zona servidor slave. type - essa opo de configurao 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 domnios zone.

/etc/bind/db.root e ponto ( . ) na diretiva zone. /etc/bind/db.local e local localhost na diretiva zone. /etc/bind/db.127 e named.loc a l - representado pela zona reversa local 127.in-addr.arpa na diretiva zone. named.local - representado pela zona named.ca - representado por um

/etc/bind/named.conf.options Este arquivo o prprio nome j diz options que um arquivo onde contm opes de configurao global como a diretiva options e dentro dessa diretiva outras diretivas como: directory, listen-on, recursion e etc. Na diretiva directory acima especificado o diretrio onde so armazenados os arquivos de configurao e de zonas dos domnios. // /etc/bind/named.conf.options options { directory "/var/cache/bind"; }; Abaixo seguem as principais diretivas de instrues usada em named.conf Diretiva include options server lwres key acl zone Significado Anexa um arquivo a named.conf (como chaves, opes e etc) sendo legiveis apenas pelo usurio do named Configura opes globais de configurao Especifica opes por servidor Configura o servidor DNS como um resolvedor leve Define uma chave de autnticao Define listas de controle de acesso Define uma zona de registros Especifica o canal de comunicao para controlar servidores de nomes com ndc Define categorias de registros e seus destinos Especifica uma viso de opes de nomes de domnio

trusted-keys Utiliza chaves preconfiguradas controls logging view

/var/named/chroot/etc/rndc.conf Arquivo de configurao da chave secreta do rndc usando na verso Bind 9.x.x, onde matm um clone da chave no arquivo /etc/named.conf ou /etc/rndc.key.

/var/named/chroot/etc/rndc.key Caso o arquivo /etc/named.conf no tenha a chave , ento usado o arquivo /etc/rndc.key, onde armazena uma cpia da chave de controle do Bind.

/etc/bind/db.root /var/named/chroot/etc/named.ca Este arquivo onde fica armazenado os servidores root DNS da internet mundial, onde deve ser atualizado aps algum tempo, para isso use o comando dig. $ dig ns . > db.root.atual $ dig ns . > named.ca.atual

Arquivo de configurao

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

. 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.4 B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201 C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12 D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90 E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10 F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241 G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4 H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53 I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17 J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30 K.ROOT-SERVERS.NET. 3600000 IN A 193.0.14.129 L.ROOT-SERVERS.NET. 3600000 IN A 198.32.64.12 M.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 servios DNS e NIS, no havendo a necessidade de edita-lo

/etc/bind/db.127 /var/named/chroot/var/named/named.local Este arquivo contm as configuraes de zonas reversas para os domnios, repare que no Debian este arquivo idntico ao arquivo db.local.
$TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL localhost. 127.0.0.1

; @ @

IN IN

NS A

/etc/bind/db.local /var/named/chroot/var/named/named.local Este arquivo contm as configuraes de domnio local (localhost) atravs da interface de loopback (127.0.0.1).
$TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL localhost. 127.0.0.1

; @ @

IN IN

NS A

Neste tipo de arquivo contm as configuraes de zona do DNS no formato de Registros de Recursos Padro (RRs) separados por espaos ou tabulaes e podem conter caracteres especiais exibidos na tabela abaixo. Sua sintaxe :

Caractere ; @ () * pe um comentrio na linha

Significado especifica o nome de domnio atual Permite que seja inserido dados em varias linhas como data do serial, atualizao, expirao 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 domnio) que o registro especifica. O nome pode ser relativo ou absoluto: Absoluto - terminam sempre com um ponto no final ( . ) e o nome de domnio e completo. (no esquea de colocar o ponto " . ") Por exemplo ( dns1.dominio.com.br.) repare um ponto no final aps o br. Relativo - a falta de um ponto no final onde um erro cometido com freqncia, implica em um nome relativo por exemplo ( webmail.dominio.com.br ), isso resultaria em webmail.dominio.com.br.dominio.com.br. anexando ao domnio principal .dominio.com.br

Campo TTL(Time to Live - Tempo de vida) - especifica o tempo em segundos que os dados desse registro possa ser colocado em cache e considerado vlido. Seu valor padro e especificado pela diretiva $TTL no incio do arquivo de dados da zona. Caso no seja especificado nenhum valor utilizado o valor padro do registro SOA. Campo classe - especifica o tipo de rede e so trs 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 so exibidos na tabela abaixo: Tipo @ Descrio Especifica a localizao do nome de domnio atual Serve para sincronizar servidores escravos com servidores mestres e para avisar os servidores escravos quando o registro SOA no servidor mestre atualizado. Se o serial do servidor mestre(20080315001)(15/03/2008) for maior que o serial do escravo(20080312001)(12/03/2008) ento ser feito a transferncia de zona, caso contrrio apenas mantm um backup e no faz a transferncia de zona. Repare que 001 indica que foi a primeira mudana Tempo usado para o servidor escravo fazer a comparao do serial com o servidor mestre. Se o servidor mestre sair do ar, o servidor escravo ir seqencialmente tentar restabelecer a conexo com servidor mestre Tempo de vida do banco de dados de um domnio no servidor escravo, se no for realizado uma conexo com o servidor mestre nesse tempo, o banco de dados de nomes de domnios ficar desatualizado podendo at interromper a resoluo de nomes de domnios (DNS). (Time to Live - Tempo de vida) o tempo de resposta usado para resolver um nome de domnio em um servidor Define uma zona DNS definindo a autoridade dos dados para esse domnio Servidor de nomes - identifica os servidores de zonas onde tem autoridade para delegar sobre domnios e subdomnios Endereo IPV4 usado converter nome de domnios em endereos IP(Ex: www.dominio.com.br. <=> 192.168.0.10)

Serial

Opes SOA

Refresh

Retry

Expire

TTL SOA Zona NS A

Bsicos

AAAA A6 PTR

Endereo IPV6 estava obsoleto mas agora est sendo utilizado Endereo IPV6 converte endereo de nome IPV6 Apontador usado para converter endereos IP em nomes de domnios (dns reverso). (Ex: 192.168.0.10 <=> www.dominio.com.br.)

DNAME Redirecionador para consultas IPV6 reversas MX KEY Segurana NXT SIG CNAME Opcionais LOC SRV TXT Especifica os servidores de E-mail Especifica a chave pblica para um nome e domnio (Next - Prximo) usado com DNSSEC para respostas negativas Especifica a zona com assinatura autnticada (Nome cannico - Alias ou Apelido) especifica um apelido ou nome para um computador host Especifica a localizao geogrfica e extenso Especifica a localizao de servios mais conhecidos Comentrios ou informaes

/etc/resolv.conf Neste arquivo voc especificar os endereos IP de DNS e o nome do domnio para nosso dominio dominio.com.br. # /etc/resolv.conf search dominio.com.br nameserver 127.0.0.1 nameserver 192.168.1.100 Caso voc no tenha um servidor DNS na sua rede coloque os DNS do seu provedor. # /etc/resolv.conf search provedor.com.br nameserver 200.000.000.001 nameserver 200.000.000.002

10

/etc/hosts Neste arquivo voc especificar nomes de hosts e endereos IP e vice-versa, usado para testes locais na rede e para loopback (localhost). No exemplo abaixo o nome de host dns1 corresponde ao IP 192.168.1.100 e vice-versa. # /etc/hosts 127.0.0.1 localhost localhost.localdomain 192.168.1.100 dns1.dominio.com.br dns1 Aps as alteraes reinicie a rede

dns1

/etc/init.d/networking restart

/sbin/service network restart

/etc/hosts.conf No Red Hat e Fedora altere as configuraes desse arquivo da seguinte forma: #/etc/hosts.conf order hosts,bind multi on

/etc/hostname Este arquivo define o nome do computador, aps as alteraes reinicie a computador com um reboot. dns1

Configurando um servidor master Neste exemplo de configurao o computador dns1.dominio.com.br ser o servidor master chamado de dns1.

11

Arquivos de configurao Hostname Domnio DNS primrio DNS secundrio Endereo IP eth0 Mscara de rede Endereo de rede Gateway dns1 dominio.com.br 127.0.0.1 192.168.1.100 192.168.1.100 255.255.255.0 192.168.1.0 192.168.1.1

Usaremos como exemplo de configurao um computador com o Debian 4.0 etch com o hostname dns1.dominio.com.br e endereo 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 domnio. Esses arquivos podem ser salvos no diretrio /etc/bind ou no diretrio especificado no arquivo /etc/bind/named.conf.options que no diretrio /var/cache/bind. // /etc/bind/named.conf include "/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 domnio 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 domnio dominio.com.br , onde definido o servidor dns no computador dns1.dominio.com.br com endereo IP 192.168.1.100 , o servidor de email no computador mx1.dominio.com.br com endereo IP 192.168.1.101 e o servidor www no computador com endereo IP 192.168.1.102.

* no esquea 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

; @ @ dns1 mx1 www

IN IN IN IN IN

NS MX A A A

dns1.dominio.com.br. 5 mx1.dominio.com.br. 192.168.1.100 192.168.1.101 192.168.1.102

/var/cache/bind/db.1.168.192 Este o arquivo de zona reversa db.1.168.192 para o domnio dominio.com.br, onde convertido endereos IP em nomes de domnios. Repare abaixo que o endereo IP invertido de 192.168.1.100 para 100.1.168.192, 192.168.1.101 para 101.1.168.192, 192.168.1.102 para 102.1.168.192, portanto no arquivo de zona reversa utilizado apenas o ltimo nmero do endereo IP, neste caso 100, 101, 102 e assim por diante.

// 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 101 102 IN IN IN PTR PTR PTR dns1.dominio.com.br. mx1.dominio.com.br. www.dominio.com.br.

/etc/resolv.conf Neste arquivo voc especificar os endereos IP de DNS e o nome para o nosso domnio dominio.com.br. # /etc/resolv.conf search dominio.com.br nameserver 127.0.0.1

14

nameserver

192.168.1.100

Aps as alteraes nos arquivos de zona reinicie o named # /etc/init.d/bind9 stop # /etc/init.d/bind9 start

Agora faa os teste com ping, named-checkconf, named-checkzone, host, dig e nslookup $ ping dns1.dominio.com.br PING 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.br PING 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.br PING 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.br zone zonename/IN: loaded serial 1 OK

# host -l dominio.com.br dns1.dominio.com.br has address 192.168.1.100 mx1.dominio.com.br has address 192.168.1.101 www.dominio.com.br has address 192.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 86400 2419200 604800 dominio.com.br. 604800 IN dominio.com.br. 604800 IN ;; ADDITIONAL SECTION: dns1.dominio.com.br. 604800 IN mx1.dominio.com.br. 604800 IN ;; ;; ;; ;; 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

SOA NS MX

dn1.dominio.com.br. root.dns1.dominio.com.br. 1 604800 dns1.dominio.com.br. 5 mx1.dominio.com.br.

A A

192.168.1.100 192.168.1.101

# nslookup > set q=any > dominio.com.br Server: 127.0.0.1 Address: 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 = 604800 dominio.com.br nameserver = dns1.dominio.com.br. dominio.com.br mail exchanger = 5 mx1.dominio.com.br. > exit

Configurando um servidor escravo

16

Neste exemplo de configurao o computador slave1.dominio.com.br ser o servidor slave (escravo), ou seja, servidor secundrio para responder pelas consultas de nomes de domnios caso o servidor master (primrio) saia fora do ar. Arquivos de configurao Hostname Domnio DNS primrio DNS secundrio Endereo IP eth0 Mscara de rede Endereo de rede Gateway slave1 dominio.com.br 127.0.0.1 192.168.1.101 192.168.1.101 255.255.255.0 192.168.1.0 192.168.1.1

Usaremos como exemplo de configurao um computador com o Debian 4.0 etch com o hostname slave1.dominio.com.br e endereo IP 192.168.1.101.

/etc/bind/named.conf Edite o arquivo e configure apenas na diretiva type para slave e logo em seguida especifique o endereo IP do servidor master na diretiva masters. Aps as configuraes o servidor escravo manter um backup do banco de dados dos nomes de domnio fazendo o que chamamos de transferncia de zona. // /etc/bind/named.conf include "/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 domnio 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; } ; // endereo 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; } ; // endereo IP do servidor master };

/etc/resolv.conf Neste arquivo voc especificar os endereos IP de DNS e o nome para o nosso domnio dominio.com.br. # /etc/resolv.conf search dominio.com.br nameserver 127.0.0.1 nameserver 192.168.1.100 # IP do servidor mestre

/etc/hosts No exemplo abaixo o nome de host slave1 corresponde ao IP 192.168.1.101 e vice-versa.

18

# /etc/hosts 127.0.0.1 localhost localhost.localdomain slave1 192.168.1.101 slave1.dominio.com.br slave1

/etc/hostname Neste arquivo definido o nome do computador. slave1 Aps as alteraes 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 domnios no diretrio espificando na diretiva directory , neste caso em /var/cache/bind/. Repare que aps reiniciar o Bind ser feito um cpia em /var/cache/bind/db.dominio.com.br
$ORIGIN . $TTL 604800 ; 1 week dominio.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.100 mx1 A 192.168.1.101 www A 192.168.1.102

Configurando um servidor cache Quando instalado o Bind ele j vem configurado para atuar como somente cache para guardar as consultas das respostas, no nosso exemplo usaremos um ou mais servidores cache na nossa rede em conjunto com um ou mais servidores master (primrio) ou um ou mais servidores slaves (secundrios). Arquivos de configurao

19

Usaremos como exemplo de configurao um computador com o Debian 4.0 etch com o hostname cache1.dominio.com.br e endereo IP 192.168.1.102.

/etc/bind/named.conf // /etc/bind/named.conf include "/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.local Esse arquivo usado para configurao 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 IN

NS A

localhost. 127.0.0.1

/etc/bind/db.127 Arquivo 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 localhost. localhost.

; @ IN 1.0.0 IN

NS PTR

/etc/hosts No exemplo abaixo o nome de host cache1 corresponde ao IP 192.168.1.102 e vice-versa. /etc/hosts 127.0.0.1 localhost localhost.localdomain cache1 192.168.1.102 cache1.dominio.com.br cache1

/etc/hostname Neste arquivo definido o nome do computador. cache1

/etc/resolv.conf Neste arquivo voc especificar os endereos IP de DNS e o nome do domnio para nosso domnio dominio.com.br. # /etc/resolv.conf search dominio.com.br nameserver 127.0.0.1 nameserver 192.168.1.100 # IP do servidor mestre

21

Aps as alteraes nos arquivos de zona reinicie o named # /etc/init.d/bind9 stop # /etc/init.d/bind9 start

Configurao de dominios virtuais

Para a configurao de domnios virtuais no mesmo servidor para a hospedagem de um site web, necessrio que o servidor DNS esteja configurado e respondendo por requisies de um determinado nome de domnio atrs de um firewall ou roteador utilizando NAT (veja a aula de configurao do roteador NAT).

Para isso utilizado um recurso no Linux chamado de IP Aliasing , onde permite atribuir vrios endereos IP na mesma placa de rede.

Neste exemplo iremos utilizar os endereos IP virtuais 192.168.1.10 e 192.168.1.11 para os domnios virtuais dominio1.com.br e dominio2.com.br. Configurao do servidor master DNS1 Crie os endereos IP virtuais criando o script abaixo em /etc/init.d # /etc/init.d/rc.alias echo "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 permisses do arquivo tornando-o executvel # chmod +x /etc/init.d/rc.alias Execute o script e repare o endereo 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.alias eth0 Encapsulamento do Link: Ethernet Endereo de HW 00:90:F5:63:33:EE inet end.: 192.168.1.100 Bcast:192.168.1.255 Masc:255.255.255.0 endereo inet6: fe80::290:f5ff:fe63:33ee/64 Escopo:Link UP BROADCASTRUNNING MULTICAST MTU:1500 Mtrica:1 RX packets:2656 errors:0 dropped:0 overruns:0 frame:0 TX packets:2671 errors:0 dropped:0 overruns:0 carrier:0 colises:0 txqueuelen:1000 RX bytes:287927 (281.1 KiB) TX bytes:1262904 (1.2 MiB) IRQ:50 Endereo de E/S:0x4800 eth0:0 Encapsulamento do Link: Ethernet Endereo 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 Mtrica:1 IRQ:50 Endereo de E/S:0x4800 eth0:1 Encapsulamento do Link: Ethernet Endereo 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 Mtrica:1 IRQ:50 Endereo de E/S:0x4800 Adicione o script na inicializao 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 domnios virtuais dominio1.com.br e dominio2.com.br // /etc/bind/named.conf // aqui criaremos as zonas para os domnios dominio1.com.br e dominio2.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 IN MX MX 5 10 webmail.dominio1.com.br. mx1.dominio.com.br.

dominio1.com.br. IN A 192.168.1.10 www.dominio1.com.br. IN A 192.168.1.10 ftp.dominio1.com.br. IN A 192.168.1.10 webmail.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 IN MX MX 5 10 webmail.dominio2.com.br. mx1.dominio.com.br.

www IN A 192.168.1.11 ftp IN A 192.168.1.11 webmail 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 domnios 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.br 10 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.br 11 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

Configurao do servidor slave DNS2 O servidor DNS2 ser configurado como slave, para isso edite o arquivo named.conf e adicione as seguintes linhas referentes aos domnios virtuais dominio1.com.br e dominio2.com.br // /etc/bind/named.conf // aqui criaremos a zona para o domnio 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; } ; // endereo 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; } ; // endereo IP do servidor master }; // aqui criaremos as zonas para os domnios dominio1.com.br e dominio2.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.br PING 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 ms 64 bytes from dns1.local (192.168.1.10): icmp_seq=2 ttl=64 time=0.041 ms

$ ping www.dominio2.com.br PING 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 ms 64 bytes from dns1.local (192.168.1.11): icmp_seq=2 ttl=64 time=0.042 ms

26