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 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: 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: número: Tempo de resposta em milissegundos (latência DNS) 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: -- Testar latência do DNS do Google local latencia = dns.ping("8.8.8.8", "google.com") -- latencia = 25 (exemplo: 25 milissegundos) -- Testar DNS público do Cloudflare local latencia_cf = dns.ping("1.1.1.1", "github.com") -- latencia_cf = 30 (exemplo) -- Testar servidor DNS por nome local latencia_local = dns.ping("dns.local", "servidor.producao") -- Testa o servidor DNS interno "dns.local" -- Comparar múltiplos servidores DNS local 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") end Informações Adicionais 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 IP dns.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 DNS Consulta do Tipo A A função sempre realiza consultas do tipo A (IPv4). Protocolo UDP As consultas são realizadas via UDP na porta 53, que é o protocolo padrão para consultas DNS. Exemplo de uso Teste de Propagação DNS -- Verificar se um domínio está resolvendo corretamente em diferentes servidores local 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 resultados end