ユーザーが指定したDNSサーバーでDNSレコードを照会する必要があるスクリプトを書いています。 DNSサーバーは、UDP、TCP、DNS over HTTPS(DoH)、DNS over TLS(DoT)など、どのプロトコルでも使用できます。
私はDig
がUDPおよびTCP(+tcp
フラグ付き)のDNSを処理できることを知っています。Dig
またはDoHおよびDoTサーバーをクエリする他のツール
私はcurl
のような既存の人気のあるツールを好むので、スクリプトはより移植性がありますが、他の提案も歓迎します。
両方の目的のための単一のツールは見つかりませんでしたが、それらを使用する方法を見つけました。
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プロトコルをサポートし、マシンが読み取り可能な出力を生成できます。
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-インカール/