207.2 Criar e Manter Zonas de DNS
Master
Vamos ver como criar e manter uma zona no servidor DNS, como estou testando em dois servidores (Debian e CentOS) vou criar duas zonas distintas, uma para cada servidor, assim fica mais fácil só torná-los slave um do outro para suas zonas master.
Antes de começarmos vamos ver a estrutura de uma zona e entender seus campos, mas antes, vejamos um exemplo de zona:
$TTL 3h
exemplo.br. IN SOA ns1.exemplo.br. admin.exemplo.br. (
01 ; Serial
3h ; Refresh after 3 hours
1h ; Retry after 1 hour
1w ; Expire after 1 week
1h ) ; Negative caching TTL of 1 hour
Agora veja na tabela abaixo o descritivo de cada opção:
Opção | Descrição |
---|---|
$TTL 3h | Tempo determinado em segundos que outros servidores vão armazenar em cache os dados da zona. |
exemplo.br. | Domínio dessa zona, poderíamos substituir por @ , já que é declarado no arquivo principal do Bind. |
IN | Classe da zona, nesse caso é Internet . Pode ser CH (Chaos), HS (Hesiod), IN (Internet) ou CS (CSNET - Obsoleto). |
SOA | É o tipo do registro da zona. Como estamos declarando uma zona temos que declarar como SOA, pois ele vai declarar a informação da Autoridade da zona. Existem mais de 30 tipos de registro, dentre os quais veremos SOA , NS , MX , A , CNAME , TXT e PTR . |
ns1.exemplo.br. | Quem é a autoridade dessa zona, nesse caso é o servidor responsável (ns1.exemplo.br. ). Aqui poderíamos deixar apenas centos (SEM O PONTO), ai o sistema iria completar com o nome do domínio, já que não teria colocado o ponto. |
admin.exemplo.br. | Depois disso temos o e-mail do responsável por esse domínio. Vale notar que admin.exemplo.br. vira admin.exemplo.br , o que muda é a forma como colocamos o e-mail ali. |
01 | É um número usado como referência para que os servidores Slaves e Clientes saibam que a zona sofreu alterações. Esse número deve sempre crescer, normalmente é usado uma estrutura baseada em data como 2018042001 para 2018/04/20 com versão do soa em 01 . |
3h | Tempo que o servidor secundário vai aguardar até verificar novamente se há atualizações no servidor primário. |
1h | Caso tenha falha no "refresh" (campo acima), o tempo esperado até a próxima verificação. |
1w | O tempo que o Slave aguardará o Master voltar, se esgotar o tempo, o Slave para de responder por essa zona (expira). |
1h | Se a zona expirar, esse será o tempo pelo qual um servidor cache armazenará a informação NXDOMAIN , antes de iniciar uma nova busca recursiva. O máximo são 3 horas. |
Como decrementar o SOA de Zonas assinadas
Para decrementar o soa é preciso aumentar o valor de soa para
4169595249
, assinar novamente a zona, depois mude o valor do SOA para0
, assine novamente a zona, coloque o valor correto e assinar novamente. Esse é o maior valor que cabe no SOA, por isso deve ser ele para mudar, do contrario ele não deixa decrementar.Zonas não assinadas
Só diminuir o valor, remover a zona dos slaves e reinciar os dns nos slaves.
Master no Debian
Vamos começar fazendo no Debian, o processo é ligeiramente diferente por causa da estrutura de arquivos:
# Edite o arquivo abaixo para criar o PTR:
$ sudo vim /etc/bind/named.conf.local
## Add a zona abaixo ao final do arquivo!
zone "ubuntu.te" {
type master;
file "/etc/bind/db.ubuntu.te";
};
Agora vamos criar a nossa zona:
# Crie o arquivo abaixo:
$ sudo vim /etc/bind/db.ubuntu.te
## Add a conf abaixo ao arquivo!
$TTL 1h
@ IN SOA dns.ubuntu.te. admin.ubuntu.te. (
01 ; Serial
3h ; Refresh after 3 hours
1h ; Retry after 1 hour
1w ; Expire after 1 week
1h ) ; Negative caching TTL of 1 hour
IN NS dns.ubuntu.te.
@ IN NS ns2.ubuntu.te.
MX 5 dns
dns.ubuntu.te. A 192.168.121.135 ; glue record
ns2 A 192.168.121.154
ftp A 192.168.121.200
Glue record é o registro no formato
NOME A IP
como desmonstrado acima.As formas abaixo são iguais no funcionamento:
# Forma 1:
@ IN NS dns.centos.te.
# Forma 2:
IN NS dns.centos.te.
# Forma 3:
NS dns.centos.te.
Agora verifique se existem erros na configuração:
$ sudo named-checkzone ubuntu.te /etc/bind/db.ubuntu.te
zone ubuntu.te/IN: loaded serial 1
OK
# Agora reinicie usando 'reload' ou 'reconfig':
$ sudo rndc reload
server reload successful
Configure o resolv.conf
para ficar assim:
$ cat /etc/resolv.conf
search ubuntu.te
nameserver 127.0.0.1
Depois execute para fazer um teste:
$ host ftp
ftp.ubuntu.te has address 192.168.121.200
# Verifique o servidor de email dessa zona:
$ dig -t mx ubuntu.te +short
5 dns.ubuntu.te.
# Verifique os servidores DNS dessa zona:
$ dig -t ns ubuntu.te +short
dns.ubuntu.te.
ns2.ubuntu.te.
### Após ter mudado as configurações para responder para qualquer IP eu fiz:
$ dig -t ns ubuntu.te @192.168.121.135 +short
ns2.ubuntu.te.
dns.ubuntu.te.
$ dig -t mx ubuntu.te @192.168.121.135 +short
5 dns.ubuntu.te.
Master no CentOS
Agora vamos configurar no CentOS, o processo é ligeiramente diferente por causa da estrutura de arquivos:
# Edite o arquivo abaixo para criar o PTR:
$ sudo vim /etc/named.conf
## Add o include abaixo ao final do arquivo!
include "/etc/named.zones";
# Crie o diretório abaixo:
$ sudo mkdir /var/named/zones/
# Agora crie o arquivo abaixo:
$ sudo vim /etc/named.zones
## Add a zona abaixo ao arquivo!
zone "centos.te" IN {
type master;
file "/var/named/zones/centos.te.zone";
};
Agora vamos criar a nossa zona:
# Crie o arquivo abaixo:
$ sudo vim /var/named/zones/centos.te.zone
## Add a conf abaixo ao arquivo!
$TTL 1h
@ IN SOA dns.centos.te. admin.centos.te. (
01 ; Serial
3h ; Refresh after 3 hours
1h ; Retry after 1 hour
1w ; Expire after 1 week
1h ) ; Negative caching TTL of 1 hour
IN NS dns.centos.te.
@ IN NS ns2.centos.te.
MX 5 dns
dns.centos.te. A 192.168.121.154 ; glue record
ns2 A 192.168.121.135
ftp A 192.168.121.100
Glue record é o registro no formato
NOME A IP
como desmonstrado acima.As formas abaixo são iguais no funcionamento:
# Forma 1:
@ IN NS dns.centos.te.
# Forma 2:
IN NS dns.centos.te.
# Forma 3:
NS dns.centos.te.
Agora verifique se existem erros na configuração:
$ sudo named-checkzone centos.te /var/named/zones/centos.te.zone
zone centos.te/IN: loaded serial 1
OK
# Agora reinicie usando 'reload' ou 'reconfig':
$ sudo rndc reload
server reload successful
Configure o resolv.conf
para ficar assim:
$ cat /etc/resolv.conf
search centos.te
nameserver 127.0.0.1
Depois execute para fazer um teste:
$ host ftp
ftp.centos.te has address 192.168.121.100
# Verifique o servidor de email dessa zona:
$ dig -t mx centos.te +short
5 dns.centos.te.
# Verifique os servidores DNS dessa zona:
$ dig -t ns centos.te +short
ns2.centos.te.
dns.centos.te.
### Após ter mudado as configurações para responder para qualquer IP eu fiz:
$ dig -t ns centos.te @192.168.121.154 +short
ns2.centos.te.
dns.centos.te.
$ dig -t mx centos.te @192.168.121.154 +short
5 dns.centos.te.
Slave
Um servidor Slave é o servidor secundário que vai ter autoridade sobre uma determinada zona, essa autoridade é dada para ele pelo servidor Master, que é o servidor que realmente tem autoridade sobre a zona. Com isso é possível criar uma redundância para a zona e caso um dos servidores venha a ficar indisponível, teremos outro servidor ativo respondendo pela zona.
O servidor slave só faz um pedido de transferência de zona quando ele identifica que o SOA do Master é maior que o SOA que o Slave possui internamente, essa verificação é feita periódicamente de acordo com o que foi colocado na autoridade da zona.
Slave no Debian
Vamos configurar o servidor Debian para ser Slave do CentOS.
# Edite o arquivo abaixo:
$ sudo vim /etc/bind/named.conf.local
## Add a conf abaixo ao final do arquivo:
zone "centos.te" IN {
type slave;
masters { 192.168.121.154; };
file "db.centos.te";
};
Como não estamos específicando caminho algum, pela configuração principal, o arquivo
db.centos.te
ficará em/var/cache/bind/
.
Agora vamos fazer o Bind ler as novas configurações:
$ sudo rndc reconfig
# Depois podemos olhar nos logs se funcionou:
$ sudo cat /var/log/bind/transfers
30-Nov-2022 15:46:02.381 zone centos.te/IN: Transfer started.
30-Nov-2022 15:46:02.381 transfer of 'centos.te/IN' from 192.168.121.154#53: connected using 192.168.121.135#49617
30-Nov-2022 15:46:02.385 zone centos.te/IN: transferred serial 1
30-Nov-2022 15:46:02.385 transfer of 'centos.te/IN' from 192.168.121.154#53: Transfer status: success
30-Nov-2022 15:46:02.385 transfer of 'centos.te/IN' from 192.168.121.154#53: Transfer completed: 1 messages, 8 records, 209 bytes, 0.004 secs (52250 bytes/sec)
# Podemos ver a transferência no lado do CentOS:
cat /var/log/bind/transfers
30-Nov-2022 15:46:02.385 client @0x7f11100b7690 192.168.121.135#49617 (centos.te): transfer of 'centos.te/IN': AXFR started (serial 1)
30-Nov-2022 15:46:02.386 client @0x7f11100b7690 192.168.121.135#49617 (centos.te): transfer of 'centos.te/IN': AXFR ended
Nós ainda podemos ler o conteúdo do arquivo criado automaticamente durante a transferência com o comando abaixo:
# Entre na pasta:
$ cd /var/cache/bind
# Gere um arquivo que possa ser lido por humanos:
$ sudo named-compilezone -f raw -F text -o centos.te.txt centos.te db.centos.te
centos.te db.centos.te
zone centos.te/IN: loaded serial 1
dump zone to centos.te.txt...done
OK
# -f raw = Formato do arquivo de input;
# -F text = Formato da saída do arquivo;
# -o centos.te.txt = Arquivo que vamos gerar;
# centos.te = Nome do domínio;
# db.centos.te = Arquivo original da zona;
# Agora leia o arquivo:
$ sudo cat centos.te.txt
centos.te. 3600 IN SOA dns.centos.te. admin.centos.te. 1 10800 3600 604800 3600
centos.te. 3600 IN NS dns.centos.te.
centos.te. 3600 IN NS ns2.centos.te.
centos.te. 3600 IN MX 5 dns.centos.te.
dns.centos.te. 3600 IN A 192.168.121.154
ftp.centos.te. 3600 IN A 192.168.121.100
ns2.centos.te. 3600 IN A 192.168.121.135
# Pode ainda fazer um teste interno:
$ host centos.te 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
centos.te mail is handled by 5 dns.centos.te.
Como teste, vamos fazer uma alteração para ver a transferência de zona usando o comando dig
.
# Primeiro verifique quando foi a última transferência:
$ sudo grep -i 'success' /var/log/bind/transfers
30-Nov-2022 15:55:23.713 transfer of 'centos.te/IN' from 192.168.121.154#53: Transfer status: success
# Agora veja informações da zona usando o 'dig':
$ dig @192.168.121.154 axfr centos.te
; <<>> DiG 9.16.1-Ubuntu <<>> @192.168.121.154 axfr centos.te
; (1 server found)
;; global options: +cmd
centos.te. 3600 IN SOA dns.centos.te. admin.centos.te. 1 10800 3600 604800 3600
centos.te. 3600 IN NS dns.centos.te.
centos.te. 3600 IN NS ns2.centos.te.
centos.te. 3600 IN MX 5 dns.centos.te.
dns.centos.te. 3600 IN A 192.168.121.154
ftp.centos.te. 3600 IN A 192.168.121.100
ns2.centos.te. 3600 IN A 192.168.121.135
centos.te. 3600 IN SOA dns.centos.te. admin.centos.te. 1 10800 3600 604800 3600
;; Query time: 0 msec
;; SERVER: 192.168.121.154#53(192.168.121.154)
;; WHEN: Wed Nov 30 16:55:03 UTC 2022
;; XFR size: 8 records (messages 1, bytes 248)
Podemos ver o SOA de uma forma mais resumida, veja:
# Consulte o SOA do CentOS:
$ dig centos.te @192.168.121.154 SOA +short
dns.centos.te. admin.centos.te. 1 10800 3600 604800 3600
# Consulte o SOA do Debian:
$ dig centos.te @192.168.121.135 SOA +short
dns.centos.te. admin.centos.te. 1 10800 3600 604800 3600
Em ambos o SOA é
1
.
Eu vou fazer uma alteração no servidor Master e depois tentarei novamente.
# Consulte o SOA do CentOS:
$ dig centos.te @192.168.121.154 SOA +short
dns.centos.te. admin.centos.te. 2 10800 3600 604800 3600
# Consulte o SOA do Debian:
$ dig centos.te @192.168.121.135 SOA +short
dns.centos.te. admin.centos.te. 2 10800 3600 604800 3600
# Agora verifique quando foi a última transferência:
$ sudo grep -i 'success' /var/log/bind/transfers
30-Nov-2022 15:55:23.713 transfer of 'centos.te/IN' from 192.168.121.154#53: Transfer status: success
30-Nov-2022 16:58:52.625 transfer of 'centos.te/IN' from 192.168.121.154#53: Transfer status: success
A zona foi transferida assim que fiz
rndc reload
no servidor Master.
Slave no CentOS
Vamos configurar o servidor CentOS para ser Slave do Debian.
# Edite o arquivo abaixo:
$ sudo vim /etc/named.zones
## Add a conf abaixo ao final do arquivo:
zone "ubuntu.te" IN {
type slave;
masters { 192.168.121.135; };
file "ubuntu.te.zone";
};
Agora vamos fazer o Bind ler as novas configurações:
$ sudo rndc reconfig
# Depois podemos olhar nos logs se funcionou:
$ sudo grep -i 'ubuntu' /var/log/bind/transfers
30-Nov-2022 17:09:22.312 transfer of 'ubuntu.te/IN' from 192.168.121.135#53: connected using 192.168.121.154#35676
30-Nov-2022 17:09:22.314 transfer of 'ubuntu.te/IN' from 192.168.121.135#53: Transfer status: success
30-Nov-2022 17:09:22.314 transfer of 'ubuntu.te/IN' from 192.168.121.135#53: Transfer completed: 1 messages, 8 records, 209 bytes, 0.001 secs (209000 bytes/sec)
Nós ainda podemos ler o conteúdo do arquivo criado automaticamente durante a transferência com o comando abaixo:
# Entre no diretório abaixo:
$ cd /var/named/
# Gere um arquivo que possa ser lido por humanos:
$ sudo named-compilezone -f raw -F text -o ubuntu.te.txt ubuntu.te ubuntu.te.zone
zone ubuntu.te/IN: loaded serial 1
dump zone to ubuntu.te.txt...done
OK
# -f raw = Formato do arquivo de input;
# -F text = Formato da saída do arquivo;
# -o centos.te.txt = Arquivo que vamos gerar;
# centos.te = Nome do domínio;
# db.centos.te = Arquivo original da zona;
# Agora leia o arquivo:
$ sudo cat ubuntu.te.txt
ubuntu.te. 3600 IN SOA dns.ubuntu.te. admin.ubuntu.te. 1 10800 3600 604800 3600
ubuntu.te. 3600 IN NS dns.ubuntu.te.
ubuntu.te. 3600 IN NS ns2.ubuntu.te.
ubuntu.te. 3600 IN MX 5 dns.ubuntu.te.
dns.ubuntu.te. 3600 IN A 192.168.121.135
ftp.ubuntu.te. 3600 IN A 192.168.121.200
ns2.ubuntu.te. 3600 IN A 192.168.121.154
# Pode ainda fazer um teste interno:
$ host ubuntu.te 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
ubuntu.te mail is handled by 5 dns.ubuntu.te.
Forward
Nesse "tipo de servidor DNS" ele vai redirecionar a requisição de uma determinada zona para outro servidor DNS, esse outro servidor é quem vai fazer a consulta para ele.
Debian
No debian essa configuração é bem fácil. Comecemos fazendo uma configuração para redirecionar toda a consulta (independente do domíno, exceto domínios internos) para outro servidor.
# Edite o arquivo abaixo:
$ sudo vim /etc/bind/named.conf.options
# Mude a declaração abaixo:
// forwarders {
// 0.0.0.0;
// };
# Para:
forwarders {
192.168.121.154;
};
Para redirecionar os domínios internos também nós devemos usar a configuração
forward only
como podemos ver abaixo:forwarders {
192.168.121.154;
};
forward only;
Agora vamos fazer a verificação das configurações:
$ sudo named-checkconf /etc/bind/named.conf
# Agora reinicie o bind:
$ sudo rndc reload
Para fazer o teste vou deixar rodando um tcpdump
no servidor Debian para vermos ele redirecionar a consulta:
# No Debian:
$ sudo tcpdump -n port 53 -vvvv
Agora usando minha máquina Host eu vou fazer uma consulta para o servidor Debian:
$ host nic.br 192.168.121.135
Using domain server:
Name: 192.168.121.135
Address: 192.168.121.135#53
Aliases:
NIC.BR has address 200.160.4.6
NIC.BR has IPv6 address 2001:12ff:0:4::6
nic.br mail is handled by 1 mx.nic.br.
nic.br mail is handled by 5 enqueuer.nic.br.
E com isso podemos ver os logs do tcpdump
abaixo:
20:30:11.928393 IP (tos 0x0, ttl 64, id 15514, offset 0, flags [none], proto UDP (17), length 52)
192.168.121.1.55000 > 192.168.121.135.53: [bad udp cksum 0x740b -> 0xefe9!] 58021+ A? nic.br. (24)
20:30:11.929047 IP (tos 0x0, ttl 64, id 60793, offset 0, flags [none], proto UDP (17), length 91)
192.168.121.135.39515 > 192.168.121.154.53: [bad udp cksum 0x74cb -> 0x466f!] 65161+% [1au] A? nic.br. ar: . OPT UDPsize=4096 DO (63)
20:30:12.158697 IP (tos 0x0, ttl 64, id 30986, offset 0, flags [none], proto UDP (17), length 579)
192.168.121.154.53 > 192.168.121.135.39515: [bad udp cksum 0x76b3 -> 0xfefa!] 65161 q: A? nic.br. 2/6/13 NIC.BR. [1d] A 200.160.4.6, NIC.BR. [1d] RRSIG ns: br. [2d] NS b.dns.br., br. [2d] NS c.dns.br., br. [2d] NS f.dns.br., br. [2d] NS d.dns.br., br. [2d] NS e.dns.br., br. [2d] NS a.dns.br. ar: a.dns.br. [2d] A 200.219.148.10, c.dns.br. [2d] A 200.192.233.10, b.dns.br. [2d] A 200.189.41.10, d.dns.br. [2d] A 200.219.154.10, e.dns.br. [2d] A 200.229.248.10, f.dns.br. [2d] A 200.219.159.10, a.dns.br. [2d] AAAA 2001:12f8:6::10, c.dns.br. [2d] AAAA 2001:12f8:a::10, b.dns.br. [2d] AAAA 2001:12f8:8::10, d.dns.br. [2d] AAAA 2001:12f8:4::10, e.dns.br. [2d] AAAA 2001:12f8:2::10, f.dns.br. [2d] AAAA 2001:12f8:c::10, . OPT UDPsize=4096 DO (551)
20:30:12.159245 IP (tos 0x0, ttl 64, id 52913, offset 0, flags [none], proto UDP (17), length 91)
192.168.121.135.32918 > 192.168.121.154.53: [bad udp cksum 0x74cb -> 0x61c6!] 53544+% [1au] DNSKEY? nic.br. ar: . OPT UDPsize=4096 DO (63)
20:30:12.219654 IP (tos 0x0, ttl 64, id 31004, offset 0, flags [none], proto UDP (17), length 279)
192.168.121.154.53 > 192.168.121.135.32918: [bad udp cksum 0x7587 -> 0x1fa1!] 53544 q: DNSKEY? nic.br. 2/0/1 NIC.BR. [1d] DNSKEY, NIC.BR. [1d] RRSIG ar: . OPT UDPsize=4096 DO (251)
20:30:12.221496 IP (tos 0x0, ttl 64, id 33959, offset 0, flags [none], proto UDP (17), length 91)
192.168.121.135.40371 > 192.168.121.154.53: [bad udp cksum 0x74cb -> 0xe9ab!] 31871+% [1au] DS? NIC.BR. ar: . OPT UDPsize=4096 DO (63)
20:30:12.259147 IP (tos 0x0, ttl 64, id 31006, offset 0, flags [none], proto UDP (17), length 237)
192.168.121.154.53 > 192.168.121.135.40371: [bad udp cksum 0x755d -> 0x9483!] 31871 q: DS? NIC.BR. 2/0/1 NIC.BR. [1h] DS, NIC.BR. [1h] RRSIG ar: . OPT UDPsize=4096 DO (209)
20:30:12.263117 IP (tos 0x0, ttl 64, id 46210, offset 0, flags [none], proto UDP (17), length 87)
192.168.121.135.37383 > 192.168.121.154.53: [bad udp cksum 0x74c7 -> 0x2857!] 34286+% [1au] DNSKEY? br. ar: . OPT UDPsize=4096 DO (59)
20:30:12.275282 IP (tos 0x0, ttl 64, id 31010, offset 0, flags [none], proto UDP (17), length 345)
192.168.121.154.53 > 192.168.121.135.37383: [bad udp cksum 0x75c9 -> 0xec74!] 34286 q: DNSKEY? br. 3/0/1 br. [6h] DNSKEY, br. [6h] DNSKEY, br. [6h] RRSIG ar: . OPT UDPsize=4096 DO (317)
20:30:12.277847 IP (tos 0x0, ttl 64, id 56367, offset 0, flags [none], proto UDP (17), length 87)
192.168.121.135.45537 > 192.168.121.154.53: [bad udp cksum 0x74c7 -> 0xbbd1!] 30225+% [1au] DS? br. ar: . OPT UDPsize=4096 DO (59)
20:30:12.288328 IP (tos 0x0, ttl 64, id 31018, offset 0, flags [none], proto UDP (17), length 422)
192.168.121.154.53 > 192.168.121.135.45537: [bad udp cksum 0x7616 -> 0xfa8f!] 30225 q: DS? br. 2/0/1 br. [1d] DS, br. [1d] RRSIG ar: . OPT UDPsize=4096 DO (394)
20:30:12.301696 IP (tos 0x0, ttl 64, id 46024, offset 0, flags [DF], proto UDP (17), length 74)
192.168.121.135.53 > 192.168.121.1.55000: [bad udp cksum 0x7421 -> 0xb03a!] 58021 q: A? nic.br. 1/0/0 NIC.BR. [1d] A 200.160.4.6 (46)
20:30:12.303169 IP (tos 0x0, ttl 64, id 15568, offset 0, flags [none], proto UDP (17), length 52)
192.168.121.1.34687 > 192.168.121.135.53: [bad udp cksum 0x740b -> 0xf19b!] 12338+ AAAA? nic.br. (24)
20:30:12.304917 IP (tos 0x0, ttl 64, id 60831, offset 0, flags [none], proto UDP (17), length 91)
192.168.121.135.54149 > 192.168.121.154.53: [bad udp cksum 0x74cb -> 0xff24!] 4171+% [1au] AAAA? nic.br. ar: . OPT UDPsize=4096 DO (63)
20:30:12.512080 IP (tos 0x0, ttl 64, id 31155, offset 0, flags [none], proto UDP (17), length 1407)
192.168.121.154.53 > 192.168.121.135.54149: [bad udp cksum 0x79ef -> 0x6388!] 4171 q: AAAA? nic.br. 2/6/21 NIC.BR. [1d] AAAA 2001:12ff:0:4::6, NIC.BR. [1d] RRSIG ns: br. [2d] NS a.dns.br., br. [2d] NS b.dns.br., br. [2d] NS c.dns.br., br. [2d] NS e.dns.br., br. [2d] NS f.dns.br., br. [2d] NS d.dns.br. ar: a.dns.br. [2d] A 200.219.148.10, c.dns.br. [2d] A 200.192.233.10, b.dns.br. [2d] A 200.189.41.10, d.dns.br. [2d] A 200.219.154.10, e.dns.br. [2d] A 200.229.248.10, f.dns.br. [2d] A 200.219.159.10, a.dns.br. [2d] AAAA 2001:12f8:6::10, c.dns.br. [2d] AAAA 2001:12f8:a::10, b.dns.br. [2d] AAAA 2001:12f8:8::10, d.dns.br. [2d] AAAA 2001:12f8:4::10, e.dns.br. [2d] AAAA 2001:12f8:2::10, f.dns.br. [2d] AAAA 2001:12f8:c::10, a.dns.br. [2d] RRSIG, a.dns.br. [2d] RRSIG, c.dns.br. [2d] RRSIG, c.dns.br. [2d] RRSIG, b.dns.br. [2d] RRSIG, b.dns.br. [2d] RRSIG, d.dns.br. [2d] RRSIG, d.dns.br. [2d] RRSIG, . OPT UDPsize=4096 DO (1379)
20:30:12.525663 IP (tos 0x0, ttl 64, id 46050, offset 0, flags [DF], proto UDP (17), length 86)
192.168.121.135.53 > 192.168.121.1.34687: [bad udp cksum 0x742d -> 0x4b4a!] 12338 q: AAAA? nic.br. 1/0/0 NIC.BR. [1d] AAAA 2001:12ff:0:4::6 (58)
20:30:12.527150 IP (tos 0x0, ttl 64, id 15583, offset 0, flags [none], proto UDP (17), length 52)
192.168.121.1.46802 > 192.168.121.135.53: [bad udp cksum 0x740b -> 0x7948!] 31039+ MX? nic.br. (24)
20:30:12.529551 IP (tos 0x0, ttl 64, id 43941, offset 0, flags [none], proto UDP (17), length 91)
192.168.121.135.60439 > 192.168.121.154.53: [bad udp cksum 0x74cb -> 0xf69b!] 64374+% [1au] MX? nic.br. ar: . OPT UDPsize=4096 DO (63)
20:30:12.709437 IP (tos 0x0, ttl 64, id 31248, offset 0, flags [none], proto UDP (17), length 1417)
192.168.121.154.53 > 192.168.121.135.60439: [bad udp cksum 0x79f9 -> 0xe297!] 64374 q: MX? nic.br. 3/6/21 nic.br. [5m] MX enqueuer.nic.br. 5, nic.br. [5m] MX mx.nic.br. 1, nic.br. [5m] RRSIG ns: br. [2d] NS a.dns.br., br. [2d] NS d.dns.br., br. [2d] NS e.dns.br., br. [2d] NS b.dns.br., br. [2d] NS c.dns.br., br. [2d] NS f.dns.br. ar: a.dns.br. [2d] A 200.219.148.10, c.dns.br. [2d] A 200.192.233.10, b.dns.br. [2d] A 200.189.41.10, d.dns.br. [2d] A 200.219.154.10, e.dns.br. [2d] A 200.229.248.10, f.dns.br. [2d] A 200.219.159.10, a.dns.br. [2d] AAAA 2001:12f8:6::10, c.dns.br. [2d] AAAA 2001:12f8:a::10, b.dns.br. [2d] AAAA 2001:12f8:8::10, d.dns.br. [2d] AAAA 2001:12f8:4::10, e.dns.br. [2d] AAAA 2001:12f8:2::10, f.dns.br. [2d] AAAA 2001:12f8:c::10, a.dns.br. [2d] RRSIG, a.dns.br. [2d] RRSIG, c.dns.br. [2d] RRSIG, c.dns.br. [2d] RRSIG, b.dns.br. [2d] RRSIG, b.dns.br. [2d] RRSIG, d.dns.br. [2d] RRSIG, d.dns.br. [2d] RRSIG, . OPT UDPsize=4096 DO (1389)
20:30:12.712894 IP (tos 0x0, ttl 64, id 46053, offset 0, flags [DF], proto UDP (17), length 96)
192.168.121.135.53 > 192.168.121.1.46802: [bad udp cksum 0x7437 -> 0xf34d!] 31039 q: MX? nic.br. 2/0/0 nic.br. [5m] MX mx.nic.br. 1, nic.br. [5m] MX enqueuer.nic.br. 5 (68)
Podemos ver que o Host envia a solicitação para o DNS Debian solicitando o IPv4:
192.168.121.1.55000 > 192.168.121.135.53: [bad udp cksum 0x740b -> 0xefe9!] 58021+ A? nic.br. (24)
Em seguida o Debian fica brincando de ping pong com o CentOS (ficam trocando informações):
192.168.121.135.39515 > 192.168.121.154.53
192.168.121.154.53 > 192.168.121.135.39515
192.168.121.135.32918 > 192.168.121.154.53
192.168.121.154.53 > 192.168.121.135.32918
E por fim, sempre que o Debian recebe alguma informação concreta de registro como: IPv4, IPv6, MX, NS entre outros, ele retorna o resultado para o Host:
# Retornando o IPv4:
192.168.121.135.53 > 192.168.121.1.55000: [bad udp cksum 0x7421 -> 0xb03a!] 58021 q: A? nic.br. 1/0/0 NIC.BR. [1d] A 200.160.4.6 (46)
# Logo após o Host receber o IPv4, ele solicita o IPv6:
192.168.121.1.34687 > 192.168.121.135.53: [bad udp cksum 0x740b -> 0xf19b!] 12338+ AAAA? nic.br. (24)
# Host recebe o resultado para IPv6:
192.168.121.135.53 > 192.168.121.1.34687: [bad udp cksum 0x742d -> 0x4b4a!] 12338 q: AAAA? nic.br. 1/0/0 NIC.BR. [1d] AAAA 2001:12ff:0:4::6 (58)
# Host solicita o MX:
192.168.121.1.46802 > 192.168.121.135.53: [bad udp cksum 0x740b -> 0x7948!] 31039+ MX? nic.br. (24)
# Host recebe o resultado para MX:
192.168.121.135.53 > 192.168.121.1.46802: [bad udp cksum 0x7437 -> 0xf34d!] 31039 q: MX? nic.br. 2/0/0 nic.br. [5m] MX mx.nic.br. 1, nic.br. [5m] MX enqueuer.nic.br. 5 (68)
Forward para Domínio
Vamos ver como redirecionar uma consulta de um domínio específico. Antes de tudo remova a configuração feita acima.
# Edite o arquivo abaixo:
$ sudo vim /etc/bind/named.conf.local
# Mude a configuração de slave atual para:
zone "centos.te" IN {
type forward;
forwarders { 192.168.121.154; };
};
# Agora vamos fazer a verificação das configurações
$ sudo named-checkconf /etc/bind/named.conf
# Agora reinicie o bind:
$ sudo rndc reload
O processo é similar ao teste que fizemos, não vou refazer novamente o teste mas essa é a configuração.
Caso não funciona é problema no DNSSEC.
DNS Reverso
O DNS reverso é um recurso que permite que outros servidores verifiquem a autenticidade do seu servidor. Para isso, ele verifica se o endereço IP atual bate com o endereço IP informado pelo servidor DNS.
Os servidores de e-mail irão recusar seus e-mails ou classificá-los como spam, caso o DNS reverso não esteja configurado.
Debian
Vamos ver como configurar um reverso no debian.
# Edite o arquivo abaixo:
$ sudo vim /etc/bind/named.conf.local
# Adicione a configuração abaixo ao final do arquivo:
zone "121.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.ubuntu.te";
};
# Edite o arquivo abaixo:
$ sudo vim /etc/bind/db.ubuntu.te
# Adicione a configuração abaixo ao final do arquivo:
135 PTR dns.ubuntu.te.
154 PTR ns2.ubuntu.te.
200 PTR ftp.ubuntu.te.
# Não se esqueça de mudar o valor de 'SOA', vou deixar '20':
20 ; Serial
Agora verifique se existem erros na configuração e depois reinicie o serviço do Bind:
# Agora vamos fazer a verificação das configurações
$ sudo named-checkconf /etc/bind/named.conf
# Agora reinicie o bind:
$ sudo rndc reload
Agora de outra máquina podemos testar:
$ dig -x 192.168.121.200 @192.168.121.135 +short
ftp.ubuntu.te.
$ dig -x 192.168.121.154 @192.168.121.135 +short
ns2.ubuntu.te.
# Fazendo consultas dentro do servidor:
$ host 192.168.121.200
200.121.168.192.in-addr.arpa domain name pointer ftp.ubuntu.te.
$ host 192.168.121.154
154.121.168.192.in-addr.arpa domain name pointer ns2.ubuntu.te.
Poderiamos criar outro arquivo para declarar os reversos, mas o que fiz foi manter no mesmo arquivo da zona que já temos e adicionei o
PTR
que é responsável por declarar o nome para um IP.