2026年6月12日
2026年6月12日
AレコードとNSレコードを併用する設定|頂点・サブドメインの委任・ネームサーバーのグルーで正しく組み合わせる
AレコードとNSレコードは、置く場所によって「普通に並べてよい組み合わせ」と「並べると片方が無視される組み合わせ」に分かれます。ルートドメインではNSとAを並べるのが通常の形です。一方、サブドメインをNSで別のDNSへ委任したら、そのサブドメインのAレコードは委任先のゾーンに書きます。また、ネームサーバーのホスト名が自分のドメインの中にある場合は、そのホスト名のAレコードを親ゾーンにも「グルー」として登録する必要があります。この記事では、この3つの場面ごとに設定の書き方と確認方法を説明します。
AとNSの役割の違い
- Aレコード:名前に対応するIPv4アドレスを返します。Webサイトやメールサーバーの場所を示す答えそのものです。
- NSレコード:その名前から下の管理を、どのネームサーバーが受け持つかを示します。答えではなく「ここに聞いてください」という案内です。
NSが置かれた名前は、そこでゾーンが区切られる場所(委任点)になります。この区切りの上と下で、Aレコードを書くべきゾーンが変わる点が、併用するときの要点です。
場面1:ルートドメインでNSとAを並べる
example.com のようなゾーンの頂点には、ゾーン自身のNSレコードとSOAレコードが置かれます。ここにWebサイト用のAレコードを並べるのはごく普通の構成で、競合はしません。
$TTL 3600
@ IN SOA ns1.example-dns.net. hostmaster.example.com. (
2026101801 ; シリアル
3600 ; リフレッシュ
900 ; リトライ
1209600 ; 期限
300 ) ; ネガティブキャッシュ
@ IN NS ns1.example-dns.net.
@ IN NS ns2.example-dns.net.
@ IN A 203.0.113.10
www IN A 203.0.113.10
頂点で問題になるのは、AではなくCNAMEです。CNAMEは同じ名前にほかのレコードを置けない決まりがあるため、NSとSOAがある頂点にはCNAMEを置けません。CDNなどのホスト名へ向けたいときは、Aレコードで直接IPアドレスを書くか、DNSサービスが用意しているALIASやCNAMEフラットニングなどの機能を使います。
DNSサービスの管理画面では、頂点のNSは自動で作られ、編集できないか、編集しても委任には影響しないことが多いです。実際の委任先はレジストラ(ドメインの登録事業者)側の設定で決まります。
場面2:サブドメインを委任したら、Aは委任先に書く
dev.example.com を別のDNSサービスやチームのネームサーバーに任せたい場合、親ゾーン(example.com)に dev のNSレコードを置きます。
; 親ゾーン example.com の中
dev IN NS ns1.other-dns.net.
dev IN NS ns2.other-dns.net.
こうすると、dev.example.com とその下の名前(www.dev.example.com など)は、すべて委任先のネームサーバーが答えます。親ゾーンに次のようなAレコードを残しても、委任点より下のデータとして扱われ、通常の問い合わせの答えには使われません。
; 親ゾーンに書いても使われない例
dev IN A 203.0.113.20
www.dev IN A 203.0.113.21
DNSサービスによっては、同じ名前にNSとAを並べようとすると保存時にエラーにしたり、警告を出したりします。サブドメインのAレコードは、委任先のゾーンに書きます。
; 委任先のゾーン dev.example.com の中
@ IN A 203.0.113.20
www IN A 203.0.113.21
「サブドメインのAだけを親ゾーンで管理し、ほかのレコードは別のDNSに任せる」という分け方はできません。委任するかどうかは名前ごとに一方を選びます。親ゾーンで済むなら委任せずにAレコードを置き、別のDNSで管理したいなら委任して、そちらにすべてのレコードを書きます。
場面3:ネームサーバーのホスト名にAレコード(グルー)を用意する
NSレコードの値はIPアドレスではなくホスト名です。そのホスト名にはAレコード(IPv6ならAAAAレコード)が必要で、CNAMEにしてはいけない決まりがあります。
ネームサーバーのホスト名が委任するゾーンの中にあると、「ns1.example.com のIPアドレスを知るには example.com のネームサーバーに聞く必要があり、そのネームサーバーが ns1.example.com」という循環になります。これを解決するのが、親ゾーン側に置くネームサーバーのAレコード、いわゆるグルーレコードです。
自前のゾーン内でサブドメインを委任する場合は、親ゾーンにNSとグルーを並べて書きます。
; 親ゾーン example.com の中
dev IN NS ns1.dev.example.com.
dev IN NS ns2.dev.example.com.
ns1.dev IN A 203.0.113.53
ns2.dev IN A 198.51.100.53
ドメインそのものを自前のネームサーバーで運用する場合(example.com のネームサーバーが ns1.example.com)は、グルーを置くのはドメインの登録先のレジストリです。レジストラの管理画面で、ネームサーバーのホスト名とIPアドレスを登録する機能を使います。項目名は「ホスト名の登録」「ネームサーバーの登録」などレジストラによって違います(2026年10月現在)。
あわせて、自分のゾーンにも同じホスト名のAレコードを書いておきます。
; ゾーン example.com の中
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
ns1 IN A 203.0.113.53
ns2 IN A 198.51.100.53
グルーとゾーン内のAレコードは別々に管理されるため、ネームサーバーのIPアドレスを変えるときは両方を更新します。片方だけ変えると、問い合わせの経路によって新旧のアドレスが使い分けられ、一部の利用者だけ名前解決に失敗することがあります。
なお、ネームサーバーのホスト名が別のドメイン(例:ns1.example-dns.net)にある場合は、グルーは不要です。DNSサービスのネームサーバーをそのまま使う多くの構成はこちらに当たります。
設定後の確認方法
委任とグルーは、親ゾーンのネームサーバーに直接聞くと確かめられます。
# ルートからたどり、どこで委任され、誰が答えているかを見る
dig www.dev.example.com A +trace
# 親ゾーンのネームサーバーに直接聞き、委任とグルーを見る
dig example.com NS +short
dig @ns1.example-dns.net dev.example.com NS +norecurse
+norecurse で親ゾーンに聞いた結果では、AUTHORITY 欄に委任先のNSが、ADDITIONAL 欄にグルーのAレコードが表示されます。ドメインそのもののグルーは、TLDのネームサーバーに聞いて確かめます。
# TLD(.com の例)のネームサーバーを調べ、そこに直接聞く
dig com NS +short
dig @a.gtld-servers.net example.com NS +norecurse
最後に、委任先が答えを返すかを確かめます。
dig @ns1.other-dns.net www.dev.example.com A +norecurse +short
親ゾーンと委任先でNSの一覧が違う、グルーのアドレスとゾーン内のAレコードが違う、といった食い違いがあれば、両方をそろえます。
作業時の注意
- ゾーンファイルを編集する前にはファイルを控え、編集後はSOAのシリアル番号を上げてから読み込み直します。
- 委任を追加した直後は、親ゾーンに残っていたAレコードの古い答えがキャッシュにあることがあります。古いレコードのTTLが切れるまでは新旧が混ざります。
- 委任先のネームサーバーに、委任したゾーンがまだ作られていないと、問い合わせが失敗します。委任先でゾーンとレコードを用意してから、親ゾーンにNSを追加する順序にします。
まとめ
- ルートドメインでは、NSとAを並べるのが通常の構成です。頂点に置けないのはCNAMEです。
- サブドメインをNSで委任したら、そのサブドメインのAレコードは委任先のゾーンに書きます。親ゾーンに残したAは使われません。
- ネームサーバーのホスト名が委任するゾーンの中にあるときは、親側にグルーのAレコードが必要です。ドメインそのものの場合はレジストラで登録します。
- ネームサーバーのIPアドレスを変えるときは、グルーとゾーン内のAレコードを両方更新します。
dig +traceと+norecurseで親ゾーンに直接聞き、委任とグルーを確かめます。