Como posso verificar se meu servidor DNS está funcionando?

4

This case scenario is for a router with embedded linux, but I think the answer could be the same for any Linux system.

Esta é a minha verificação de DNS :

~ $ cat /etc/resolv.conf
nameserver 80.58.61.250
nameserver 80.58.61.254
~ $ ping 80.58.61.250
PING 80.58.61.250 (80.58.61.250): 56 data bytes
64 bytes from 80.58.61.250: seq=0 ttl=250 time=50.0 ms
64 bytes from 80.58.61.250: seq=1 ttl=250 time=40.0 ms
^C
--- 80.58.61.250 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 40.0/45.0/50.0 ms
~ $ ping www.google.es
PING www.google.es (2a00:1450:4007:808::101f): 56 data bytes
ping: sendto: Network is unreachable
~ $ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=57 time=50.0 ms
64 bytes from 8.8.8.8: seq=1 ttl=57 time=40.0 ms
64 bytes from 8.8.8.8: seq=2 ttl=57 time=40.0 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 40.0/43.3/50.0 ms

Como pode ser visto, há uma resposta da Internet ( 8.8.8.8 ), mas não de nomes de domínio ( www.google.es , mesmo para www.google.com ).
O servidor DNS ( 80.58.61.250 ) responde a pings.
Então eu queria saber se o problema poderia estar nesse servidor DNS.

Existe alguma maneira, como telnet ou similar, de verificar se um determinado DNS funciona como deve (isto é: responder com um endereço IP quando solicitado para um nome de domínio)?

Por exemplo, ao testar um servidor SSH, um truque possível é:

C:\Users\Luis>telnet Midnighter- 22
SSH-2.0-OpenSSH_6.7p1 Debian-5

Ferramentas de terceiros aceitas. Linha de comando e código aberto preferido.

    
por Sopalajo de Arrierez 02.10.2015 / 18:02

1 resposta

9

Ping ICMP é um teste ruim, já que um servidor DNS em funcionamento pode firewallar tais solicitações. O DNS-over-UDP não tem um handshake de "conexão" (SYN / SYN + ACK / ACK) que o SSH-over-TCP faz, portanto, o melhor que podemos fazer é lançar consultas DNS no servidor DNS presumido e ver o que acontece . Essas consultas podem não funcionar se houver um firewall ou se a consulta for executada em função da diminuição da taxa de DNS (em nível de firewall ou no próprio servidor DNS, mais comum atualmente devido a ataques de amplificação de DNS) ou dependendo da consulta ou do Servidor DNS (por exemplo, foi uma consulta recursiva para um não-recursivo NS ? Ou é o cliente em que o servidor DNS considera uma exibição não local? Etc.)

Normalmente, uso dig (ou Net::DNS em programas Perl) para verificações de DNS. Consulte também o software de monitoramento , pois eles devem ter suporte para monitoramento, geração de gráficos e relatórios sobre DNS, embora possam ser muito pesado para uso em um roteador embutido. Alguns exemplos de dig :

# possibly get server version info (unreliable)
$ dig +short @128.95.120.1 TXT CHAOS version.bind
"UW 3A7_3"
$ dig +short @8.8.8.8 TXT CHAOS version.bind
$ 
$ dig +short @8.8.8.8 NS example.org
b.iana-servers.net.
a.iana-servers.net.
$ dig +short @8.8.8.8 SOA example.org
sns.dns.icann.org. noc.dns.icann.org. 2015082419 7200 3600 1209600 3600
$ 
$ dig +short @8.8.4.4 A www.example.org
93.184.216.34
$ dig +short @8.8.4.4 CNAME www.example.org
$ 
# checking via TCP and via IPv6 might also be useful
$ dig +tcp +short @2001:4860:4860::8888 A www.example.org
93.184.216.34
$ 

Existem também os comandos nslookup e getent hosts , se você não deseja instalar os utilitários BIND. Eles são menos ou muito menos poderosos do que dig , embora possam ser suficientes se você só precisar verificar se uma consulta para um determinado host retorna um IP específico.

    
por 02.10.2015 / 18:48

Tags