GNU/Linux
 
 
DNS Server
(Domain Name System Server)

DNS Server é um servidor que transforma nome para número, ou seja, traduz um nome de host (www.google.com.br) para um endereço IP (209.85.193.147). Quando é digitado em um browser o endereço "www.google.com.br", primeiramente é consultado um servidor DNS para saber qual é o IP da máquina "www.google.com.br". Só depois disso que o site do GOOGLE é acessado. A utilização de Um servidor DNS é justificado, pois é muito mais fácil decorar um nome (ex: www.google.com.br) que um número (ex: 209.85.193.147). O DNS trabalha com porta UDP 53 para consultas e TCP 53 para a troca de zonas entre o DNS Primário e Secundário. Para um melhor entendimento clique aqui para visualizar a estrutura de rede que este artigo está baseado. A seguir tem-se uma lista com a significado de alguns termos bastante usados:




DNS Primário

Instalação DNS Primário
# apt-get update ; apt-get install bind9(no final da instalação aparecerá a mensagem "Not creating home directory `/var/cache/bind'". Será criado um diretório "/etc/bind/" com vários arquivos. A seguir se terá a descrição de cada um deles)


db.0(arquivo que faz a resolução reversa da zona de broadcast. Segundo o manual do Bind9: BIND reverse data file for broadcast zone. Não modifique este arquivo)
db.127(arquivo que faz a resolução reversa da zona local - da rede 127.0.0.0, ou seja, do endereço da interface de loopback local. Segundo o manual do Bind9: BIND reverse data file for local loopback interface. Não modifique este arquivo)
db.255(arquivo que faz a resolução reversa da zona de broadcast. Segundo o manual do Bind9: BIND reverse data file for broadcast zone. Não modifique este arquivo)
db.empty(não modifique este arquivo, ele servirá como exemplo para novos arquivos de zona. Então, quando for criar novas zonas, basta copiá-lo. Segundo o manual do Bind9: it is used for multiple zones)
db.local(arquivo que faz a resolução direta da zona local - domínio localhost, ou seja, do endereço da interface de loopback local. Segundo o manual do Bind9: BIND data file for local loopback interface. Não modifique este arquivo)
db.root(contém os endereços IP e os nomes de host dos servidores "root ou raiz" na hierarquia de DNS mundial. Não modifique este arquivo, pois os endereços IP e nomes dos DNS, que estão no topo da hierárquia mundial, geralmente não mudam. Esses IPs e seus respectivos servidores são mantidos por entidades como InterNIC, DoD, NASA etc)
named.conf(não modifique este arquivo. Ele contém todas zonas diretas e reversas padrão como localhost, broadcast, root e seus respectivos arquivos de configuração. Também, contém duas linhas que iniciam com "include". Essas linhas incluem dois arquivos externos na configuração: "/etc/bind/named.conf.options" e "/etc/bind/named.conf.local")
named.conf.local(a princípio está vazio, mas deve conter as zonas diretas e reversas que serão criadas com seus respectivos arquivos de configuração. Também é neste arquivo que se faz os "forwarders de zona", ou seja, quando uma consulta de uma determinada zona é repassada para outro DNS responder. Mais à frente será mostrado como configurá-lo)
named.conf.options(contém o local onde será armazenado o cache "/var/cache/bind". Pode-se acrescentar mais uma porta UDP que o Bind vai trabalhar. Neste arquivo, também, se pode definir qual IP pode realizar a transferência de zona (allow-transfer). Também é neste arquivo que se configura os "forwarders de DNS", ou seja, o repasse de consultas DNS para outro servidor DNS com exceção das zonas definas em "/etc/bind/". Mais à frente será mostrado como configurá-lo. Forwarders não faz cache.)
rndc.key(não modifique este arquivo. Ele é usado para autenticar comandos enviados entre os servidores DNS (troca de zona). Por padrão, usa o algoritmo HMAC-MD5 com chave secreta compartilhada entre os hosts finais da conexão TCP. Para isto, utiliza-se do comando "rndc". O comando "rndc-confgen" é uma ferramenta para gerar a chave rndc. Para maiores informações "man rndc-confgen", "man rndc" e "man rndc.conf")
zones.rfc1918(zonas configuradas de acordo com a RFC 1918. Não modifique este arquivo)

Em resumo os únicos dois arquivos que deverão ser modificados serão "named.conf.local" e "named.conf.options" ;-)


Agora, vamos por a mão na massa. O domínio que será configurado, neste artigo, será "matrix.com.br" e o endereço de rede será "192.168.1.0/255.255.255.0". Os IPs do DNS Primário e Secundário serão "192.168.1.1" e "192.168.1.2", respectivamente.


Primeiramente entre no arquivo "named.conf.local". Comentários neste arquivo devem conter no inicio da linha "//"
# vi /etc/bind/named.conf.local(arquivo de configuração onde é colocado o domínio direto, reverso e seus respectivos arquivos de consulta. Digite as linhas seguir)
zone "matrix.com.br" {(nome da zona direta ou domínio da rede)
type master;(indica o tipo do DNS. Master significa que é um DNS Primário )
file "/etc/bind/db.matrix.com.br";(arquivo que contém as informações DNS da zona direta "matrix.com.br")
};(fechamento da configuração da zona direta)

zone "1.168.192.in-addr.arpa" {(nome da zona reversa da rede)
type master;(indica o tipo do DNS. Master significa que é um DNS Primário )
file "/etc/bind/db.192.168.1";(arquivo que contém as informações DNS da zona reversa "1.168.192.in-addr.arpa")
};(fechamento da configuração da zona reversa)

Obs0: vale ressaltar que para cada zona, uma entrada "zone" é necessária no arquivo de configuração acima.
Obs1: o procedimento para a escolha do domínio, deve está de acordo com a empresa. Neste artigo o domínio foi "matrix.com.br", pois a empresa fictícia se chama "Matrix", é comercial (com) e é brasileira (br).
Obs2: Já a escolha do nome da zona reversa como "1.168.192.in-addr.arpa" foi devido ao endereço de rede ser "192.168.1.0/24" deixando somente a parte de rede fica "192.168.1", colocando ele ao inverso fica "1.168.192" e acrescentando "in-addr.arpa" que representa o domínio reverso fica "1.168.192.in-addr.arpa". Mas isso foi somente para padronizar. Poderia ter sido escolhido outro nome como "168.192.in-addr.arpa" ou "192.in-addr.arpa", a diferença seria na hora de configurar o conteúdo do arquivo "db.192.168.1" que será visto mais a frente.


Criando e configurando o arquivo que conterá as informações da zona "matrix.com.br" para a resolução direta de endereços:
# vi /etc/bind/db.matrix.com.br(a seguir o conteúdo. Comentários neste arquivo devem conter no inicio da linha ";")

;--> (ponto e vírgula significa comentário)
$TTL 1D (significa Time To Live, ou seja, é o tempo máximo que as informações ficaram em cache. Neste caso, o tempo será de 1D = 1 dia. Se o valor for 0, não fará cache. Toda diretiva que começa com "$" são padronizadas por um RFC. Veja a RFC 1912. Outros exemplos "$ORIGIN" e "$INCLUDE")
@(significa este domínio, ou seja, "matrix.com.br". Quando é realizada uma consulta DNS, por exemplo, para o domínio "matrix.com.br", o arquivo "/etc/bind/named.conf.local" será consultado e lá será encontrada a linha zone "matrix.com.br" a qual especifica o arquivo "/etc/bind/db.matrix.com.br" que responde por tal domínio. A partir disso, é sabido que "@" é igual à "matrix.com.br")
IN(The INternet Data Class. Pode ser traduzido como "entrada", sempre que for entrar com um nome de host ou endereço IP se deve colocar o parâmetro "IN" antes)
SOA(Start Of Authority. Esta linha diz para o mundo que este DNS é reconhecido como o autoritativo para consultas sobre este domínio --> @ --> "matrix.com.br". É interessante registrar que é a partir dele que se sabe quem é o DNS primário e o seu administrador. Veja a próxima linha)
@ IN SOA ns1.matrix.com.br. root.matrix.com.br. ((a tradução desta linha pode ser a seguinte: este domínio "@" é regido pelo DNS primário "ns1.matrix.com.br" cujo e-mail do administrador é "root.matrix.com.br". No e-mail do administrador é usado o sinal de ponto final em vez do "@", para não confudir com domínio. Depois desta linha, mais especificamente o que está entre parênteses, se têm os dados de sincronismo)
Obs: nas configurações acima, pôde ser observado que no final do nome do DNS primário (ns1.matrix.com.br.) e do e-mail do administrador (root.matrix.com.br.) tem um sinal de ponto final. Isso também pode ser observado em outras linhas na figura acima. Esse sinal de ponto final é necessário, pois o DNS sempre completará com o domínio as entradas que não tiverem esse sinal. Caso não tivêssemos colocado o ponto final no nome do DNS primário, ele seria acrescido do domínio ficando dessa maneira: "ns1.matrix.com.br.matrix.com.br" . Então, nunca se esqueça do ponto final ;-)
;Serial(este número diz ao DNS Secudário se houve alteração no arquivo. Se este número for diferente quando o DNS Secundário o consultar, ele irá atualizar as informações. Toda vez que alterar este arquivo, se deve modificar manualmente o "Serial". Com isso, o DNS Secundário saberá que houve alteração e que deverá sincronizar as informações. Se pode adotar a data "15052008" mais um número serial "01" para este campo. Assim, sempre se saberá a data da última modificação e caso haja alterações no mesmo dia, basta modificar "01" para "02".)
2H ;Refresh(espaço de tempo que o DNS Secundário atualizará as informações com o Primário. Esta atualização só acorrerá quando o ";Serial" for diferente. 2H é igual à 2 horas)
Obs: M=Minute=Minuto, H=Hour=Hora, D=Day=Dia, W=Week=Semana. Quando não for colada uma letra, o tempo é em segundos.
20M ;Retry(ao tentar atualizar e não conseguir, o DNS Secundário tentará novamente um tempo depois definido no parâmetro ";Retry". 20M é igual à 20 minutos)
1W ;Expire(caso o DNS Secundário consulte novamente o Primário no tempo definido em ";Retry" e ocorra de novo uma falha, o DNS Secundário assumirá as funções do Primário durante o tempo definido em ";Expire". 1W é igual a 1 semana. Depois desse tempo o DNS secundário pára de funcionar e o administrador terá que resolver o problema)
1D ) ;Negative Cache TTL or minimum(é o tempo mínimo que as informações ficaram em cache. Neste caso, o tempo será de 1D = 1 dia. Geralmente os administradordes colocam o mesmo valor para o "minimum" e para o "TTL")
NS(Name Server, ou seja, Servidor de Nomes. Toda entrada "IN" que for seguida por "NS" estará especificando o nome de um DNS)
@ IN NS ns1.matrix.com.br.(a tradução desta linha pode ser a seguinte: este domínio "@" tem um DNS "IN NS" chamado "ns1.matrix.com.br". No final do nome de DNS tem um sinal de ponto final. Para entender o porquê, leia a observerção "Obs" acima em vermelho )
@ IN NS ns2.matrix.com.br.(a tradução desta linha pode ser a seguinte: este domínio "@" tem um outro DNS "IN NS" chamado "ns2.matrix.com.br". No final do nome de DNS tem um sinal de ponto final. Para entender o porquê, leia a observerção "Obs" acima em vermelho )
Dica: para sabe qual dos dois DNS acima é o Primário, basta olhar a linha que tem a entrada "IN SOA".
MX(Mail eXchange, ou seja, Servidor de e-mail SMTP. Toda entrada "IN" que for seguida por "MX" estará especificando o nome de um Servidor de e-mail SMTP)
@ IN MX 1 mail1.matrix.com.br.(a tradução desta linha pode ser a seguinte: este domínio "@" tem um Servidor de e-mail SMTP "IN MX" chamado "mail1.matrix.com.br". O número "1" significa prioridade de utilização em relação a outros Servidores SMTP. Quanto menor for esse número, mais prioritário ele será. No final do nome do "MX" tem um sinal de ponto final. Para entender o porquê, leia a observerção "Obs" acima em vermelho)
@ IN MX 5 mail2.matrix.com.br.(a tradução desta linha pode ser a seguinte: este domínio "@" tem um Servidor de e-mail SMTP "IN MX" chamado "mail2.matrix.com.br". O número "5" significa prioridade de utilização em relação a outros Servidores SMTP. Quanto menor for esse número, mais prioritário ele será. No final do nome do "MX" tem um sinal de ponto final. Para entender o porquê, leia a observerção "Obs" acima em vermelho)
A(Address, ou seja, Endereço. Toda entrada "IN" que for seguida de "A" estará especificando o endereço IP de um servidor)
ns1 IN A 192.168.1.1(a tradução desta linha pode ser a seguinte: o equipamento que tem o nome "ns1" tem o endereço IP "192.168.1.1")
Obs1: todo nome, por exemplo, "ns1" que tem a entrada "IN A" e que não tem no seu final um sinal de ponto final, será completado pelo domínio desta zona. Assim, o DNS enxerga "ns1" como "ns1.matrix.com.br" . Então, isso significa dizer que "ns1" (sem ponto final) e "ns1.matrix.com.br." (com ponto final) é a mesma coisa.
Obs2: no arquivo de configuração acima, se poderia substinuir o "ns1" por "ns1.matrix.com.br."
ns2 IN A 192.168.1.2(a tradução desta linha pode ser a seguinte: o equipamento que tem o nome "ns2" tem o endereço IP "192.168.1.2")
www IN A 192.168.1.3(a tradução desta linha pode ser a seguinte: o equipamento que tem o nome "www" tem o endereço IP "192.168.1.3")
ftp IN A 192.168.1.4(a tradução desta linha pode ser a seguinte: o equipamento que tem o nome "ftp" tem o endereço IP "192.168.1.4")
mail1 IN A 192.168.1.11(a tradução desta linha pode ser a seguinte: o equipamento que tem o nome "mail1" tem o endereço IP "192.168.1.11")
mail2 IN A 192.168.1.12(a tradução desta linha pode ser a seguinte: o equipamento que tem o nome "mail2" tem o endereço IP "192.168.1.12")
web IN CNAME www(Canonical NAME pode ser entendido como um apelido que neste caso, "web" é o apelido de "www" que tem o IP "192.168.1.3". Em outras palavras, "web" e "www" são a mesma coisa, ao se realizar consultas DNS. Não se usa CNAME em zona reversa. Em vez do "CNAME", se pode usar várias entradas "IN A")

Criando e configurando o arquivo que conterá as informações da zona "1.168.192.in-addr.arpa" para a resolução reversa de endereços:
# vi /etc/bind/db.192.168.1(a seguir o conteúdo. Comentários neste arquivo devem conter no inicio da linha ";")

@(significa este domínio, ou seja, "1.168.192.in-addr.arpa". Quando é realizada uma consulta DNS (para saber o IP de um determinado nome), neste caso, o arquivo "/etc/bind/named.conf.local" será verificado e lá será encontrado o arquivo "/etc/bind/db.db.192.168.1" que responde por tal domínio reverso. A partir disso, é sabido que "@" é igual à "1.168.192.in-addr.arpa")
PTR(Point To Reverse. Toda entrada "IN" que for seguida por "PTR" estará especificando o nome de um Servidor)
1 IN PTR ns1(o número "1" representa "192.168.1.1", pois do mesmo jeito que na zona direta, o número "1" é completado pelo domínio reverso "1.168.192.in-addr.arpa", ficando desta maneira: "1.1.168.192.in-addr.arpa". Então, se tirássemos o dominio reverso ".in-addr.arpa" e invertêssemos "1.1.168.192", o resultado seria "192.168.1.1" que é o IP do ns1. A tradução da linha "1 IN PTR ns1" pode ser a seguinte: o equipamento que tem o endereço IP "192.168.1.1" tem o nome de host "ns1")
Obs1: todo nome, por exemplo, "ns1" que tem a entrada "IN PTR" e que não tem no seu final um sinal de ponto final, será completado pelo domínio desta zona. Assim, o DNS enxerga "ns1" como "ns1.1.168.192.in-addr.arpa." . Então, isso significa dizer que "ns1" (sem ponto final) e "ns1.1.168.192.in-addr.arpa." (com ponto final) é a mesma coisa.
Obs2: no arquivo de configuração acima, se poderia substinuir o "1" por "1.1.168.192.in-addr.arpa." e "ns1" por "ns1.1.168.192.in-addr.arpa."
2 IN PTR ns2(o número "2" representa "192.168.1.2", pois do mesmo jeito que na zona direta, o número "2" é completado pelo domínio reverso "1.168.192.in-addr.arpa", ficando desta maneira: "2.1.168.192.in-addr.arpa". Então, se tirássemos o dominio reverso ".in-addr.arpa" e invertêssemos "2.1.168.192", o resultado seria "192.168.1.2" que é o IP do ns2. A tradução da linha "2 IN PTR ns2" pode ser a seguinte: o equipamento que tem o endereço IP "192.168.1.2" tem o nome de host "ns2")
3 IN PTR www(A tradução desta linha pode ser a seguinte: o equipamento que tem o endereço IP "192.168.1.3" tem o nome de host "www")
4 IN PTR ftp(A tradução desta linha pode ser a seguinte: o equipamento que tem o endereço IP "192.168.1.4" tem o nome de host "ftp")
11 IN PTR mail1(A tradução desta linha pode ser a seguinte: o equipamento que tem o endereço IP "192.168.1.11" tem o nome de host "mail1")
12 IN PTR mail2(A tradução desta linha pode ser a seguinte: o equipamento que tem o endereço IP "192.168.1.12" tem o nome de host "mail2")

Torne o DNS cliente dele mesmo
# vi /etc/resolv.conf
search matrix.com.br(especifica o domínio)
nameserver 127.0.0.1(especifica o IP local)
Salve e Saia

Verifique se o arquivo de configuração de interfaces de rede tem alguma entrada para DNS. Se tiver comente ou apague:
# vi /etc/network/interfaces
dns-nameservers(linha que define o DNS. Comente-a ou apague-a)

Faça os procedimentos a seguir para especificar qual o IP do DNS Secundário
vi /etc/bind/named.conf.options(adicione a linha "allow-transfer" conforme a figura a seguir)

O IP "192.168.1.2" é do DNS Secundário. Se não especificado, transfere a zona para qualquer host (falha de segurança). Caso não tenha um DNS Secundário, troque o "192.168.1.2" por "none".
Salve e Saia do arquivo
Mais a frente será mostrado como configurar um servidor DNS Secundário

Reinicie o serviço DNS
# /etc/init.d/bind9 restart(poderia ser também "rndc reload")

Dica: os registros (IP e nome de host) que devem constar no DNS (dentro de "/etc/bind/db.matrix.com.br" e "/etc/bind/db.192.168.1") vão depender da finalidade do DNS. No DNS que fica numa DMZ, se deve colocar somente os IPs e os nomes dos servidores que ficam na DMZ como: DNS Primário, DNS Secundário, servidor HTTP, servidor FTP, servidor de E-mail etc. Nunca coloque informações da rede interna, nome dos filtros de pacotes/estados e roteadores. Vale expor que os equipamentos da LAN terão como servidor DNS, o DNS Primário que fica na DMZ.
Importante: quando houver necessidade de colocar registros da rede interna (LAN) dentro do DNS, se deve instalar um DNS específico para isso dentro da LAN. Também, não se deve inserir todos os nomes de todas as máquinas da LAN neste DNS, somente os que houverem necessidade (ex: máquina com uma impressora compartilhada, uma máquina que compartilha arquivos etc). Vale lembrar que, neste caso, os equipamentos da LAN terão como servidor DNS, o DNS que fica na LAN.





DNS Secundário

Um DNS Secundário é DNS sobresalente. Caso o DNS Primário falhe, o Secundário assumirá todas as funções de DNS. Em outras palavras, provê alta-disponibilidade ao esquema de DNS. Somente será exigido um DNS Secundário quando for necessário possuir alta-disponibilidade ou para registrar um domínio no "Registro .br" ( www.registro.br ). Quando se registra um domínio (ex: matrix.com.br ou hugoazevedo.eti.br), é exigida uma infra-estrutuda de dois DNS, um Primário e outro Secundário conectados à Internet (preferencialmente em uma DMZ). Além disso, eles já têm que estar configurados para o domínio solicitado. Ao solicitar um domínio, é necessário ser uma pessoa física (CPF) ou jurídica (CNPJ) representada ou estabelecida no Brasil.

Para facilitar e diminuir custo, muito domínios são registrados por terceiros. Isto pode ser observado em empresas de hospedagem de sites. Essas empresas, além de disponibilizar um servidor HTTP na Internet para hospedar as páginas (html, php, xml etc), também incluem no pacote a sua infra-estrutura de DNS Primário e Secundário. Se não fosse por elas, toda vez que um pessoa ou empresa quisesse colocar sua página no ar (na Internet) teria que ter no mínimo um DNS Primário, um Secundário e um servidor de HTTP :-(. Algumas informações interessantes pode ser conseguidas em www.cgi.br. Agora, chega de teoria e vamos ao que interessa, os procedimentos para instalar e configurar um DNS Secundário (rsrsrsrsrsrs):



Instalação DNS Server
# apt-get update ; apt-get install bind9(no final da instalação aparecerá a mensagem " Not creating home directory `/var/cache/bind' ")

Entre no arquivo "named.conf.local"
# vi /etc/bind/named.conf.local(arquivo de configuração onde é colocado o domínio direto, reverso e seus respectivos arquivos de consulta. Digite o conteúdo a seguir)
zone "matrix.com.br" {(nome da zona direta ou domínio da rede)
type slave;(indica o tipo do DNS. Slave significa que é um DNS Secundário )
file "/etc/bind/sec.matrix.com.br";(este arquivo será criado automaticamente e conterá as informações DNS da zona direta "matrix.com.br")
masters { 192.168.1.1; };(indica o IP do DNS Primário)
};(fechamento da configuração da zona direta)

zone "1.168.192.in-addr.arpa" {(nome da zona reversa da rede)
type slave;(indica o tipo do DNS. Slave significa que é um DNS Primário )
file "/etc/bind/sec.192.168.1";(este arquivo será criado automaticamente e conterá as informações DNS da zona reversa "1.168.192.in-addr.arpa")
masters { 192.168.1.1; };(indica o IP do DNS Primário)
};(fechamento da configuração da zona reversa)

Faça os procedimentos a seguir para bloquear troca de zonas
vi /etc/bind/named.conf.options(adicione a linha "allow-transfer" conforme a figura a seguir)

O "none" se não especificado, transfere a zona para qualquer host (falha de segurança).
Salve e Saia do arquivo

Torne o DNS cliente dele mesmo
# vi /etc/resolv.conf
search matrix.com.br(especifica o domínio)
nameserver 127.0.0.1(especifica o IP local. Não se deve especificar o IP do DNS Primário, pois caso o Secundário esteja com algum problema nunca se saberá)
Salve e Saia

Verifique se o arquivo de configuração de interfaces de rede tem alguma entrada para DNS. Se tiver comente ou apague:
# vi /etc/network/interfaces
dns-nameservers(linha que define o DNS. Comente-a ou apague-a)

Faça os comando a seguir:
# chmod g+w /etc/bind(muda a permissão para escrita do grupo "bind", pois serão criados, por esse grupo, os arquivos "sec.matrix.com.br" e "sec.192.168.1" dentro de "/etc/bind/")
# chmod .bind /etc/bind(este comando não é necessário, mas o coloquei, pois se o grupo não for o "bind", o DNS Secudário não funcionará)
/etc/init.d/bind9 restart(reinicia o serviço de DNS)

Verificação
ls /etc/bind/(verifique se os arquivos "sec.matrix.com.br" e "sec.192.168.1" foram criados)

Dica: Para que o esquema de DNS Primário e Secundário funcione, os dois DNS devem constar nos clientes. Assim, se o Primário não responder o Secundário responderá.






Atualização automática ou dinâmica do DNS

Atualização automática ou dinâmica do DNS significa que os IPs e nomes de host serão inseridos de maneira automática dentro do arquivos de configuração do DNS. Existem dois motivos para que um DNS faça isso:

Primeiro motivo, quando é necessário integrar o DNS com o DHCP. Isso que dizer que quando um cliente DHCP solicitar um IP ao servidor DHCP, este envia o nome do cliente para o DNS. Assim, o nome do cliente DHCP estará dentro do DNS de maneira automática, podendo usufruir de todos os benefícios de um DNS (também é necessário configurar o cliente e o servidor DHCP). Segundo motivo, quando se tem um Serviço de Diretório como o Active Directory que necessita inserir dados no DNS.

Vale ressaltar que o DNS que fica na DMZ não se deve habilitar a atulização automática, muito menos inserir dados da rede interna. Medida de segurança. Então, se realmente necessitar do recurso de atualização automática do DNS, se deve instalar um DNS específico dentro da rede interna (LAN) somente para isto. Sendo que este DNS servirá a todos os clientes da rede interna. Além disso, não se deve inserir todos os nomes de todas as máquinas neste DNS, somente os que houverem necessidade (ex: máquina com uma impressora compartilhada, uma máquina que compartilha arquivos etc).

Seria interessante, neste caso de um DNS dentro da LAN, utilizar o recurso de "forwarders de DNS". No próximo tópico esse "forwarders de DNS" é explicado. A seguir estão os procedimentos para que um DNS aceite atualizações automáticas:

# chmod g+w /etc/bind/(serão criados automaticamente arquivos com a extensão ".jnl" dentro de "/etc/bind/" quando atualizado algum registro no DNS. Devido a isto, é necessário mudar as permissões)
# chmod g+w /etc/bind/db.matrix.com.br(serão inseridos dados automaticamente dentro deste arquivo, por isso a mudança nas permissões)
# chmod g+w /etc/bind/db.192.168.1(idem. Agora edite o arquivo a seguir)
# vi /etc/bind/named.conf.local(insira as linhas "allow-update" nas zonas desejadas, conforme figura a seguir)

Explicação: a linha "allow-update" especifica qual é IP que terá o direito de fazer a atualização automática. Geralmente é o IP do DHCP Server ou do Serviço de diretório (AD - Active Directory, por exemplo). Se pode colocar mais de um IP, ficando desta maneira: "allow-update { 172.16.200.254; 172.16.200.3; };

Extra:
# nsupdate -v -k /etc/bind/key.private(entra em um ambiente para inserção e deleção de registro DNS. É necessário instalar o "dnsutils")
update delete www.matrix.com.br. 1 A(deleta um registro. "1" é igual à TTL 1D, "A" é igual a Address)
update add www.matrix.com.br. 1 A(adiciona um registro. "1" é igual à TTL 1D, "A" é igual a Address)
send - quit(valida os registros modificados e sai do ambiente de configuração)





Forwarders de DNS

Um "forward de DNS" é necessário quando as consultas DNS precisam ser repassadas para outro servidor. As únicas consultas que o DNS vai responder são as das zonas definas em "/etc/bind/". O DNS que faz "forward" não faz cache. Esse tipo de configuração pode ser utilizado quando se tem um DNS na LAN e outro na Internet. Assim, o DNS da LAN responde somente as consultas internas, ou seja, das zonas da própria LAN. Quando os clientes forem acessar outros domínios, o DNS da LAN redireciona as consultas para um DNS da WAN (geralmente o DNS Primário que está na DMZ). A seguir é mostrado como proceder:

# vi /etc/bind/named.conf.options(a figura a seguir significa o seguinte: que todas as consultas de zona que não tiverem definidas em "/etc/bind/" serão repassada para o endereço IP "72.233.23.3" que na verdade é um outro DNS. Repare na linha "forwarders")

Obs: o "forward de DNS" de ser configurado tanto no DNS Primário, quanto no Secundário.





Forwarders de SubZona/SubDomínio
e
Forwarders de Zona/Domínio

Um "forward de subzona" é necessário quando uma consulta de uma determinada zona precisa ser repassada para outro DNS responder. Isso, é bastante usando quando uma empresa tem uma filial em outro lugar e esta filal possui uma infra-estrutura de rede própria com servidores DNS, e-mail, HTTP, FTP etc, mas precisa está vinculada ao mesmo domínio da matriz. O DNS que faz "forward" não faz cache, ou seja, não são armazenadas as informações já consultados. Para esta configuração será necessário mais um DNS que deve ficar na DMZ da filial.

Tentarei contextualiza uma situação hipotética para uma melhor compreensão. Por exemplo, se existisse uma empresa chamada "Matrix" onde a sede principal ficasse em Brasília. O seu o domínio seria "matrix.com.br", sendo que para acessar o servidor HTTP bastaria digitar em um browser "www.matrix.com.br".

Só que esta empresa tem uma filial em São Paulo (poderia ser na mesma cidade, em outra cidade, estado, país ou até mesmo em outro planeta, galáxia etc - brincadeira). Não se poderia colocar outro domínio para a filial (ex: vitrix.com.br), pois ela não é uma empresa independente, é apenas uma filial cuja a sede está em Brasília. Então, o mais certo seria criar um subdomínio em cima do domínio já existente como por exemplo "sp.matrix.com.br". Se está filial tivesse um servidor HTTP, ele seria acessado como "www.sp.matrix.com.br". Espero que esta contextualização clarei um pouco mais a função de um subdomíno. Agora chega de teoria e vamos ao que interessa, a prática:


No servidor DNS primário da empresa sede/principal/matriz/Brasília, que no caso da contextualização acima ficaria em Brasília, digite:
# vi /etc/bind/named.conf.local(na figura seguir veja que foi adicionada uma nova linha "zone" que contém o subdomínio "sp.matrix.com.br" a qual tem o seguinte significado: toda consulta para a subzona/subdomínio "sp.matrix.com.br" deve ser repassada para o endereço IP "72.233.13.3" que na verdade é um outro DNS que está localizado, de acordo com o exemplo contextualizado, na filial em São Paulo.)

# /etc/init.d/bind9 restart(poderia ser também "rndc reload")

Obs1: Vale lembrar que o DNS (72.233.13.3), que está na filial e resolverá as consultar para o subdomínio (sp.matrix.com.br), deverá ser configurado de acordo. Basta seguir os passos já mostrados neste artigo para configurar o DNS que está localizado na filial. A figura abaixo serve de exemplo para o arquivo "db.sp.matrix.com.br" que deverá ser criado no DNS da filial. Não é obrigatório possuir um DNS Primário e outro Secudário na filial, pois este subdomíno (sp.matrix.com.br) não está registrado no orgão que tem esta compentencia (Registro.br).

Obs2: Nada impede usar o que foi mostrado acima para realizar um "forward de zona" em vez de um "forward de subzona". Por exemplo, se pode especificar que as consultas para um determinada zona/domínio (ex: hugoazevedo.eti.br) sejam repassadas para um DNS específico. Como pode ser observado, o domínio "hugoazevedo.eti.br" nada tem haver com o domínio "matrix.com.br", mas se necessitar isso pode ser feito.

Obs3: o "forward de zona ou subzona" de ser configurado tanto no DNS Primário, quanto no Secundário (na sede/matriz).


Continua...

Existe uma outra maneira mais fácil e barata de fazer a mesma coisa, ou seja, um forward de zona ou subzona. A diferença é que não é necessário possuir mais um DNS (na filial). Bastaria configurar os DNSs já existentes, o Primário e o Secundário (na sede/matriz). A idéia é que tais DNSs que respondem pelo domínio (ex: matrix.com.br), respondam também pelo subdomínio (ex: sp.matrix.com.br). Então, no DNS Primário e Secundário (na sede/matriz/Brasília), siga os comandos a seguir:

Entre no arquivo, conforme comando abaixo:
# vi /etc/bind/named.conf.local(na figura seguir veja que quase nada foi modificado em relação a configuração anteriormente mostrada. Como já feito, foi adicionada uma nova linha "zone" que contém o subdomínio "sp.matrix.com.br", só que toda consulta para a subzona/subdomínio "sp.matrix.com.br" deve ser repassada para o arquivo "/etc/bind/db.sp.matrix.com.br". E este arquivo que deve resolver o subdomínio/subzona)

# cp /etc/bind/db.matrix.com.br /etc/bind/db.sp.matrix.com.br(esta cópia serve para economizar tempo, pois será necessário modificar poucas coisas)
# vi /etc/bind/db.sp.matrix.com.br(faça as modificações necessárias para o subdomino/subzona que neste caso é "sp.matrix.com.br". A figura abaixo serve como exemplo)

# /etc/init.d/bind9 restart(poderia ser também "rndc reload")

Obs1: Nada impede usar o que foi mostrado acima para realizar um "forward de zona" em vez de um "forward de subzona". Por exemplo, se pode especificar que as consultas para um determinada zona/domínio (ex: hugoazevedo.eti.br) sejam repassadas para um arquivo específico. Como pode ser observado, o domínio "hugoazevedo.eti.br" nada tem haver com o domínio "matrix.com.br", mas se necessitar isso pode ser feito.

Obs2: o "forward de zona ou subzona" de ser configurado tanto no DNS Primário, quanto no Secundário (na sede/matriz).


Continua... Continua...

Também existe uma outra maneira de fazer a mesma coisa, ou seja, um forward de zona ou subzona sem a necessidade de criar um subdomínio/subzona ou adicionar mais um DNS. A grande diferença em relação ao procedimento anterior é que não é necessário criar um subdomínio. Bastaria adicionar as respectivas linhas necessárias nos arquivos já existentes no DNS Primário e o Secundário (na sede/matriz). A idéia é a mesma do os procedimento anterior, só que ainda mais fácil. Particularmente, não gosto desta solução que irei mostrar, pois muitos servidores, como os de e-mail, fazem checagem da existência do domínio através de consulta reversa (nslookup 72.233.13.3) ou direta (nslookup sp.matrix.com.br), se o mesmo não existir, o servidor pensará que é algum tipo de fralde/ataque (spam no caso de uma servidor de e-mail). Então, no DNS Primário e Secundário (na sede/matriz/Brasília), siga os comandos a seguir:

# vi /etc/bind/named.conf.local(na figura seguir veja que foram adicionadas linhas como "www.sp.matrix.com.br", "mail1.sp.matrix.com.br" etc. Assim, não há necessidade de criar uma subzona/subdomínio)

# /etc/init.d/bind9 restart(poderia ser também "rndc reload")





Ambiente Gráfico

# apt-get install gbindadmin(ferramenta gráfica para o BIND)
# apt-get install gadmintools(ferramenta gráfica para o BIND, SAMBA, DHCP e PROFTP)





Extra

Caso ocorra algum problema digite:
cat /var/log/syslog | grep -i bind(log do "bind")
named-checkconf(verifica possíveis erros de síntaxe)



Assuntos Relacionados
DNS Client no GNU/Linux.
 
 




ETI - Especialista em Tecnologia
da Informação