Voltar às atualizações
New releaseJul 21, 2026

dnsdiag v2.9.4

Conjunto de ferramentas de medição, solução de problemas e auditoria de segurança de DNS

Compartilhar

PyPI PyPI Downloads Downloads PyPI Docker Pulls GitHub stars

Conjunto de Ferramentas para Medição, Diagnóstico e Auditoria de Segurança de DNS

Você já se perguntou se seu ISP está interceptando seu tráfego DNS? Notou algum comportamento incomum nas respostas DNS, ou foi redirecionado para o endereço errado e suspeitou que algo estivesse errado com seu DNS? Oferecemos um conjunto de ferramentas para realizar auditorias básicas em suas consultas e respostas DNS, ajudando você a garantir que seu DNS esteja funcionando conforme o esperado.

Com o dnsping, você pode medir o tempo de resposta de qualquer servidor DNS para consultas arbitrárias. Similar ao utilitário ping tradicional, o dnsping oferece funcionalidade comparável para requisições DNS, ajudando a monitorar a capacidade de resposta do servidor.

Você também pode rastrear a rota da sua requisição DNS até seu destino usando o dnstraceroute, verificando se ela não está sendo redirecionada ou interceptada. Ao comparar consultas DNS enviadas ao mesmo servidor, o dnstraceroute permite observar quaisquer diferenças nos caminhos percorridos, alertando-o sobre possíveis problemas.

O dnseval avalia múltiplos resolvedores DNS para ajudá-lo a escolher o melhor resolvedor DNS para sua rede. Embora seja recomendado usar seu próprio resolvedor DNS para evitar dependência de resolvedores terceiros, o dnseval pode auxiliar na seleção do resolvedor DNS ideal quando necessário. Ele permite comparar servidores DNS com base em desempenho (latência) e confiabilidade (perda de pacotes), fornecendo uma visão abrangente para tomada de decisões informadas.

Instalação

Existem várias formas de usar este conjunto de ferramentas, embora recomendamos executá-lo diretamente a partir do código fonte para maior flexibilidade e controle.

Código Fonte

  1. Clone o repositório git e instale as dependências:
git clone https://github.com/farrokhi/dnsdiag.git
cd dnsdiag
pip3 install -r requirements.txt
  1. Alternativamente, você pode instalar o pacote usando pip:
pip3 install dnsdiag

Usando uv (Recomendado)

uv é um gerenciador de pacotes Python rápido que pode executar ferramentas diretamente sem instalação:

# Executar dnsping diretamente sem instalação
uvx --from dnsdiag dnsping google.com

# Executar com opções específicas
uvx --from dnsdiag dnsping -c 5 --tls -s 8.8.8.8 example.com

# Executar dnstraceroute
uvx --from dnsdiag dnstraceroute cloudflare.com

# Executar dnseval
uvx --from dnsdiag dnseval -f public-servers.txt github.com

Para instalar o dnsdiag permanentemente:

# Instalar ferramentas dnsdiag
uv tool install dnsdiag

# Atualizar para a versão mais recente
uv tool upgrade dnsdiag

Pacote Binário

De tempos em tempos, pacotes binários serão lançados para Windows, Mac OS X e Linux. Você pode obter a versão mais recente na página de releases.

Plataformas Suportadas

Binários pré-compilados estão disponíveis para:

  • Linux (x86_64, ARM64)
  • macOS (Intel, Apple Silicon)
  • Windows (x86_64)

Windows ARM64 não é suportado atualmente devido a dependências de compilação que exigem toolchains de compilação nativos não prontamente disponíveis. Se você estiver usando Windows em ARM, pode executar o dnsdiag usando o Subsistema Windows para Linux (WSL2) ou instalar diretamente a partir do código fonte.

Docker

Se preferir não instalar o dnsdiag em sua máquina local, você pode usar a imagem Docker para executar as ferramentas em um ambiente containerizado. Por exemplo:

docker run --network host -it --rm farrokhi/dnsdiag dnsping.py

dnsping

O dnsping permite que você "pingue" um resolvedor DNS enviando uma consulta DNS arbitrária várias vezes. Para uma lista completa de opções de linha de comando suportadas, use --help. Aqui estão algumas flags principais:

  • Use --tcp, --tls, --doh, --quic ou --http3 para selecionar o protocolo de transporte (o padrão é UDP). Essas opções são mutuamente exclusivas; apenas um protocolo pode ser especificado por comando.
  • Use --flags para exibir flags de resposta, incluindo flags EDNS, para cada resposta.
  • Use --dnssec para solicitar validação DNSSEC, se disponível.
  • Mensagens de Erro DNS Estendido (RFC 8914) são exibidas automaticamente quando presentes.
  • Use --nsid para exibir o Identificador do Servidor de Nomes (NSID) se disponível (RFC 5001).
  • Use --ecs para incluir informações de Sub-rede do Cliente EDNS para otimização de roteamento geográfico.
  • Use --cookie para exibir cookies DNS (RFC 7873) quando presentes nas respostas.
./dnsping.py -c 5 --dnssec --flags --tls -t AAAA -s 8.8.8.8 brokendnssec.net
dnsping.py DNS: 8.8.8.8:853, hostname: brokendnssec.net, proto: TLS, class: IN, type: AAAA, flags: [RD]
75  bytes from 8.8.8.8: seq=1   time=73.703 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=2   time=69.523 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=3   time=58.058 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=4   time=54.235 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=5   time=57.806 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]

--- 8.8.8.8 dnsping statistics ---
5 requests transmitted, 5 responses received, 0% lost
min=54.235 ms, avg=22.665 ms, max=69.523 ms, stddev=38.202 ms

O dnsping também fornece estatísticas como tempos mínimo, máximo e médio de resposta, juntamente com jitter (desvio padrão) e perda de pacotes.

Aqui estão alguns casos de uso interessantes para o dnsping:

  • Comparar tempos de resposta entre diferentes protocolos de transporte (ex.: UDP vs. DoH).
  • Avaliar a confiabilidade do seu servidor DNS medindo jitter e perda de pacotes.
  • Medir tempos de resposta com DNSSEC ativado usando a flag --dnssec.
  • Testar o comportamento do EDNS Client Subnet para respostas com reconhecimento geográfico:
./dnsping.py -c 3 --ecs 203.0.113.0/24 -s 94.140.14.14 google.com
dnsping.py DNS: 94.140.14.14:53, hostname: google.com, proto: UDP, class: IN, type: A, flags: [RD]
66  bytes from 94.140.14.14: seq=1   time=31.407 ms  NOERROR [ECS:203.0.113.0/24/24]
66  bytes from 94.140.14.14: seq=2   time=29.156 ms  NOERROR [ECS:203.0.113.0/24/24]
66  bytes from 94.140.14.14: seq=3   time=30.892 ms  NOERROR [ECS:203.0.113.0/24/24]

--- 94.140.14.14 dnsping statistics ---
3 requests transmitted, 3 responses received, 0% lost
min=29.156 ms, avg=30.485 ms, max=31.407 ms, stddev=1.176 ms
  • Identificar servidores DNS usando a opção NSID:
./dnsping.py -c 2 --nsid -s 8.8.8.8 google.com

Categorias