2026年6月11日
2026年6月11日
dig を使った DNS レコードの問い合わせ手順|問い合わせ先の選び方・レコード種別ごとの書き方・よく使うオプション
dig でDNSレコードを問い合わせるときは、「どのDNSサーバーに」「どの名前の」「どの種類のレコードを」聞くのかを毎回はっきりさせるのが基本です。特に問い合わせ先の選び方を間違えると、キャッシュに残った古い答えを見て判断を誤ります。この記事では、dig の導入と書式、問い合わせ先の使い分け、A・MX・TXT などレコード種別ごとの問い合わせ方、よく使うオプション、複数のサーバーへまとめて問い合わせる方法までを、手順の順番で説明します。
出力の各欄の詳しい読み方や、障害調査の進め方は別の話題になるため、ここでは「正しく問い合わせる」ことに絞ります。
手順1:dig を使えるようにする
dig はBINDに付属するコマンドで、多くのLinuxではパッケージを追加すると使えます。パッケージ名はディストリビューションによって異なります(2026年10月現在)。
# Debian / Ubuntu(古い版では dnsutils という名前)
sudo apt install bind9-dnsutils
# RHEL / AlmaLinux / Rocky Linux など
sudo dnf install bind-utils
# 使えるようになったか確かめる
dig -v
macOSには標準で入っています。Windowsでは、BINDの開発元がWindows向けの配布を終えているため、WSL(Windows上のLinux環境)で上記のLinux向けパッケージを入れる方法が手軽です。WSLを使わない場合は、PowerShell の Resolve-DnsName や nslookup で同じような問い合わせができます。
手順2:基本の書式を覚える
dig の書式は次のとおりです。順番は多少入れ替えても動きますが、この並びで書くと読み返しやすくなります。
dig [@問い合わせ先] 名前 [レコード種別] [+オプション]
dig example.com # 種別を省略すると A レコード
dig example.com MX # MX レコード
dig @8.8.8.8 example.com AAAA # 問い合わせ先を指定
dig example.com TXT +short # 答えの値だけを表示
出力のうち、まず見るのはヘッダーの status:(NOERROR・NXDOMAIN・SERVFAIL など)と、ANSWER SECTION の行です。NOERROR なのに答えが0件のときは「名前はあるが、その種別のレコードが無い」という意味です。
答えだけを見たいときは +short、答えの行をTTL付きで見たいときは +noall +answer が便利です。TTLの残り時間を見たい場面が多いので、慣れてきたら +noall +answer を標準にするとよいでしょう。
手順3:問い合わせ先を選ぶ
dig の結果は、どのサーバーに聞いたかで意味が変わります。目的に合わせて3つを使い分けます。
自分の端末が使っているDNS(@を付けない):普段のブラウザなどと同じ経路での見え方です。社内DNSやルーターのキャッシュも含まれます。「自分の環境で何が見えているか」を知りたいときに使います。
公開DNS(@8.8.8.8、@1.1.1.1 など):インターネット上の一般的な見え方の目安です。キャッシュを持つため、変更直後は古い値が返ることがあります。
権威DNSサーバー:そのドメインの設定を持っているサーバーで、「今の設定」が見えます。設定変更を確かめるときは、ここに直接聞くのが確かです。
# ドメインの権威DNSサーバーを調べる
dig example.com NS +short
# 権威DNSサーバーに直接問い合わせる(再帰を求めない)
dig @ns1.example-dns.net www.example.com A +norecurse +noall +answer
権威DNSサーバーに聞いたときは、ヘッダーの flags: に aa(権威を持つ答え)が付いているかも見ます。付いていなければ、そのサーバーはこのゾーンの担当ではありません。
手順4:レコード種別ごとに問い合わせる
WordPressサイトの運用でよく問い合わせるレコードと、書き方の例です。
dig example.com A +short # IPv4アドレス
dig example.com AAAA +short # IPv6アドレス
dig www.example.com CNAME +short # 別名の行き先
dig example.com MX +short # メールの配送先と優先度
dig example.com TXT +short # SPF・所有権確認などの文字列
dig _dmarc.example.com TXT +short # DMARC(名前が _dmarc になる)
dig example.com CAA +short # 証明書を発行できる認証局
dig example.com SOA +multiline # ゾーンの管理情報(各項目に説明が付く)
dig -x 203.0.113.10 +short # 逆引き(PTR)
つまずきやすい点がいくつかあります。
- www とルートは別の名前:
example.comとwww.example.comは別々に問い合わせます。片方だけ正しい、ということはよくあります。 - CNAMEがある名前:
www.example.comがCNAMEなら、dig www.example.com Aの答えにはCNAMEの行と、行き先のAレコードの行が並びます。 - ANYで一覧を取ろうとしない:種別に
ANYを指定すると全レコードが返ると思われがちですが、現在は多くのサーバーが最小限の答えしか返しません。必要な種別を個別に問い合わせてください。 - 逆引きは -x:IPアドレスをそのまま名前として問い合わせても逆引きにはなりません。
-xを付けると、逆引き用の名前に変換して PTR を問い合わせます。
手順5:目的に応じてオプションを足す
基本の問い合わせで足りないときに使うオプションです。
| オプション | 用途 |
|---|---|
+norecurse |
再帰を求めない。権威サーバーに直接聞くとき |
+trace |
ルートから順に委任をたどる。どこで答えが変わるかを見る |
+tcp |
UDPではなくTCPで問い合わせる。大きな応答や経路の問題の確認 |
-4 / -6 |
IPv4 / IPv6 の経路だけで問い合わせる |
+dnssec |
DNSSECの署名も表示する |
+cd |
DNSSECの検証を止めて問い合わせる。SERVFAILの原因の切り分けに使う |
+time=2 +tries=1 |
待ち時間と再試行を減らす。応答しないサーバーを調べるとき |
-p 番号 |
53番以外のポートのDNSサーバーに問い合わせる |
+trace は手元のキャッシュDNSを経由せず、ルートサーバーから順に問い合わせます。途中で返ってくるNSの一覧を見ると、どのネームサーバーに委任されているかが分かります。結果はキャッシュの影響を受けにくい反面、1回の実行で多くのサーバーへ問い合わせるため、繰り返し実行するのは控えます。
+cd を付けたときだけ答えが返る場合は、DNSSECの署名や設定に問題がある可能性が高いと判断できます。
手順6:複数のサーバーにまとめて問い合わせる
権威DNSサーバーが複数あるとき、すべてが同じ答えを返すかを確かめるには、シェルのループが便利です。
for ns in $(dig example.com NS +short); do
echo "== $ns"
dig @"$ns" www.example.com A +norecurse +short
done
ゾーンの更新がすべてのサーバーに届いているかは、各サーバーのSOAシリアル番号を並べる +nssearch でも確かめられます。
dig +nssearch example.com
決まった問い合わせを毎回行うなら、ファイルにまとめて -f で読み込ませる方法もあります。1行に1つずつ、dig に渡す引数を書きます。
# queries.txt の中身の例
# example.com A
# www.example.com AAAA
# example.com MX
dig -f queries.txt +noall +answer
いつも同じオプションを付けるなら、ホームディレクトリの ~/.digrc に書いておくと、既定の動作として読み込まれます。たとえば +noall +answer と1行書けば、毎回入力する手間が省けます。ただし、ほかの人に結果を共有するときは、既定が変わっていることを忘れないようにしてください。
問い合わせ結果を残すときの注意
サーバー移転やメールの切り替えの前後で問い合わせ結果を記録しておくと、問題が起きたときに比較できます。記録には、問い合わせた日時、問い合わせ先、+noall +answer での出力(TTLを含む)を残します。+short の出力だけでは、どのサーバーの、どの時点の答えかが分からなくなります。
また、dig の結果は「その瞬間に、そのサーバーが返した答え」です。公開DNSの答えはキャッシュの状態によって変わり、地域によって違うサーバーが応答することもあります。設定が正しいかの判断は権威DNSサーバーの答えで行い、公開DNSの答えは「反映を待っている状態か」を見る目安として使い分けます。
まとめ
- dig は「問い合わせ先・名前・種別」を明示して使います。種別を省略するとAレコードになります。
- 自分の環境の見え方は @なし、一般的な見え方は公開DNS、今の設定は権威DNSサーバーに
+norecurseで聞きます。 wwwとルートは別々に問い合わせ、ANYには頼らず種別を個別に指定します。逆引きは-xを使います。+trace・+tcp・+cd・-4/-6などのオプションで、委任や経路、DNSSECの問題を切り分けられます。- 複数の権威サーバーはループや
+nssearchで比べ、記録には日時と問い合わせ先、TTL付きの出力を残します。