
Estoy escribiendo un script que necesita consultar el registro DNS con un servidor DNS especificado por el usuario. El servidor DNS puede estar en cualquier protocolo, incluidos UDP, TCP, DNS sobre HTTPS (DoH) y DNS sobre TLS (DoT).
Sé dig
que puedo manejar DNS para UDP y TCP (con +tcp
bandera). ¿Hay alguna forma de utilizar dig
u otra herramienta para consultar el servidor DoH y DoT?
Prefiero herramientas populares ya existentes curl
para que mi script sea más portátil, pero también se aceptan otras sugerencias.
Respuesta1
No encontré una sola herramienta para ambos propósitos, pero sí encontré formas de usarlas.
Hay dos formas 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, puede utilizar kdig
la herramienta proporcionada por knot
. La línea de comando es similar 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
donde 8.8.8.8
es la dirección previamente resuelta del host tls ( dns.google.com
).
Actualización: aquí hay una herramienta (https://github.com/ameshkov/dnslookup) que admite todos los protocolos DNS principales por sí solo y es capaz de producir resultados legibles por máquina.
Respuesta2
rizotiene oficialDepartamento de Saludsoporte desde la versión 7.62.0 (la pregunta es cuántos de sus puntos finales de destino tienen curl actualizado a esta versión).
Úselo utilizando la --doh-url
opción. Ejemplo:
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/
Respuesta3
Perroes una alternativa de excavación escrita en Rust y compatible con DOH/DOT.instalación
Ejemplos:
dog -H @https://dns.google/dns-query google.com
dog google.com --tls @dns.google
También puede generar como json.
Respuesta4
Además de DoT (como lo mencionaron otros usuarios aquí), la última versión de dig
también admite consultas DoH mediante el uso de la +https
bandera.
+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.
Ejemplo,
dig @cloudflare-dns.com +https foobar.com
Al declarar +https
, dig
consultará el dominio del servidor DNS proporcionado ( cloudflare-dns.com
) con HTTPS en el puerto 443 al punto final predeterminado /dns-query
.
Efectivamente, el comando anterior enviará una solicitud DoH (POST) a punto foobar.com
de:
Hay opciones para cambiar a la solicitud GET, declarar un punto final diferente, etc. Lea elpágina de manualde estas opciones de consulta relacionadas con DoH:
+https
+https-get
+https-post
+http-plain
+http-plain-get
+http-plain-post