2026年6月16日

2026年6月16日

PTRレコードを追加する方法|追加できる場所の調べ方と、逆引きゾーン(in-addr.arpa・ip6.arpa)への書き方

PTRレコード(逆引き)は、ドメインのDNSではなく IPアドレスの持ち主が管理する逆引きゾーン に追加します。VPSやクラウドなら事業者の管理画面や申請で、逆引きの委任を受けている場合は自分のDNSサーバーのゾーンに書きます。この記事では、まず自分がどこでPTRを追加できるのかを dig で調べる方法を示し、続いて逆引きゾーンを自分で管理する場合の書き方(IPv4の in-addr.arpa、IPv6の ip6.arpa、/24より小さいブロックの扱い)と、追加後の確かめ方を説明します。

PTRは主にメールサーバーで求められます。送信元IPアドレスの逆引きが無い、あるいは正引きと一致しないと、受信側で迷惑メール扱いや受信拒否になることがあります。

PTRを追加できるのは誰か

よくある誤解が、「ドメインのDNS管理画面でPTRを追加すればよい」というものです。逆引きの名前は 10.113.0.203.in-addr.arpa のようにIPアドレスから作られ、その管理権はIPアドレスの割り当てをたどった先、つまり回線事業者やホスティング事業者が持っています。ドメインのゾーンにPTRを書いても、誰からも参照されません。

自分のIPアドレスの逆引きゾーンを、どのネームサーバーが担当しているかは次のように調べられます。

# 逆引きの名前が誰に委任されているかをルートからたどる
dig -x 203.0.113.10 +trace

# 逆引きゾーンのネームサーバーを直接調べる(/24単位の例)
dig 113.0.203.in-addr.arpa NS +short

表示されたネームサーバーが事業者のものなら、事業者の管理画面か申請窓口でPTRを設定します。自分たちのネームサーバーなら、この記事の後半の手順でゾーンに追加します。

VPS・クラウドの場合

多くのVPSやクラウドでは、サーバーやIPアドレスの設定画面に「逆引き」「リバースDNS」などの項目があり、ホスト名を入力するだけで設定できます。項目の名前や場所はサービスごとに異なり、変更されることもあります(2026年10月現在)。画面に項目が無い場合は、サポートへの申請で受け付けているサービスもあります。

事業者側で設定する場合も、先に 正引き(ホスト名のAまたはAAAAレコード)を登録しておく ことが前提になることが多いです。逆引きで返すホスト名が、同じIPアドレスに正引きできることを確認する仕組みのサービスがあるためです。

逆引きの名前を求める

逆引きゾーンにPTRを書くには、IPアドレスを逆引きの名前に変換します。

IPv4:4つの数字を逆順に並べ、後ろに in-addr.arpa を付けます。203.0.113.10 は 10.113.0.203.in-addr.arpa です。/24の割り当てなら、ゾーン名は 113.0.203.in-addr.arpa、その中のレコード名は 10 になります。

IPv6:アドレスを省略なしの32桁の16進数に展開し、1桁(ニブル)ずつ逆順にドットで区切って ip6.arpa を付けます。手で書くと間違えやすいので、ツールで変換するのが安全です。

python3 -c "import ipaddress; print(ipaddress.ip_address('2001:db8::25').reverse_pointer)"
# 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

dig -x もIPv6アドレスをそのまま受け付け、内部で同じ変換をしてくれます。

BINDの逆引きゾーンにPTRを追加する

逆引きの委任を受けていて、BINDで権威DNSサーバーを運用している場合の例です。作業前に、設定ファイルとゾーンファイルを複製して残しておいてください。可能であれば検証用のサーバーで書式を確かめてから本番に反映します。

まず named.conf(ディストリビューションによっては named.conf.local など)に逆引きゾーンを定義します。

zone "113.0.203.in-addr.arpa" {
    type primary;
    file "/etc/bind/zones/db.203.0.113";
};

type primary は古いBINDでは type master と書きます。使っているバージョンの書き方に合わせてください。

ゾーンファイルには、正引きゾーンと同じくSOAとNSを置き、その下にPTRを並べます。

$TTL 3600
@   IN  SOA ns1.example.com. hostmaster.example.com. (
        2026101801 ; シリアル番号(変更のたびに増やす)
        3600       ; refresh
        900        ; retry
        1209600    ; expire
        3600 )     ; negative cache TTL
    IN  NS  ns1.example.com.
    IN  NS  ns2.example.com.

10  IN  PTR mail.example.com.
11  IN  PTR web.example.com.

PTRの値は末尾にドットを付けた完全なホスト名で書きます。ドットが無いと、ゾーン名が後ろに足されて mail.example.com.113.0.203.in-addr.arpa. になってしまいます。

書き終えたら、構文を確かめてから読み込ませます。

named-checkconf
named-checkzone 113.0.203.in-addr.arpa /etc/bind/zones/db.203.0.113
rndc reload 113.0.203.in-addr.arpa

既存のゾーンにPTRを1件追加するだけの場合も、シリアル番号を増やす のを忘れないでください。増やさないと、セカンダリのネームサーバーが変更を取り込まず、サーバーによって答えが違う状態になります。

/24より小さいブロックの場合

割り当てが /28 や /29 のように /24 より小さいと、113.0.203.in-addr.arpa のゾーン全体を委任してもらうことはできません。この場合によく使われるのが、RFC 2317 で示されている方法です。

上位の事業者は、自分の /24 ゾーンの中で、該当する各アドレスの名前を CNAME で別名へ向け、その別名を含むサブゾーンを利用者のネームサーバーへ委任します。

; 事業者側の 113.0.203.in-addr.arpa ゾーン(例:/28 を委任)
0-15        IN  NS     ns1.example.com.
10          IN  CNAME  10.0-15.113.0.203.in-addr.arpa.

利用者側は 0-15.113.0.203.in-addr.arpa というゾーンを作り、そこに 10 IN PTR mail.example.com. を書きます。サブゾーンの名前の付け方(0-15 や 0/28 など)は事業者が決めるため、委任を受ける前に名前を確認し、その指定どおりにゾーンを作ります。名前が一致しないと、CNAMEの行き先が見つからず逆引きが失敗します。

IPv6のPTR

IPv6では、/64 や /48 の単位で ip6.arpa のゾーンを委任されるのが一般的です。たとえば 2001:db8:1234::/48 なら、ゾーン名は 4.3.2.1.8.b.d.0.1.0.0.2.ip6.arpa で、ゾーン内のレコード名は残りの20桁を逆順にしたものになります。

IPv6は1つのネットワークに膨大な数のアドレスがあるため、すべてにPTRを書く必要はありません。メールサーバーなど、逆引きを求められるアドレスだけに追加します。メールを送るサーバーがIPv6でも送信するなら、IPv6アドレスにもPTRを用意しておかないと、IPv6経由の配送だけ拒否されることがあります。

追加後の確認

# キャッシュDNS経由で逆引きを確かめる
dig -x 203.0.113.10 +short

# 逆引きゾーンの権威サーバーに直接問い合わせる
dig @ns1.example.com -x 203.0.113.10 +norecurse +noall +answer

# 返ってきたホスト名を正引きし、元のIPアドレスに戻るか確かめる
dig mail.example.com A +short

確かめる点は次のとおりです。

  • 逆引きで、意図したホスト名が1つだけ返るか。1つのIPアドレスに複数のPTRを書くことは可能ですが、受信側の判定が不安定になるため1つにします。
  • そのホスト名の正引きが、同じIPアドレスを返すか。
  • 権威サーバーでは正しいのにキャッシュDNSで古い場合は、以前のPTRのTTLが切れるまで待ちます。

よくあるつまずき

  • ドメイン側のゾーンに書いている:最初の節の方法で、逆引きの担当ネームサーバーを確かめます。
  • 委任されていない:自分のネームサーバーに逆引きゾーンを作っても、上位から委任されていなければ参照されません。dig -x ... +trace の途中で、事業者のネームサーバーが答えていないかを見ます。
  • 末尾のドットの付け忘れ:PTRの値がゾーン名付きの長い名前になっていないか、dig -x の出力で確かめます。
  • PTRのホスト名が汎用的:203-0-113-10.example-isp.net のような事業者の既定の名前のままだと、受信側で一般回線と見なされることがあります。メールサーバーには自分のドメインのホスト名を設定します。

まとめ

  • PTRはIPアドレスの持ち主が管理する逆引きゾーンに追加します。ドメインのDNSに書いても効きません。
  • dig -x アドレス +trace で逆引きの担当ネームサーバーを調べ、事業者なら管理画面か申請、自分なら逆引きゾーンに書きます。
  • 逆引きの名前は、IPv4は数字を逆順に、IPv6はニブル単位で逆順にします。IPv6はツールで変換すると安全です。
  • BINDでは値の末尾のドットとシリアル番号の更新を忘れず、named-checkzone で確かめてから読み込みます。/24未満のブロックは事業者の指定する名前のサブゾーンに書きます。
  • 追加後は、逆引きのホスト名を正引きして元のアドレスに戻るかまで確かめます。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲