2026年6月18日

2026年6月18日

doggo を使った DNS レコードの問い合わせ手順|導入・種別と問い合わせ先の指定・暗号化DNS・JSON出力

doggo は Go で書かれたオープンソースの DNS クライアントで、dig と同じように DNS レコードを問い合わせ、結果を色付きの表で読みやすく表示します。問い合わせ先の書き方を変えるだけで、DNS over HTTPS(DoH)や DNS over TLS(DoT)などの暗号化 DNS にも問い合わせられるのが特徴です。この記事では、導入から、レコード種別と問い合わせ先の指定、複数サーバーの比較、暗号化 DNS、JSON 出力をスクリプトで使うところまでを順に説明します。

doggo と dig の役割の違い

doggo は GitHub で公開されているプロジェクト(mr-karan/doggo)で、Linux、macOS、Windows 向けの実行ファイルが配布されています。dig と比べたときの利点は、出力が表形式で目的の値を見つけやすいこと、暗号化 DNS を同じ書き方で扱えること、JSON で結果を出力できることです。

一方、応答ヘッダーのフラグを細かく確認したり、+trace のようにルートから委任を順にたどったりする調査は、実績の長い dig のほうが向いています(doggo にも --trace はありますが、版による差があるため doggo --help で確認してください)。日常の確認や暗号化 DNS の動作確認は doggo、応答の中身を詳しく調べるときは dig、と分けると使いやすくなります。オプションや機能は版によって追加・変更されることがあるため、この記事の内容は執筆時点(2026年10月現在)のものとして、手元では doggo --help の表示を優先してください。

導入する

主な導入方法は次のとおりです。

# macOS / Linux(Homebrew)
brew install doggo

# Go の開発環境がある場合
go install github.com/mr-karan/doggo/cmd/doggo@latest

# 導入できたか、使えるオプションを確認する
doggo --help

Windows では、GitHub の Releases ページから実行ファイルを取得する方法や、Scoop などのパッケージ管理ツールを使う方法があります。各ディストリビューションのパッケージに含まれている場合もありますが、版が古いことがあります。導入方法の最新の案内は、公式リポジトリの README を確認してください。

実行ファイルを直接ダウンロードする場合は、公式リポジトリの Releases ページから取得し、公開されているチェックサムと照合してから使うと安心です。

基本の問い合わせ

もっとも簡単な使い方は、名前だけを渡す形です。

doggo example.com

結果は、名前・種別・クラス・TTL・値・問い合わせ先のサーバーといった列の表で表示されます。列の構成は版によって異なることがあります。種別を省いたときにどの種別を問い合わせるかも版で違う可能性があるので、表の種別の列で確認してください。

レコード種別は、名前の前後に書くか、-t で指定します。

doggo MX example.com
doggo example.com TXT
doggo -t AAAA example.com

# 複数の種別をまとめて問い合わせる
doggo example.com A AAAA MX

種別名を複数並べると、まとめて問い合わせて1つの表に並べてくれます(手元の版で動かない場合は、-t を種別ごとに繰り返して指定する書き方を --help で確認してください)。サーバー移転の前後で、サイトとメールの向き先を一度に見たいときに便利です。

WordPress サイトの運用でよく確認する名前と種別の組み合わせは、次のようなものです。

  • サイトの向き先:ルートドメインと www の A と AAAA
  • メールの受信先:ドメインの MX
  • 送信ドメイン認証:ドメインの TXT(SPF)、_dmarc を付けた名前の TXT
  • 証明書の発行制限:ドメインの CAA

問い合わせ先のサーバーを指定する

@ に続けてサーバーを書くと、そのサーバーに問い合わせます。複数並べると、それぞれの答えが行ごとに表示されます。

# 公開 DNS に聞く
doggo example.com @1.1.1.1

# 2つの公開 DNS の答えを並べて比べる
doggo example.com @1.1.1.1 @8.8.8.8

# 権威サーバーに直接聞く(ns1.example.net は例)
doggo example.com @ns1.example.net

公開 DNS 同士で値が違う場合は、片方に古い値のキャッシュが残っている可能性があります。権威サーバーに聞いた値を基準にして、どちらが古いかを判断してください。キャッシュサーバーから返る TTL は残り時間なので、TTL の列を見れば、あとどのくらいで切り替わるかの目安になります。

複数のサーバーを並べたときに、すべてに問い合わせるか、その中の1台だけに問い合わせるかを選ぶオプションもあります。名前と既定値は --help で確認してください。

暗号化 DNS で問い合わせる

問い合わせ先に https:// や tls:// などの書き方を付けると、そのプロトコルで問い合わせます。

# DNS over HTTPS(Cloudflare の DoH エンドポイント)
doggo example.com @https://cloudflare-dns.com/dns-query

# DNS over TLS(853番ポート)
doggo example.com @tls://1.1.1.1

# DNS over QUIC(doq.example.net は例)
doggo example.com @quic://doq.example.net

# TCP で問い合わせる
doggo example.com @tcp://1.1.1.1

この機能が役立つのは、次のような場面です。

  • ブラウザのセキュア DNS で使っている DoH サーバーが、通常の DNS と同じ答えを返しているかを確かめる
  • 自分で立てた DoT や DoH のサーバーが応答しているかを、クライアント側から確かめる
  • 社内ネットワークなどで、853番ポートや特定の DoH サーバーへの通信が遮断されていないかを確かめる

暗号化 DNS で失敗し、通常の問い合わせでは成功する場合は、ネットワークの経路で該当の通信が遮断されている可能性があります。証明書の検証で失敗する場合は、接続先のホスト名と証明書の名前が一致しているかを確認します。DNSCrypt の問い合わせ先(sdns:// で始まる形式)に対応しているかどうかも、版の説明で確かめてください。

逆引きで問い合わせる

IP アドレスからホスト名を調べるときは、-x を付けます。

doggo -x 192.0.2.10
doggo -x 2001:db8::10

逆引き用の名前(10.2.0.192.in-addr.arpa など)を自分で組み立てなくても、PTR を問い合わせてくれます。メールサーバーの送信元 IP の逆引きを確認するときに使います。

出力形式を変えてスクリプトで使う

表ではなく値だけが欲しいときは --short、プログラムで扱いたいときは --json を使います。

# 値だけを表示する
doggo example.com A --short

# JSON で出力し、jq で整形して構造を確かめる
doggo example.com A --json | jq .

JSON の構造(キーの名前や入れ子の深さ)は版によって変わることがあります。jq で特定の値を取り出す式を書く前に、まず jq . で整形して、手元の版の構造を確認してください。

複数の名前を、複数の公開 DNS でまとめて確認する例です。

#!/bin/sh
# names.txt には1行に1つずつ名前を書いておく
while read -r name; do
  for ns in 1.1.1.1 8.8.8.8; do
    printf '%s @%s: ' "$name" "$ns"
    doggo "$name" A "@$ns" --short | tr '\n' ' '
    echo
  done
done < names.txt

サーバー移転の前に実行して結果を保存し、移転後にもう一度実行して比べると、変え忘れた名前を見つけやすくなります。

つまずきやすい点

doggo には、resolv.conf の search 設定を使って名前を補うかどうかを決めるオプションがあります。既定の動作によっては、www のような短い名前に社内ドメインが補われ、意図しない名前を問い合わせることがあります。名前の末尾にドットを付けると、その名前そのものを問い合わせます。

問い合わせ先を省いた場合は、OS に設定されたサーバーが使われます。Windows と Linux ではその決め方が違うので、手元の結果が他の端末と食い違うときは、@ でサーバーを明示して比べてください。また、doggo は hosts ファイルを参照しないため、ブラウザの表示と結果が一致しないことがあります。

まとめ

  • doggo は表形式で読みやすい DNS クライアントで、暗号化 DNS と JSON 出力に対応しています。詳しい応答の分析や委任のたどり直しは dig を使うと確実です。
  • 種別は名前の前後に書くか -t で指定し、複数の種別をまとめて問い合わせられます。
  • @ で問い合わせ先を指定し、複数並べると答えを比べられます。
  • @https://、@tls://、@quic:// で暗号化 DNS に問い合わせ、経路の遮断や DoH サーバーの答えを確かめられます。
  • -x で逆引き、--short で値だけ、--json で JSON を出力します。JSON の構造は手元の版で確認してから使います。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲