2026年6月18日
2026年6月18日
dig を使った DNS レコードの逆引き手順|dig -x の読み方と逆引きゾーンの管理者の調べ方
IP アドレスからホスト名を調べる逆引きは、dig -x IPアドレス の1行で実行できます。答えが返らない、または古い値が返るときは、その IP の逆引きゾーンを誰が管理しているかを NS と SOA で突き止め、権威サーバーに直接聞くと原因を切り分けられます。この記事では、dig による逆引きの実行方法、出力の読み方、管理者の調べ方、正引きとの一致確認までを順に説明します。
逆引きの仕組みを先に押さえる
逆引きは、PTR レコードを問い合わせる操作です。IPv4 の場合、IP アドレスを逆順に並べて in-addr.arpa を付けた名前に PTR が置かれます。たとえば 192.0.2.10 の PTR は 10.2.0.192.in-addr.arpa という名前で管理されます。IPv6 では、アドレスを16進数1桁ずつに分解して逆順に並べ、ip6.arpa を付けた名前になります。
ここで大事なのは、逆引きゾーンを管理しているのは「ドメインの持ち主」ではなく「IP アドレスの割り当てを受けている側」だという点です。VPS やクラウドのサーバーなら、多くの場合は事業者が逆引きゾーンを持っており、PTR はその事業者の管理画面や申請で設定します。自分のドメインの DNS 管理画面に PTR を書いても、その IP の逆引きゾーンが委任されていなければ、世界から見える結果は変わりません。逆引きが思いどおりにならない原因の多くは、この「設定する場所の取り違え」です。
dig -x の基本
-x を付けると、dig が IP アドレスを逆引き用の名前に変換し、PTR を問い合わせます。
# 詳しい出力で逆引きする
dig -x 192.0.2.10
# 結果のホスト名だけを表示する
dig -x 192.0.2.10 +short
# IPv6 も同じ書き方でよい
dig -x 2001:db8::10 +short
# 問い合わせ先の DNS サーバーを指定する
dig -x 192.0.2.10 @1.1.1.1 +short
# 逆引き用の名前を自分で書いても同じ意味になる
dig 10.2.0.192.in-addr.arpa PTR +short
@ を付けない場合は、OS に設定された DNS サーバー(Linux では多くの場合 /etc/resolv.conf の内容)に問い合わせます。なお dig は /etc/hosts を参照しないため、hosts ファイルに書いた対応は dig の結果には現れません。
dig は BIND に付属するツールで、Debian・Ubuntu では bind9-dnsutils(または dnsutils)、RHEL 系では bind-utils パッケージに含まれます(2026年10月現在)。Windows では WSL 上で使うか、PowerShell の Resolve-DnsName -Name 192.0.2.10 -Type PTR で代用できます。
出力の読み方
+short を付けない出力では、まずヘッダー行の status を見ます。逆引きで出会う状態はおおむね次の4つです。
NOERRORで ANSWER SECTION に PTR がある:逆引きが設定されています。PTR の値と、その左にある TTL(キャッシュしてよい秒数)を確認します。NXDOMAIN:その IP に対応する名前が逆引きゾーンにありません。PTR が未設定の状態です。NOERRORなのに回答が0件:名前は存在するが PTR が無い状態です。後述の分割委任(CNAME を使う方式)の途中で切れている場合にも見られます。SERVFAIL:逆引きゾーンの権威サーバーが応答しない、または DNSSEC の検証に失敗しています。設定の有無以前に、問い合わせ経路に問題があります。
PTR が見つからなかったときの出力では、AUTHORITY SECTION に SOA が表示されることがあります。これが逆引きゾーンの管理者を知る手がかりです。
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 41520
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; AUTHORITY SECTION:
2.0.192.in-addr.arpa. 3600 IN SOA ns1.provider.example. hostmaster.provider.example. 2026101501 7200 3600 1209600 3600
この例では 2.0.192.in-addr.arpa というゾーンを ns1.provider.example が持っていることがわかります。SOA の2番目の項目は管理者の連絡先(最初の . を @ に読み替えたメールアドレス)で、事業者名の見当を付けるのに使えます。
逆引きゾーンの管理者を調べる
PTR を設定したいのに、どこで設定すればよいかわからない場合は、逆引きゾーンの NS をたどります。
# 逆引きゾーンの NS と SOA を調べる
dig 2.0.192.in-addr.arpa NS +short
dig 2.0.192.in-addr.arpa SOA +short
# ルートから委任の経路を順に表示する
dig -x 192.0.2.10 +trace
+trace では、ルートサーバー、in-addr.arpa を管理するサーバー、地域インターネットレジストリ(アジア太平洋地域なら APNIC、日本の多くのアドレスは JPNIC 経由)、そして割り当て先の事業者へと委任が順に表示されます。最後にたどり着いたネームサーバーが事業者のものであれば、PTR はその事業者の画面や窓口で設定します。自社で逆引きゾーンの委任を受けている場合は、社内の DNS サーバーが最後に現れます。IP アドレスの割り当て先は whois で調べることもできます。
小さなアドレス範囲での分割委任
/29 のような小さな範囲を割り当てられている場合、事業者が RFC 2317 の方式で委任していることがあります。このとき dig -x の ANSWER SECTION には、まず CNAME が表示され、その先で PTR が返ります。
10.2.0.192.in-addr.arpa. 3600 IN CNAME 10.8/29.2.0.192.in-addr.arpa.
10.8/29.2.0.192.in-addr.arpa. 3600 IN PTR mail.example.com.
CNAME までは返るのに PTR が無い場合は、委任された先(多くは利用者側のゾーン)に PTR が書かれていないか、委任先のサーバーが応答していません。CNAME の右側の名前を dig で直接引くと、どちらの側で止まっているかを確かめられます。
権威サーバーに直接聞いて反映待ちを切り分ける
PTR を変更したのに古い値が返る場合は、権威サーバーの値とキャッシュサーバーの値を比べます。
# 逆引きゾーンの権威サーバーに、再帰なしで直接聞く
dig -x 192.0.2.10 @ns1.provider.example +norecurse
# 公開 DNS 複数台の答えを比べる
for s in 1.1.1.1 8.8.8.8 9.9.9.9; do
echo "$s: $(dig -x 192.0.2.10 @"$s" +short)"
done
権威サーバーの応答に aa フラグが付き、新しい値が返っているなら設定は反映済みで、残りはキャッシュの期限切れ待ちです。キャッシュサーバーの答えに表示される TTL は残り時間なので、その秒数が待ち時間の目安になります。権威サーバー自体が古い値を返すなら、設定がまだ保存されていないか、事業者側の反映処理が終わっていません。
正引きと一致しているか確かめる
メールサーバーでは、PTR が返す名前を正引きしたときに元の IP アドレスに戻るか(FCrDNS と呼ばれる確認)を受信側が見ることがあります。逆引きだけでなく、正引きまで続けて確認します。
ip=192.0.2.10
name=$(dig -x "$ip" +short | head -n 1)
echo "PTR: $name"
dig "$name" A +short
2行目の結果に元の IP が含まれていれば一致しています。含まれない場合は、PTR の値か A レコードのどちらかを直します。PTR に複数の名前を登録すると、受信側がどれを使うかが定まらないため、メール用途では1つに絞るのが一般的です。また、IP アドレスを並べただけの事業者既定の名前のままだと、受信側によっては動的に割り当てられた回線と見なされることがあります。
複数の IP をまとめて確認したいときは、ループで回すと見落としを防げます。
for ip in 192.0.2.10 192.0.2.11 198.51.100.20; do
echo "$ip -> $(dig -x "$ip" +short | head -n 1)"
done
つまずきやすい点
- プライベート IP(10.0.0.0/8、192.168.0.0/16 など)の逆引きは、公開 DNS に聞いても意味のある答えは返りません。社内の DNS サーバーを
@で指定して問い合わせます。 - 末尾のドットの有無で混乱することがありますが、
dig -xの結果に付く末尾のドットは「これ以上ドメインを補わない名前」を表す正常な表記です。 - 逆引きの結果を変えたいときに、ドメイン側の DNS 事業者の画面で PTR を追加しても効果はありません。
+traceで最後に現れるネームサーバーの管理者が、設定できる相手です。
まとめ
- 逆引きは
dig -x IPアドレスで実行でき、+shortで名前だけを表示できます。 NXDOMAINは PTR 未設定、SERVFAILは経路や DNSSEC の問題、と status から状態を切り分けます。- 逆引きゾーンの管理者は IP アドレスの割り当て先です。SOA や
+traceで設定すべき場所を確かめます。 - 変更が見えないときは、権威サーバーに
+norecurseで直接聞き、キャッシュの残り TTL と比べます。 - メール用途では、PTR の名前を正引きして元の IP に戻るかまで確認します。