
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 dig
que é capaz de lidar com DNS para UDP e TCP (com +tcp
sinalizador). Existe uma maneira de usar dig
ou outra ferramenta para consultar o servidor DoH e DoT?
Eu prefiro ferramentas populares já existentes, curl
para que meu script seja mais portátil, mas outras sugestões também são bem-vindas.
Responder1
Não encontrei uma única ferramenta para ambos os fins, mas encontrei maneiras de usá-las.
Existem duas maneiras de consultar DoH:
# json
curl -H 'accept: application/dns-json' 'https://cloudflare-dns.com/dns-query?name=example.com&type=A' | jq .
# dns wireformat
curl -H 'accept: application/dns-message' 'https://dns.google/dns-query?dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB' | hexdump -c
Para DoT, você pode usar kdig
a ferramenta fornecida pelo knot
. A linha de comando é semelhante a dig
:
apt-get install knot-dnsutils
# For macOS:
# brew install knot
kdig -d @8.8.8.8 +tls-ca +tls-host=dns.google.com example.com
onde the 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 resultados legíveis por máquina.
Responder2
ondulaçãotem oficialDoHsuporte desde a versão 7.62.0 (a questão é quantos de seus endpoints de destino foram atualizados para esta versão).
Use-o utilizando a --doh-url
opção. Exemplo:
curl --doh-url https://cloudflare-dns.com/dns-query https://www.google.com
Ver: https://github.com/curl/curl/wiki/DOH-implementation https://daniel.haxx.se/blog/2018/09/06/doh-in-curl/
Responder3
Cachorroé uma alternativa dig escrita em Rust e com suporte para DOH/DOT.instalação
Exemplos:
dog -H @https://dns.google/dns-query google.com
dog google.com --tls @dns.google
Ele também pode gerar como json.
Responder4
Além do DoT (conforme mencionado por outros usuários aqui), a versão mais recente dig
também oferece suporte à consulta DoH usando o +https
sinalizador.
+https[=value], +nohttps
This option indicates whether to use DNS over HTTPS (DoH) when querying name
servers. When this option is in use, the port number defaults to 443. The
HTTP POST request mode is used when sending the query.
If value is specified, it will be used as the HTTP endpoint in the query URI;
the default is /dns-query. So, for example, dig @example.com +https will use
the URI https://example.com/dns-query.
Exemplo,
dig @cloudflare-dns.com +https foobar.com
Ao declarar +https
, dig
irá consultar o domínio do servidor DNS fornecido ( cloudflare-dns.com
) com HTTPS na porta 443 para o endpoint padrão /dns-query
.
Efetivamente, o comando acima enviará uma solicitação DoH (POST) prestes foobar.com
a:
Existem opções para mudar para solicitação GET, declarar um endpoint diferente e etc.página de manualdestas opções de consulta relacionadas ao DoH:
+https
+https-get
+https-post
+http-plain
+http-plain-get
+http-plain-post