¿Cómo consultar DNS sobre HTTPS/DNS sobre TLS usando la línea de comando?

¿Cómo consultar DNS sobre HTTPS/DNS sobre TLS usando la línea de comando?

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).

digque puedo manejar DNS para UDP y TCP (con +tcpbandera). ¿Hay alguna forma de utilizar digu otra herramienta para consultar el servidor DoH y DoT?

Prefiero herramientas populares ya existentes curlpara 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 kdigla 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.8es 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-urlopció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 digtambién admite consultas DoH mediante el uso de la +httpsbandera.

+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, digconsultará 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.comde:

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

información relacionada