
사용자가 지정한 DNS 서버로 DNS 레코드를 쿼리해야 하는 스크립트를 작성 중입니다. DNS 서버는 UDP, TCP, DoH(DNS over HTTPS) 및 DoT(DNS over TLS)를 포함한 모든 프로토콜에 있을 수 있습니다.
나는 dig
UDP와 TCP(플래그 포함)에 대한 DNS를 처리할 수 있다는 것을 알고 있습니다 +tcp
. dig
DoH 및 DoT 서버에 쿼리하는 데 사용할 수 있는 방법이나 다른 도구가 있습니까 ?
나는 curl
내 스크립트의 이식성이 더 높도록 이미 널리 사용되는 기존 도구를 선호하지만 다른 제안도 환영합니다.
답변1
두 가지 목적을 모두 충족하는 단일 도구를 찾지 못했지만 이를 사용하는 방법을 찾았습니다.
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
kdig
DoT의 경우 에서 제공하는 도구를 사용할 수 있습니다 knot
. 명령줄은 다음과 유사합니다 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
여기서 는 8.8.8.8
TLS 호스트( )의 미리 확인된 주소입니다 dns.google.com
.
업데이트: 여기에 도구가 있습니다(https://github.com/ameshkov/dnslookup)는 모든 주요 DNS 프로토콜을 자체적으로 지원하고 기계가 읽을 수 있는 출력을 생성할 수 있습니다.
답변2
곱슬 곱슬하다공식적인DoH버전 7.62.0부터 지원됩니다. (문제는 대상 엔드포인트 중 이 버전으로 업데이트된 컬링이 몇 개인지입니다.)
옵션 을 활용하여 사용하세요 --doh-url
. 예:
curl --doh-url https://cloudflare-dns.com/dns-query https://www.google.com
보다: https://github.com/curl/curl/wiki/DOH-구현 https://daniel.haxx.se/blog/2018/09/06/doh-in-curl/
답변3
답변4
DoT(여기서 다른 사용자가 언급한 대로) 외에도 최신 버전에서는 플래그를 dig
사용하여 DoH 쿼리도 지원합니다 +https
.
+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.
예,
dig @cloudflare-dns.com +https foobar.com
+https
을 선언하면 포트 443의 HTTPS를 사용하여 제공된 DNS 서버 도메인()을 기본 엔드포인트에 dig
쿼리합니다 .cloudflare-dns.com
/dns-query
효과적으로 위 명령은 다음에 대해 DoH(POST) 요청을 보냅니다 foobar.com
.
GET 요청으로 전환하고, 다른 엔드포인트를 선언하는 등의 옵션이 있습니다.매뉴얼 페이지DoH와 관련된 쿼리 옵션은 다음과 같습니다.
+https
+https-get
+https-post
+http-plain
+http-plain-get
+http-plain-post