Módulo DNS
O módulo DNS fornece funções para testar a performance e disponibilidade de servidores DNS. Este módulo é útil para monitoramento de infraestrutura de DNS, diagnóstico de problemas de resolução de nomes e medição de latência em consultas DNS.
Funções Disponíveis
Seção intitulada “Funções Disponíveis”1. dns.ping(server, domain)
Seção intitulada “1. dns.ping(server, domain)”Realiza uma consulta DNS a um servidor específico e mede o tempo de resposta (RTT - Round Trip Time).
Parâmetros:
Seção intitulada “Parâmetros:”-
server (string): Endereço do servidor DNS a testar (pode ser IP ou nome de domínio)
-
domain (string): Domínio a ser consultado no servidor DNS
Retorno:
Seção intitulada “Retorno:”- número: Tempo de resposta em milissegundos (latência DNS)
Comportamento:
Seção intitulada “Comportamento:”-
Resolve o endereço do servidor DNS (se for um nome de domínio)
-
Conecta ao servidor DNS na porta 53 (UDP)
-
Realiza uma consulta do tipo A para o domínio especificado
-
Mede o tempo entre o envio da consulta e o recebimento da resposta
-
Retorna o tempo em milissegundos
Exemplo de Uso:
Seção intitulada “Exemplo de Uso:”-- Testar latência do DNS do Googlelocal latencia = dns.ping("8.8.8.8", "google.com")-- latencia = 25 (exemplo: 25 milissegundos)
-- Testar DNS público do Cloudflarelocal latencia_cf = dns.ping("1.1.1.1", "github.com")-- latencia_cf = 30 (exemplo)
-- Testar servidor DNS por nomelocal latencia_local = dns.ping("dns.local", "servidor.producao")-- Testa o servidor DNS interno "dns.local"
-- Comparar múltiplos servidores DNSlocal servidores_dns = { {nome = "Google DNS", endereco = "8.8.8.8"}, {nome = "Cloudflare", endereco = "1.1.1.1"}, {nome = "Quad9", endereco = "9.9.9.9"}, {nome = "DNS Local", endereco = "192.168.1.1"}}
for _, dns in ipairs(servidores_dns) do local latencia = dns.ping(dns.endereco, "exemplo.com") print(dns.nome .. ": " .. latencia .. "ms")endInformações Adicionais
Seção intitulada “Informações Adicionais”Resolução Automática do Servidor DNS
Seção intitulada “Resolução Automática do Servidor DNS”A função dns.ping resolve automaticamente o nome do servidor DNS se fornecido como domínio:
-- Funciona com IPdns.ping("8.8.8.8", "google.com")
-- Funciona com nome de domínio (será resolvido primeiro)dns.ping("dns.google", "exemplo.com")dns.ping("one.one.one.one", "exemplo.com") -- Cloudflare DNSConsulta do Tipo A
Seção intitulada “Consulta do Tipo A”A função sempre realiza consultas do tipo A (IPv4).
Protocolo UDP
Seção intitulada “Protocolo UDP”As consultas são realizadas via UDP na porta 53, que é o protocolo padrão para consultas DNS.
Exemplo de uso
Seção intitulada “Exemplo de uso”Teste de Propagação DNS
Seção intitulada “Teste de Propagação DNS”-- Verificar se um domínio está resolvendo corretamente em diferentes servidoreslocal function testar_propagacao_dns(dominio, ip_esperado) local servidores = { "8.8.8.8", -- Google "1.1.1.1", -- Cloudflare "9.9.9.9", -- Quad9 "208.67.222.222", -- OpenDNS "64.6.64.6", -- Verisign }
local resultados = {} for _, server in ipairs(servidores) do local ok, latencia = pcall(dns.ping, server, dominio)
resultados[server] = { latencia = ok and latencia or nil, acessivel = ok, erro = not ok and latencia or nil } end
return resultadosend