web-dev-qa-db-ja.com

コマンドラインを使用して、DNS over HTTPS / DNS over TLSを照会する方法

ユーザーが指定したDNSサーバーでDNSレコードを照会する必要があるスクリプトを書いています。 DNSサーバーは、UDP、TCP、DNS over HTTPS(DoH)、DNS over TLS(DoT)など、どのプロトコルでも使用できます。

私はDigがUDPおよびTCP(+tcpフラグ付き)のDNSを処理できることを知っています。DigまたはDoHおよびDoTサーバーをクエリする他のツール

私はcurlのような既存の人気のあるツールを好むので、スクリプトはより移植性がありますが、他の提案も歓迎します。

2
Shou Ya

両方の目的のための単一のツールは見つかりませんでしたが、それらを使用する方法を見つけました。

DoHを照会するには2つの方法があります。

# 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

DoTの場合、kdigが提供する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プロトコルをサポートし、マシンが読み取り可能な出力を生成できます。

0
Shou Ya

curlは、バージョン7.62.0以降、公式DoHをサポートしています(質問はこのバージョンに対して最新のカールを持っているターゲットエンドポイントの数。)

--doh-urlオプションを使用して使用します。例:

curl --doh-url https://cloudflare-dns.com/dns-query https://www.google.com

参照: https://github.com/curl/curl/wiki/DOH-implementationhttps://daniel.haxx.se/blog/2018/09/06/doh-インカール/

2
Yisroel Tech