2026年6月8日
2026年6月8日
drill を使った DNS レコードの逆引き手順|drill -x の読み方、IPv6 の逆引き名、-T で逆引きゾーンの委任をたどる
drill で逆引きをするときは、drill -x IPアドレス と書きます。drill が IP アドレスを in-addr.arpa(IPv6 なら ip6.arpa)の名前に変換し、その名前の PTR レコードを問い合わせてくれます。答えが返らないときは、応答コードで「PTR がそもそも無い」のか「逆引きゾーンの委任が壊れている」のかを見分け、-T で委任をルートからたどって原因の段を突き止めます。この記事では、drill での逆引きの基本、IPv6 と小さなアドレスブロックの逆引きの読み方、PTR が引けないときの切り分け、メールサーバーで求められる正引きとの一致の確かめ方を説明します。
drill の準備
drill は NLnet Labs の DNS ライブラリ ldns に付属するコマンドです。Debian・Ubuntu では ldnsutils、Fedora などでは ldns-utils、macOS では Homebrew の ldns で入ります(2026年10月現在)。オプションの細部は ldns の版で違うことがあるため、例どおりに動かない場合は man drill を確認してください。
dig に慣れている人が気を付けたいのは、drill には +short のような短い表示が無いことと、-t が種別ではなく TCP の指定であることです。逆引きでは種別を書く必要が無いので、-x と IP アドレスだけで足ります。
基本の逆引き
# IPv4 の逆引き(手元のキャッシュサーバーに聞く)
drill -x 203.0.113.10
# 公開 DNS に聞く
drill -x 203.0.113.10 @1.1.1.1
出力では、QUESTION の行に変換後の名前が出ます。IPv4 の場合、アドレスの4つの数字が逆順に並び、10.113.0.203.in-addr.arpa. のようになります。PTR があれば、ANSWER に次のような行が並びます。
;; ANSWER SECTION:
10.113.0.203.in-addr.arpa. 3600 IN PTR mail.example.com.
右端の名前が逆引きの結果です。末尾の点は「これで名前が終わり」という印で、設定の誤りではありません。
逆引きの値を決めているのは、ドメインの DNS ではなく、その IP アドレスを割り当てた事業者(VPS・クラウド・回線事業者)です。お使いのドメインの DNS 管理画面で PTR を作っても、そのゾーンが逆引きの名前の委任先でなければ反映されません。
IPv6 の逆引き
IPv6 でも書き方は同じです。
drill -x 2001:db8::10 @1.1.1.1
IPv6 の逆引き名は、アドレスを省略せずに32桁の16進数に展開し、1桁ずつ逆順に点で区切って ip6.arpa を付けたものです。2001:db8::10 なら次の名前になります。
0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
自分でゾーンファイルに PTR を書くときに、この桁数を間違えるのはよくあるつまずきです。drill の QUESTION の行に出る名前を、そのまま正しい書き方の見本として使えます。古い版で IPv6 の -x がうまく動かない場合は、この名前を直接指定して drill 名前 PTR と問い合わせます。
小さなアドレスブロックの逆引き(CNAME が返る場合)
VPS などで、256個より小さいアドレスのまとまり(/26 や /28 など)を割り当てられている場合、事業者が RFC 2317 という方式で逆引きを利用者に任せていることがあります。この場合、drill の ANSWER には PTR の前に CNAME が出ます。
;; ANSWER SECTION:
65.113.0.203.in-addr.arpa. 3600 IN CNAME 65.64/26.113.0.203.in-addr.arpa.
65.64/26.113.0.203.in-addr.arpa. 3600 IN PTR host.example.com.
1行目は事業者側のゾーンが「この名前の答えは別の場所にある」と示しているもので、2行目が利用者側で管理している PTR です。CNAME の置き換え先の名前は事業者によって書き方が違います(64/26 や 64-127 など)。CNAME は返るのに PTR が続かない場合は、置き換え先のゾーンの PTR が無いか、そのゾーンの委任が届いていないかのどちらかです。
PTR が引けないときの切り分け
ヘッダーの行に出る応答コード(rcode)と、ANSWER の件数で、状況を見分けます。
NXDOMAIN:その逆引き名が存在しない
逆引きの名前が存在しない、つまり PTR が設定されていない状態です。もっともよくある原因で、事業者の管理画面で逆引きのホスト名を設定していないか、設定の反映待ちです。
応答の AUTHORITY には、その名前を管理しているゾーンの SOA が付いてきます。SOA の1つ目の名前(プライマリのネームサーバー)と2つ目(管理者の連絡先)を見ると、どの事業者が逆引きゾーンを管理しているかの手がかりになります。
# 逆引きゾーンを管理しているのは誰か
drill 113.0.203.in-addr.arpa SOA @1.1.1.1
drill 113.0.203.in-addr.arpa NS @1.1.1.1
管理者が分からないときは、whois 203.0.113.10 で IP アドレスの割り当て先の組織を調べ、その事業者の案内に従います。
NOERROR で ANSWER が0件:名前はあるが PTR が無い
逆引きの名前そのものは存在するのに、PTR が無い状態です。小さなアドレスブロックの委任を受けて自分で逆引きゾーンを持っている場合に、ゾーンに PTR を書き忘れていると起こります。ゾーンの書き方と、ゾーンを読み込み直したかを確かめます。
SERVFAIL やタイムアウト:委任の途中で止まっている
逆引きゾーンの委任先のネームサーバーが応答しない、委任の設定が食い違っている、などで答えが得られない状態です。-T を付けると、drill がルートサーバーから順に委任をたどり、各段で受け取った NS を表示します。
drill -T 10.113.0.203.in-addr.arpa PTR
-T では手元のキャッシュサーバーを使わず、drill 自身がルートから問い合わせるため、外向きの DNS 通信が制限されたネットワークでは途中で止まります。出力では、in-addr.arpa → 203.in-addr.arpa → … と委任が細かくなっていくのを上から追い、最後に答えが返らなくなった段の NS を確かめます。その NS に直接聞いて応答が無ければ、その段の委任先が問題です。
# 委任先の1台に直接、再帰なしで聞く(名前は例)
drill -o rd 10.113.0.203.in-addr.arpa PTR @ns1.provider.example
-o rd は再帰要求のフラグを下ろす指定で、権威サーバーの素の答えを見られます。
期待と違う名前が返る
ip-203-0-113-10.provider.example のような名前が返るのは、事業者が既定で入れている逆引きです。自分のホスト名に変えるには、事業者の管理画面で逆引きのホスト名を設定します。変更直後は、キャッシュサーバーに古い答えが残っている間、前の名前が返ります。前の答えの TTL(ANSWER の2列目)を目安に待つか、逆引きゾーンの権威サーバーに直接聞いて、登録側が変わったかを先に確かめます。
正引きとの一致を確かめる
メールサーバーでは、逆引きで得た名前を正引きしたときに元の IP アドレスに戻ること(Forward-Confirmed reverse DNS、FCrDNS)が、受信側の確認項目になっていることが多くあります。drill には短い表示が無いので、awk で値の列を取り出して比べます。
ip=203.0.113.10
name=$(drill -x "$ip" @1.1.1.1 | awk '$1 !~ /^;/ && $4 == "PTR" {print $5}')
echo "PTR: $name"
drill "$name" A @1.1.1.1 | awk '$1 !~ /^;/ && $4 == "A" {print "A: " $5}'
PTR の名前の A に元の IP アドレスが含まれていれば一致しています。含まれていなければ、PTR の名前に合わせて A を追加するか、PTR を正引きできる名前に変えます。IPv6 で送信するメールサーバーなら、同じことを drill -x と AAAA で確かめます。PTR が複数返るとメールの受信側で扱いが分かれることがあるため、1つの IP アドレスに1つの PTR にしておくのが無難です。
まとめ
- drill の逆引きは
drill -x IPアドレスで、種別の指定は要りません。変換後の逆引き名は QUESTION の行で確かめられます。 - IPv6 の逆引き名は32桁を1桁ずつ逆順に並べた形です。小さなアドレスブロックでは CNAME を経由して PTR が返ることがあります。
- 引けないときは、NXDOMAIN なら PTR が未設定、ANSWER が0件なら自前ゾーンの書き忘れ、SERVFAIL なら
-Tで委任をたどって止まった段を探します。 - 逆引きの値は IP アドレスを割り当てた事業者の側で設定します。メールサーバーでは、awk で値を取り出して正引きとの一致も確かめます。