Estou escrevendo um script que precisa consultar o registro DNS com um servidor DNS especificado pelo usuário. O servidor DNS pode estar em qualquer protocolo, incluindo UDP, TCP, DNS sobre HTTPS (DoH) e DNS sobre TLS (DoT).
Eu sei que dig
é capaz de lidar com DNS para UDP e TCP (com +tcp
flag). Existe uma maneira que eu possa usar dig
ou outra ferramenta para consultar o servidor DoH e DoT?
Prefiro ferramentas populares já existentes, curl
para que meu script seja mais portátil, mas outras sugestões também são bem-vindas.
Não encontrei uma única ferramenta para ambos os propósitos, mas encontrei maneiras de usá-los.
Existem duas maneiras de consultar o DoH:
Para DoT, você pode usar a
kdig
ferramenta fornecida porknot
. A linha de comando é semelhante adig
:onde o
8.8.8.8
é o endereço pré-resolvido do host tls (dns.google.com
).Atualização: aqui está uma ferramenta ( https://github.com/ameshkov/dnslookup ) que suporta todos os principais protocolos DNS por conta própria e é capaz de produzir saída legível por máquina.
curl tem suporte DoH oficial desde a versão 7.62.0 (a questão é quantos de seus endpoints de destino têm curl atualizado para esta versão).
Use-o utilizando a
--doh-url
opção. Exemplo:Veja: https://github.com/curl/curl/wiki/DOH-implementation https://daniel.haxx.se/blog/2018/09/06/doh-in-curl/
Dog é uma alternativa de escavação escrita em Rust e compatível com DOH/DOT. instalação
Exemplos:
dog -H @https://dns.google/dns-query google.com
dog google.com --tls @dns.google
Ele também pode produzir como json.
Para DoH (DNS sobre HTTPS):
-v
.Se dig for compilado para suportá-lo +tls:
Existe
q
( https://github.com/natesales/q ) que suporta DNS-over-QUIC, bem como DNS-over-TLS e DNS-over-HTTPS. Também suporta DNSSEC.Alguns exemplos de consultas e respostas.