NSレコード -- ネームサーバー委任
NS(Name Server)レコードがドメインやサブドメインのDNS権限を委任する仕組みを解説します。グルーレコード、委任階層、ネームサーバーのベストプラクティスを理解しましょう。
NSService
Zone File Entry
example.com. IN NS ns1.example.com. example.com. IN NS ns2.example.com.
詳細な説明
NSレコードとは?
NSレコード(Name Serverレコード)は、特定のドメインまたはゾーンに対して権威を持つDNSサーバーを指定します。NSレコードはDNS委任階層のバックボーンを形成し、リゾルバにドメインのDNSクエリの確定的な回答をどこで見つけるかを通知します。
BINDゾーンファイルの構文
; ドメインの権威ネームサーバー
example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN NS ns2.example.com.
; サブドメインを異なるネームサーバーに委任
dev.example.com. 86400 IN NS ns1.devteam.example.com.
dev.example.com. 86400 IN NS ns2.devteam.example.com.
; DNSホスティングプロバイダーの使用
example.com. 86400 IN NS ns1.cloudprovider.com.
example.com. 86400 IN NS ns2.cloudprovider.com.
NS委任の仕組み
DNSは分散階層として動作します。リゾルバがwww.example.comのIPを見つける必要がある場合:
- ルートサーバーが
.comのNSレコードを提供 .comTLDサーバーがexample.comのNSレコードを提供example.comの権威ネームサーバーが最終的な回答を提供
各レベルがNSレコードを通じて次のレベルに権限を委任します。この分散設計により、単一のサーバーがすべてのDNSレコードを把握する必要がなくなります。
グルーレコード
ネームサーバーが自分自身がサーブするドメイン内にある場合(例:example.comに対するns1.example.com)、鶏と卵の問題が発生します。ネームサーバーに到達するためにns1.example.comを解決する必要がありますが、その情報を持っているのはそのネームサーバー自身です。
グルーレコードは、親ゾーンレベル(TLDサーバー)でネームサーバーのAレコードを提供することでこの問題を解決します:
; .com TLDレベルで(レジストラで設定)
example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN NS ns2.example.com.
ns1.example.com. 86400 IN A 203.0.113.10
ns2.example.com. 86400 IN A 203.0.113.11
ベストプラクティス
- 最低2つのネームサーバー:ほとんどのレジストリは冗長性のために少なくとも2つのNSレコードを要求
- 地理的分散:ネームサーバーを異なるデータセンターやネットワークに配置
- 長いTTL:NSレコードは変更頻度が低いため、長いTTL(86400秒/24時間)を設定
- 一貫したNSレコード:親ゾーン(レジストラ)のNSレコードとゾーンファイル内のNSレコードが一致していること
- 単一障害点の回避:両方のネームサーバーが同じネットワークを共有している場合、ネットワーク障害でドメイン全体がオフラインになる
サブドメイン委任
サブドメインを完全に異なるネームサーバーに委任できます。異なるチームが異なるサブドメインを管理する大規模な組織に有用です:
; メインドメイン
example.com. NS ns1.example.com.
example.com. NS ns2.example.com.
; 委任されたサブドメイン
internal.example.com. NS ns1.internal-dns.example.com.
internal.example.com. NS ns2.internal-dns.example.com.
ユースケース
NSレコードを設定して、ドメインのDNS権限を選択したDNSホスティングプロバイダーに委任するか、サブドメインを別チームが管理する別のネームサーバーセットに委任します。