OS IPS E NOMES USADOS SÃO FICTÍCIOS.
O
DNS (Domain Name Service), tem como sua principal função resolver nomes, ou seja converter
IP para hostname e vice versa.
Traduz nomes de máquinas e domínios para IP, informação utilizada para real comunicação entre as máquinas conectadas em rede.
Traduz IPs para nomes de máquinas, serviço conhecido como DNS Reverso. Utilizado, por exemplo, pelos servidores de e-mail para evitar Spam. O servidor de e-mail ao receber uma mensagem enviada por um IP, tenta encontrar o nome do domínio que aquele IP pertence. Este nome de domínio deve ser o mesmo encontrado na remetente da mensagem, desta forma, o servidor de e-mail o julga válido.
Quais as regras sintáticas para o nome de um domínio?
Um domínio deve seguir:
- Tamanho mínimo de 2 e máximo de 26 caracteres, não incluindo a extensão.
- Caracteres válidos são [A-Z;0-9] e o hífen.
- Nenhum tipo de acentuação é válido.
- Não pode conter somente números.
- OBS.: Os domínios com extensões .nom.br deverão ser separados por um ponto, assim como nome.sobrenome.nom.br
Zonas
Toda informação correspondente a um domínio. Por exemplo, são informações de um
domínio o próprio domínio, suas máquinas, seu reverso, seu MX etc.
Domínio = falconet.com.bt
Máquinas = www.falconet.com.br - 192.168.0.1
Reverso = 192.168.0.1 - maquina.falconet.com.br
DNS reverso (rDNS)
Traduz IP em nome.
características peculiares:
- conhecido no jargão dos administradores de servidores como "PTR";
- obrigatório de acordo com a RFC 1912, seção 2.1;
- deve haver uma entrada de rDNS para todas as máquinas com nome na rede, não só para algumas;
- muitíssimo importante para servidores de email, pois, confrontando o reverso do IPtraduzido do domínio do remetente da mensagem podemos ver se realmente aquela mensagem saiu da origem informada.
- Para configurar precisamos:
- que sua operadora responda o reverso de seu domínio para você.
- ou
- que sua operadora direcione as requisições de reverso de seu domínio para você responder.
Configuração do Servidor
- Caching-Only
Não resolve nomes em sua própria base, apenas passa requisições a outros servidores
DNS e repassa a resposta ao cliente solicitante.
- Primários
- Responsável por resolver os nomes.
- Informações obtidas de arquivos locais;
- Possuem em sua base de dados de domínios as configurações necessárias para responder por um determinado domínio;
- Fonte oficial de informação a respeito de um domínio.
- O domínio deve estar devidamente registrado no registro.br, com servidor DNS apontando para o servidor em questão. Desta forma, ele se torna a fonte de dados oficial para resolução dos nomes para este domínio.
- Secundários
- Responsável por resolver nomes em caso de problemas com o DNS primário. Sua existência é obrigatória para que um domínio seja reconhecido como válido pelo registro.br.
- Transferência de Zonas;
- Não são realizadas configurações nos servidores DNS Secundários para resolução de nomes de domínios. Sua base de dados é importada do seu DNS Primário.
- Fonte oficial de informação a respeito de um domínio.
1.1.3 – Processo no “*nix”
Processo: named
SEQUENCIA DE CONSULTA NA RESOLUÇÃO DE NOMES
/etc/host.conf
order hosts,bind
Neste arquivo é configurado a ordem de consulta que o servidor seguirá em suas consultas. Neste exemplo, primeiramente é consultado a tabela hosts do servidor e caso a entrada não exista nesta tabela então é consultado o bind do servidor.
BIND
Bind (Berkeley Internet Name Domain), o bind inclui o servidor DNS que é conhecido como named.
Instalando Servidor DNS no Linux (BIND9)
Pacotes necessários:
- bind-x.x-xx -> servidor DNS e arquivos de configurações.
- Bind-utils-x.x-xx -> comandos do DNS.
Instalação no Debian
# apt-get install bind
# apt-get install bind-utils
após a instalação podemos verificar se o serviço está rodando com o comando:
# ps ax | grep named (verificar se o named está rodando)
Criar a zona
vi /etc/bind/named.conf.local
incluir as seguintes linhas:
// DNS
zone "falconet.com.br" IN {
type master;
file "/etc/bind/dominio/falconet/db.falconet.com.br";
};
// DNS Reverso
zone "0.168.192.in-addr.arpa" IN {
type master;
file "/etc/bind/dominio/falconet/db.0.168.192";
};
Criar os diretórios onde os arquivos de configuração do domínio serão criados e acertar os
direitos de acesso para segurança do serviço e servidor, bem como para o
funcionamento correto.
mkdir -p /etc/bind/dominio/falconet
chown root:bind /etc/bind/dominio/falconet
Dentro destes diretórios, criar os seguintes arquivos:
para resolução de nome:
vim /etc/bind/dominio/falconet/db.falconet.com.br
$TTL 345600
@ IN SOA ns1.falconet.com.br. hostmaster.falconet.com.br. (
2014082001 ; Serial
28800; refresh, seconds
7200; retry, seconds
604800; expire, seconds
86400 ) ; negative cache TTL, seconds
NS ns1.falconet.com.br.
NS ns2.falconet.com.br.
IN MX 10 smtp.falconet.com.br.
IN MX 20 smtp2.falconet.com.br.
falconet.com.br. A 192.168.0.1
ns1 A 192.168.0.1
ns2 A 192.168.0.254
www A 192.168.0.1
smtp A 192.168.0.1
smtp2 A 192.168.0.1
pop3 A 192.168.0.1
maquina A 192.168.0.1
webmail CNAME pop3
Entendendo as regras utilizadas:
$TTL - (Time-To-Life) Esta opção diz ao named por quanto tempo ele deve manter em cache as informações de certo domínio. Lembrando que só são consultados os arquivos "zone" caso a informação procurada não se encontre no cache.
@ IN SOA ns1.falconet.com.br. hostmaster.falconet.com.br. (
A "@" na segunda linha indica a origem do domínio e, ao mesmo tempo, o início da configuração. Ela é sempre usada, assim como num endereço de e-mail. O "IN" é abreviação de "internet" e o "SOA" de "Start of autority". Em seguida vem o nome do servidor (que você checa usando o comando "hostname"), seguido do e-mail de contato do administrador. Note que, no caso do e-mail, temos a conta separada do domínio por um ponto, e não por uma @. O mais comum é criar uma conta chamada "hostmaster", mas isso não é uma regra. Você poderia usar "fulano.meudomonio.com.br", por exemplo. Note também que existe um ponto depois do "ns1.falconet.com.br" e do "hostmaster.falconet.com.br", que faz parte da configuração.
O ponto se refere ao domínio raiz, de responsabilidade dos rootservers. No exemplo,
nosso servidor é o responsável pelo domínio "falconet", que faz parte do domínio ".com.br", que por sua vez faz parte do domínio raiz. Lembre-se que os domínios são lidos da direita para a esquerda, de forma que, ao resolver o domínio, o cliente leria: raiz . br .com . falconet.
A linha diz algo como "Na internet, o servidor "falconet" responde pelo domínio falconet.com.br o e-mail do responsável pelo domínio é "hostmaster@falconet.com.br". A primeira linha termina com um parênteses, que indica o início da configuração do domínio. Temos então:
2011022001
O "2011022001" é o valor de sincronismo, que permite que o servidor DNS secundário mantenha-se sincronizado com o principal, detectando alterações na configuração. Este número é composto da data da última alteração (como em: 20140820), e um número de dois dígitos qualquer que você escolhe. Sempre que editar a configuração, ou sempre que configurar um servidor DNS a partir de um template qualquer, lembre-se de atualizar a data e mudar os dois dígitos.
As quatro linhas seguintes orientam o servidor DNS secundário (caso você tenha um).
O primeiro campo indica o tempo que o servidor aguarda entre as atualizações (28800
segundos, ou 8 horas). Caso ele perceba que o servidor principal está fora do ar, ele tenta
fazer uma transferência de zona, ou seja, tenta assumir a responsabilidade sob o
domínio. Não esqueça que o serial nunca é incrementado automaticamente, isso é
trabalho do administrador. Caso a transferência falhe e o servidor principal continue fora
do ar, ele aguarda o tempo especificado no segundo campo (2 horas) e tenta novamente.
O terceiro campo indica o tempo máximo que ele pode responder pelo domínio, antes que
as informações expirem (7 dias, tempo mais do que suficiente para você arrumar o servidor principal ;) e o tempo mínimo antes de devolver o domínio para o servidor principal quando ele retornar (1 dia). Estes valores são padrão, por isso não existem muitos motivos para alterá-los. A
transferência do domínio para o DNS secundário é sempre uma operação demorada, por causa do cache feito pelos diversos servidores DNS espalhados pelo mundo: demora de um a dois dias até que todos atualizem suas tabelas de endereços. A principal prioridade deve ser evitar que o servidor principal fique indisponível em primeiro lugar.
Opções utilizadas:
MX - Mail Exchange: Esta entrada permite que o named identifique o seu servidor de correio eletrônico. O número antes do nome do servidor é referente ao índice de prioridade, ou seja, a mensagem será direcionada sempre para o servidor com menor índice e caso ele não responda vai para o seguinte e assim por diante.
CNAME - Esta entrada diz ao named que o alias - no caso o webmail - é um apelido para
um dado servidor ou domínio. Em nosso arquivo é o "pop3". Ou seja, o apelido "webmail"
irá apontar para o mesmo local do "pop3" que é o host 192.168.0.5.
A - Address: com esta opção especificamos um endereço válido na área de atuação do
servidor, podendo este ser um IP ou um domínio. Contudo,caso seja utilizado um domínio
é obrigatório colocar um ponto final após o nome.
Para resolução reversa de nomes:
vim /etc/bind/dominio/falconet/db.0.168.192
colocar o seguinte conteúdo:
$TTL 345600
@ IN SOA ns1.falconet.com.br. hostmaster.falconet.com.br. (
2011022001 ; Serial
28800; refresh, seconds
7200; retry, seconds
604800; expire, seconds
86400 ) ; negative cache TTL, seconds
NS ns1.falconet.com.br.
NS ns2.falconet.com.br.
1 PTR ns1.falconet.com.br.
254 PTR ns2.falconet.com.br.
1 PTR www.falconet.com.br.
1 PTR smtp.falconet.com.br.
1 PTR pop3.falconet.com.br.
1 PTR maquina.falconet.com.br.
Onde PTR aponta o último octeto do endereço IP para o nome do reverso.
Após a criação da zona e configuração dos arquivos db dos domínios configurados neste
servidor, devemos informar à própria máquina que ela é responsável por este domínio.
Para isso faça:
vim /etc/resolv.conf
colocar o seguinte conteúdo:
search falconet.com.br
nameserver 127.0.0.1
Bom, com estas configurações é possível utilizarmos este servidor DNS para responder perguntas sobre o domínio configurado, no nosso exemplo o domínio é o falconet.com.br.
Para testar o funcionamento correto do servidor DNS podemos utilizar três comandos:
nslookup, dig e host.
O comando host é mais atual e mais simples de ser trabalhado. Para instalá-lo basta
executar:
apt-get install host
Para utilizá-lo basta digitar:
host -a falconet.com.br
o resultado deve ser a apresentação detalhada das informações do domínio pesquisado.
host 192.168.0.10
o resultado deve ser a apresentação das informações de reverso do IP pesquisado.
dig ns falconet.com.br
o resultado deve ser a apresentação das informações do domínio pesquisado.
Caso houver máquinas que utilizem este servidor para navegação na Internet, por exemplo, onde há necessidade de resolução de nomes de outros domínios, devemos informar ao servidor para quem ele deve “perguntar sobre domínios não cadastrados nele mesmo, em caso da necessidade de alguma consulta de cliente, por exemplo. Esta configuração é conhecida como “forwarders”, e deve ser realizada da seguinte forma:
vim /etc/bind/named.conf.options
descomentar as linhas do forwarders e acrescentar os IPs do servidor DNS do provedor
do seu link, por exemplo:
options {
forwarders {
172.16.0.1;
};
}
OBS: uma configuração importante que devemos considerar é o fato de apenas permitirmos que máquinas da nossa rede interna, por exemplo, utilizem nosso servidor DNS para fazer consultas na Internet. Desta forma evitamos que qualquer outro usuário da Internet utilize dos nossos recursos de link e máquina para navegar. A configuração é a seguinte:
OBS: uma configuração importante que devemos considerar é o fato de apenas
permitirmos que máquinas da nossa rede interna, por exemplo, utilizem nosso servidor
DNS para fazer consultas na Internet. Desta forma evitamos que qualquer outro usuário
da Internet utilize dos nossos recursos de link e máquina para navegar. A configuração é a
seguinte:
vi /etc/bind/named.conf.options
// lista para permitir consultas recursivas
acl clientes {
localhost;
172.16.0.0/16;
};
options {
forwarders {
200.192.240.40;
200.192.240.5;
};
allow-recursion { clientes; };
};
SLAVE
Os pacotes instalados são os mesmos do DNS Master. Para configurarmos o DNS Slave
devemos inicialmente criar os diretórios onde os arquivos de configuração do domínio
serão copiados e acertar os direitos de acesso para segurança do serviço e servidor, bem
como para seu funcionamento correto.
mkdir -p /etc/bind/dominio/falconet
chown bind.bind /etc/bind/dominio/falconet
OBS: Utilizamos chown root.bind no master e chown bind.bind nas permissões do diretório dos arquivos do domínio por motivos de segurança no master e para permitir que o deamon bind possa escrever no slave.
Após estas configurações devemos informar ao DNS que ele será responsável por
responder pelo novo domínio da seguinte forma:
vi /etc/bind/named.conf.local
incluir as seguintes linhas:
// DNS
zone "falconet.com.br" IN {
type slave;
file "/etc/bind/dominio/falconet/db.falconet.com.br";
masters { 192.168.0.1; };
allow-transfer { 192.168.2.1; };
};
// DNS Reverso
zone "1-2.0.168.192.in-addr.arpa" IN {
type slave;
file "/etc/bind/dominio/falconet/db.2.168.192";
masters { 192.168.0.1; };
allow-transfer { 192.168.2.1; };
};
Esta configuração está supondo que o IP do nosso servidor master é 192.168.0.1.
No arquivo /etc/bind/named.conf.local do Master também incluir as linhas allowtransfer
{ 192.168.0.11 }; (supondo que o IP do slave seja 192.168.0.11) na configuração da zona normal e reversa. Desta forma estaremos informando aos servidores que somente aceitem atualizações e informações destes servidores para este domínio.
Após realizar as configurações acima, basta reiniciar o serviço do servidor e verificar se o
arquivo db.falconet.com.br foi criado corretamente no diretório informado. Para testar o
funcionamento correto do serviço basta acrescentar este domínio no /etc/resolv.conf e
utilizar os comandos nslookup ou host.