DNS Tips
Debugando o BIND descobri algumas coisas interessantes as quais não encontrei muita informação na internet.
Os registros DNS são divididos em classes. Olhe esse trecho retirado do livro O'Reillly: DNS and BIND, 4th Edition:
Currently, there are classes for internets (any TCP/IP-based internet), networks based on the Chaosnet protocols, and networks that use Hesiod software. (Chaosnet is an old network of largely historic significance.)
Hoje usa-se apenas a classe internet não se sabe se alguém ainda usa a chaosnet. Porém o BIND carrega essa classe(chaosnet). E dentro dela estão algumas informações, por hora importantes, como a versão do BIND, o hostname da máquina onde ele está rodando e os autores do BIND.
A versão do BIND eu já sabia que podia ser consultada. O hostname do server me surpreendeu e os autores eu não consegui consultar. Mas se você carregar com o seguinte comando:
/usr/local/sbin/named -u named -t /chroot/named -g -c /etc/named.conf -d 10
Você verá todas as informações que são carregadas na inicialização. Entre elas uma linha como isto:
26-Jul-2007 15:19:01.984 zone hostname.bind/CH: starting load
Que é onde ele carrega a zona que armazena as informações que mencionei acima.
Indo diretamente ao que interessa que é fazer esse tipo de consulta à servidores rodando BIND.
- Ex. de como consultar a versão do BIND usando a ferramenta dig:
dig @servidor version.bind txt chaos
- O mesmo exemplo usando o nslookup:
nslookupA opção set debug não é necessária mas, útil para ceder mais informações.
server servidor
set debug
set class=chaos
set type=txt
version.bind
Como essa informação, tanto da versão quanto do hostname do server, expõem o servidor a um certo risco. Podemos corrigir esses valores, facilmente, usando as seguintes diretivas no named.conf:
hostname " are you kidding me? ";
version " are you kidding me? ";
Bom...o nslookup é meio chato pra fazer as pesquisas. E até li em algum lugar que ele já é considerado obsoleto. Portanto vá se acostumando com o dig.
No nslookup você tem várias opções que podem ser setadas em modo interativo como o tipo de registro que deseja ser consultado, a classe que vai ser consultada enfim.... Para ver as opções que estão sendo usadas e quem sabe alterá-las pode-se digitar set all. Serão listadas as opções e os respectivos valores setados no momento.
Como fazer consultas de dns reverso. Ou seja, informar o nome e ser retornado o ip. Esses registros de dns reverso são do tipo PTR enquanto os de dns direto são do tipo A. Por padrão o nslookup busca por registros do tipo A.
- Para fazer uma consulta de dns reverso usando o dig:
dig @servidor -x 192.168.1.1
- A mesmo consulta utilizando o nslookup:
nslookup
server servidor
set debug
set type=ptr
192.168.1.1
Os servidores usam um tipo de registro(AXFR) que solicita e transfere a zona inteira para quem solicitou. Hoje em dia é usado o IXFR que ao invés de transferir a zona inteira transfere apenas o que há de diferente entre o servidor que foi consultado e o que consultou.
Usando desse recurso podemos podemos fazer de conta que somos um servidor secundário que solicita uma transferência de zona completa. É um pouco útil quando está querendo conhecer um outro servidor... não me pergunte por qual motivos isso seria necessário mas...
dig @servidordns.com.br axfr empresaxyz.com.br
Isso solicita ao servidor servidordns.com.br uma transferência de zona completa da zona empresaxyz.com.br.
Se o pseudo-administrador da empresaxyz não setou a diretiva allow-transfer é bem possível que você verá uma lista de todos os registros pertencentes a essa zona.
Para evitar isso qualquer ser que se proponha a fazer um servidor deveria saber resolver isso com uma diretiva allow-transfer.
allow-transfer { none; };
Referência sobre DNS e BIND:
http://www.zytrax.com/books/dns/
Brevemente posto um how-to de como montar um servidor dns usando o bind, views, jails e afins...
[]'s