2026年6月3日
2026年6月3日
DNSの逆引き(PTRレコード)を確認・設定する方法|dig・host・nslookup
DNSの逆引きは、IPアドレスからホスト名を調べる仕組みです。逆引きの情報はPTRレコードとして登録されています。メールサーバーを運用するときに、受信側が送信元IPの逆引きを確認するため、設定と確認の方法を知っておく必要があります。
この記事では、逆引きを調べるコマンド、結果の読み方、正引きとの一致の確かめ方、そして逆引きを設定する場所の見分け方を説明します。例のIPアドレスとドメインは、説明用に予約されている 203.0.113.0/24・2001:db8::/32・example.com を使います。
逆引きの仕組み
正引きは mail.example.com から 203.0.113.25 を引きますが、逆引きはその反対です。IPv4では、IPアドレスの4つの数字を逆順に並べ、末尾に in-addr.arpa を付けた名前にPTRレコードが置かれます。
203.0.113.25 の逆引き名
25.113.0.203.in-addr.arpa. 3600 IN PTR mail.example.com.
IPv6では、アドレスを省略せずに書いた16進数を1桁ずつ逆順に並べ、末尾に ip6.arpa を付けた名前を使います。
2001:db8::25 の逆引き名
5.2.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.
in-addr.arpa や ip6.arpa のゾーンは、IPアドレスの割り当てに沿って、地域インターネットレジストリから事業者へ、事業者から利用者へと委任されています。そのため、PTRレコードを設定できるのは、そのIPアドレスを管理している事業者(またはIPアドレスの割り当てを受けている組織)です。自分のドメインのDNS設定画面にPTRレコードを書いても、逆引きには反映されません。
自分のサーバーのIPアドレスを調べる
逆引きを確認したいサーバーのグローバルIPアドレスを調べます。
# IPv4
ip -4 addr show scope global
# IPv6
ip -6 addr show scope global
AWS の EC2 のように、サーバーにはプライベートIPだけが付いていて、外向きの通信は別のグローバルIP(Elastic IP など)で行う環境もあります。その場合は、事業者の管理画面で外向きのIPアドレスを確認します。メールで問題になるのは、相手から見える送信元のIPアドレスの逆引きです。
逆引きを調べるコマンド
dig
dig は -x を付けるとIPアドレスから逆引き名を組み立てて問い合わせます。Ubuntu・Debian では bind9-dnsutils(または dnsutils)、RHEL 系では bind-utils パッケージに含まれています。
# 結果のホスト名だけを表示
dig -x 203.0.113.25 +short
# IPv6
dig -x 2001:db8::25 +short
# 逆引き名を直接指定しても同じ
dig 25.113.0.203.in-addr.arpa PTR +short
+short を付けずに実行すると、応答の状態(status:)も見られます。
dig -x 203.0.113.25
host
host 203.0.113.25
逆引きが登録されていれば、次のように表示されます。
25.113.0.203.in-addr.arpa domain name pointer mail.example.com.
host にIPアドレスを渡すと自動で逆引きになります。host -t ptr 203.0.113.25.in-addr.arpa のように、IPアドレスを逆順にせずに in-addr.arpa を付けると別の名前を問い合わせることになり、正しい結果になりません。
nslookup(Windows・Linux)
nslookup 203.0.113.25
Windows の PowerShell では Resolve-DnsName も使えます。
Resolve-DnsName -Name 203.0.113.25 -Type PTR
結果の読み方
| 結果 | 意味 |
|---|---|
| ホスト名が返る | 逆引きが登録されている。事業者が自動で付けた、IPアドレスを含む長いホスト名のこともある |
status: NXDOMAIN(host では「not found: 3(NXDOMAIN)」) |
その名前が存在しない。逆引きが未設定 |
status: NOERROR で回答が空 |
名前はあるがPTRレコードが無い。未設定とほぼ同じ扱い |
status: SERVFAIL |
逆引きゾーンの委任先のネームサーバーが応答しないなど、DNS側の問題。時間を置いて再確認し、続く場合は事業者に問い合わせる |
| ホスト名が複数返る | 1つのIPに複数のPTRが登録されている。メールの送信元では1つにしておくのが一般的 |
逆引きを設定した直後に古い結果が返る場合は、手元のリゾルバーが以前の結果を保存している可能性があります。逆引きゾーンの権威サーバーに直接問い合わせると、キャッシュの影響を受けません。
# 逆引きゾーンのネームサーバーを調べる(/24 単位で委任されている場合)
dig +short NS 113.0.203.in-addr.arpa
# そのネームサーバーに直接問い合わせる
dig -x 203.0.113.25 @ネームサーバー名 +short
正引きと一致しているか確かめる
メールの受信側の多くは、逆引きで得たホスト名を正引きしたときに、元のIPアドレスに戻るかも確認します。この「逆引き→正引き」が一致する状態は FCrDNS(Forward-Confirmed reverse DNS)と呼ばれます。
ip=203.0.113.25
name=$(dig -x "$ip" +short | head -n 1)
echo "逆引き: $name"
dig +short "$name" A
最後のコマンドの結果に元のIPアドレス(ここでは 203.0.113.25)が含まれていれば一致しています。IPv6の場合は A を AAAA に変えて確認します。
逆引きを設定する場所
逆引きはIPアドレスの管理者が設定するため、設定する場所は環境で決まります。
| 環境 | 設定する場所 |
|---|---|
| VPS・クラウド | 事業者の管理画面の「逆引き」「リバースDNS」などの項目、または API。項目が無い場合はサポートに申請する事業者もある |
| 共用のレンタルサーバー | IPアドレスを複数の利用者で共有しているため、利用者は通常変更できない |
| 自社でIPアドレスの割り当てを受けている | 委任された逆引きゾーンを、自社のDNSサーバー(BIND など)で管理する |
どこに設定すればよいか分からない場合は、上の dig +short NS で逆引きゾーンのネームサーバーを調べます。事業者のネームサーバーが返れば、その事業者の管理画面かサポートで設定します。
設定する前に、逆引きに登録するホスト名の正引き(Aレコード、IPv6ならAAAAレコード)を、自分のドメインのDNSで同じIPアドレスに向けておきます。事業者によっては、正引きが一致しないと逆引きの設定を受け付けません。環境ごとの具体的な手順は リバースDNS(PTRレコード)の設定方法 で説明しています。
/etc/hosts では逆引きは設定できない
サーバーの /etc/hosts にIPアドレスとホスト名を書いても、そのサーバーの中での名前解決が変わるだけです。DNSのPTRレコードは変わらないため、外部のメールサーバーから見た逆引きには影響しません。dig や host はDNSに直接問い合わせるので、/etc/hosts の内容は結果に出ません。
メールサーバーで合わせておくこと
逆引きを設定したら、メールサーバーが接続時に名乗るホスト名(HELO / EHLO)も逆引きのホスト名に揃えます。Postfix の場合は /etc/postfix/main.cf の myhostname で指定します。
myhostname = mail.example.com
sudo postfix check
sudo systemctl reload postfix
逆引きは「そのIPアドレスが誰のサーバーか」を示すものです。送信ドメインが正当であることは、SPF・DKIM・DMARC で示します。設定状況の確認方法は SPF・DKIM・DMARCの確認方法 を参考にしてください。
まとめ
- 逆引きは
dig -x IPアドレス +short、host IPアドレス、nslookup IPアドレスで調べます。in-addr.arpaの名前を自分で書く場合は、IPアドレスを逆順に並べます。 - 結果が NXDOMAIN や空なら未設定です。設定直後は権威サーバーに直接問い合わせて確認します。
- メールサーバーでは、逆引きのホスト名を正引きすると元のIPに戻ること(FCrDNS)を確認します。
- PTRレコードはIPアドレスの管理者が設定します。自分のドメインのDNSや
/etc/hostsに書いても逆引きにはなりません。