2026年6月14日
2026年6月14日
host コマンドで逆引きする方法|PTR の確かめ方、正引きとの一致、逆引きゾーンの管理者の調べ方
host コマンドで逆引きするには、host 203.0.113.25 のように IP アドレスをそのまま渡します。host が自動で逆引き用の名前(in-addr.arpa や ip6.arpa)に組み立て直して PTR レコードを問い合わせるので、オプションを覚える必要はほとんどありません。この記事では、逆引きの基本の打ち方と結果の読み方に加えて、メールサーバーの設定でよく求められる「正引きとの一致」の確認と、PTR を直したいときに誰へ依頼すればよいかの調べ方までを説明します。
host で逆引きする基本
host は BIND 9 に付属する問い合わせ用のコマンドです。Debian・Ubuntu では bind9-host(bind9-dnsutils を入れると一緒に入ります)、RHEL 系では bind-utils のパッケージに含まれ、macOS には標準で入っています(2026年10月現在)。Windows には同名のコマンドが無いため、WSL 上の Linux で使うか、nslookup で代用します。
# IPv4 の逆引き
host 203.0.113.25
# IPv6 の逆引き(省略形のまま渡してかまいません)
host 2001:db8::25
# 逆引き用の名前を自分で書いて PTR を聞く(上と同じ問い合わせ)
host -t PTR 25.113.0.203.in-addr.arpa
IPv4 の逆引き用の名前は、アドレスの4つの数字を逆順に並べて in-addr.arpa を付けたものです。203.0.113.25 なら 25.113.0.203.in-addr.arpa になります。IPv6 は16進数を1桁ずつ逆順に並べて ip6.arpa を付けるため非常に長くなりますが、host にアドレスを渡せば自動で組み立ててくれます。手で書き起こすと桁を落としやすいので、通常はアドレスを渡す形で使います。
結果の読み方
PTR が登録されている場合
25.113.0.203.in-addr.arpa domain name pointer mail.example.com.
domain name pointer の後ろが、そのアドレスに付けられたホスト名です。末尾のドットは名前がルートまで書かれていることを示すもので、誤りではありません。PTR が複数登録されているアドレスでは、この行が複数出ます。メールの受信側によっては最初の1件しか見ないこともあるため、送信に使うアドレスの PTR は1件にしておくのが無難です。
VPS を契約した直後は、203-0-113-25.example-vps.net のような、事業者が自動で付けた名前が返ることがよくあります。これは「PTR が無い」のではなく「事業者の初期値が入っている」状態です。自分のドメインの名前に変えたい場合は、後で説明する手順で設定場所を確かめます。
別名をはさむ場合
25.113.0.203.in-addr.arpa is an alias for 25.0-63.113.0.203.in-addr.arpa.
25.0-63.113.0.203.in-addr.arpa domain name pointer mail.example.com.
小さなアドレスの範囲を割り当てられた場合、事業者が逆引きの管理を利用者側に任せるために、逆引き用の名前を CNAME で別の名前へ置き換える方法(RFC 2317 で説明されている方式)を使うことがあります。この場合は1行目が置き換えの案内、2行目が実際の PTR です。置き換え先の名前の書き方は事業者ごとに異なります。
PTR が見つからない場合
Host 25.113.0.203.in-addr.arpa not found: 3(NXDOMAIN)
3(NXDOMAIN) は、その逆引き用の名前が存在しないという答えです。PTR が設定されていないアドレスでよく見られます。2(SERVFAIL) は問い合わせたキャッシュサーバーが答えを作れなかったこと、5(REFUSED) は問い合わせを断られたこと、;; connection timed out; no servers could be reached はどのサーバーからも返事が無かったことを表します。SERVFAIL のときは逆引きゾーン側の権威サーバーの不調や DNSSEC の検証失敗、タイムアウトのときは手元のネットワークやファイアウォールを先に疑います。
問い合わせ先を変えて確かめる
host は、問い合わせ先のサーバーを最後の引数に書きます。設定を変えた直後は、手元のキャッシュサーバーに古い答えが残っていることがあるため、公開のキャッシュサーバーや、逆引きゾーンの権威サーバーにも聞いて比べます。
# 公開のキャッシュサーバーに聞く
host 203.0.113.25 1.1.1.1
# 詳しい形式で表示し、TTL や aa フラグを確かめる
host -v 203.0.113.25 1.1.1.1
問い合わせ先を指定すると、出力の先頭に Using domain server: から始まるブロックが付き、どのサーバーが答えたかが分かります。-v を付けると dig と同じ形式になり、ANSWER SECTION の2列目に TTL(秒)が表示されます。キャッシュサーバーの答えなら残り時間、権威サーバーの答え(flags に aa がある)なら設定値そのものです。PTR を変更したのに古い名前が返るときは、この残り時間が切れるのを待つことになります。
正引きとの一致を確かめる
メールの受信側では、送信元の IP アドレスについて「逆引きで得た名前を正引きすると、元のアドレスに戻るか」を見ることがあります。これを正引き確認付きの逆引き(FCrDNS と呼ばれます)といいます。たとえば Google のメール送信者ガイドラインでは、送信元の IP に有効な正引きと逆引きの設定があることが求められています(2026年10月現在。要件は改定されるため、最新の内容は Google のヘルプで確認してください)。
手作業なら2回の問い合わせで確かめられます。
host 203.0.113.25
# → 25.113.0.203.in-addr.arpa domain name pointer mail.example.com.
host mail.example.com
# → mail.example.com has address 203.0.113.25
2回目の答えに元のアドレスが含まれていれば一致です。複数のアドレスをまとめて確かめたいときは、次のような小さなスクリプトにしておくと便利です。
#!/bin/sh
# 使い方: sh fcrdns.sh 203.0.113.25 [問い合わせ先]
ip="$1"
server="${2:-}"
# 逆引きで名前を取り出す(PTR が複数あれば全部)
ptrs=$(host "$ip" $server | awk '/domain name pointer/ {print $NF}')
if [ -z "$ptrs" ]; then
echo "PTR が見つかりません: $ip"
exit 1
fi
for name in $ptrs; do
# 正引きで A と AAAA のアドレスを取り出す
addrs=$(host "$name" $server | awk '/has address|has IPv6 address/ {print $NF}')
if echo "$addrs" | grep -qxF "$ip"; then
echo "一致: $ip -> $name -> $ip"
else
echo "不一致: $ip -> $name -> ${addrs:-(アドレスなし)}"
fi
done
$server を引用符で囲んでいないのは、問い合わせ先を省いたときに空の引数を渡さないためです。IPv6 では、host が返すアドレスは 2001:db8::25 のような省略形になるため、スクリプトにも同じ省略形で渡してください。書き方が違うと、同じアドレスでも不一致と判定されます。host の言い回しは人が読むための表示で、版によって細部が変わることがあるため、長く使う監視に組み込むなら、dig +short -x のように値だけを出す形に置き換えることも検討します。
PTR を直したいときは「誰が逆引きゾーンを持っているか」を調べる
PTR の設定場所は、ドメインを管理している DNS 事業者ではなく、その IP アドレスを割り当てている事業者(VPS やクラウドの事業者、回線の事業者)の側にあるのが一般的です。自分のドメインのゾーンに PTR を書いても、逆引きには反映されません。ここを取り違えて、DNS 事業者の管理画面で PTR を探してしまうのがよくあるつまずきです。
逆引きゾーンの管理者は、SOA と NS を聞くと見当が付きます。
# 203.0.113.0/24 の逆引きゾーンの管理情報
host -t SOA 113.0.203.in-addr.arpa
host -t NS 113.0.203.in-addr.arpa
ネームサーバーの名前が VPS 事業者のドメインであれば、その事業者の管理画面(逆引きホスト名、リバース DNS などの名前で用意されていることが多い項目)か、サポートへの依頼で設定します。項目の名前や、設定の前に正引きの登録を求めるかどうかは事業者によって異なります。設定の前に、自分のドメイン側で mail.example.com の A レコード(IPv6 で送るなら AAAA も)を作っておくと、正引きとの一致がすぐにそろいます。
/24 より小さい範囲を割り当てられている場合は、/24 のゾーンが上位の事業者にあり、先ほどの別名の仕組みで利用者側のゾーンに置き換えられていることがあります。SOA を聞いて想定と違う管理者が出てきたら、契約している事業者に設定方法を問い合わせるのが早道です。
WordPress の運用で逆引きを確かめる場面
WordPress を VPS で動かし、問い合わせフォームや会員登録の通知メールをそのサーバーから直接送っている場合、送信元の IP の PTR が初期値のままだと、受信側で迷惑メールとして扱われる原因の1つになります。SMTP の外部サービス経由で送っているなら、送信元は外部サービスの IP なので、自分のサーバーの PTR は直接は関係しません。どちらの経路で送っているかは、届いたメールのヘッダーの Received 行で確認できます。
また、アクセスログや不正アクセスの記録に残った IP を逆引きして、どの事業者のネットワークからの接続かを調べるのにも host は手軽です。ただし、PTR はアドレスの持ち主が自由に名前を付けられるため、逆引きの結果だけで相手を判断せず、正引きとの一致も合わせて確かめます。他者のアドレスを大量に連続して問い合わせるのは避けてください。
つまずきやすい点
- アドレスの打ち間違い。逆引きでは名前のつづり違いが起こらない代わりに、数字の1文字違いで別のアドレスを調べてしまいます。結果の in-addr.arpa の名前を逆順に読み戻して、意図したアドレスか確かめます。
- 社内のキャッシュサーバーが、プライベートアドレス(192.168.x.x など)の逆引きを独自に答えている。社内と外部で結果が違うのは、構成によっては正常です。
- 変更直後に古い名前が返る。
-vで TTL を見て、権威サーバーの答えと比べます。権威サーバーが新しい値を返していれば、時間の問題です。 - IPv4 だけ直して IPv6 を忘れる。サーバーが IPv6 でもメールを送る設定なら、IPv6 アドレスの PTR と AAAA も必要です。
まとめ
host IPアドレスで、host が逆引き用の名前を組み立てて PTR を問い合わせます。IPv6 も同じ書き方です。domain name pointerの後ろが結果の名前で、is an alias forが出たら次の行が実際の PTR です。3(NXDOMAIN)は PTR が無い状態です。- 逆引きで得た名前を正引きして元のアドレスに戻るか(FCrDNS)を確かめると、メール送信の設定の確認に使えます。
- PTR の設定場所は IP を割り当てている事業者側です。逆引きゾーンの SOA と NS で管理者を確かめてから依頼します。