そもそも権威DNSサーバーの仕組みとは?
インターネット上のドメイン名(例: fyume.net)とサーバーの物理的な住所であるIPアドレス(例: 217.142.225.111)を紐づけるのがDNSの仕事です。
DNSサーバーには大きく分けて以下の2種類が存在します。
① キャッシュDNSサーバー (フルサービスリゾルバ)
Googleの 8.8.8.8 やCloudflareの 1.1.1.1 など。ユーザーの代わりにドメインの情報を世界中のDNSに問い合わせて一時的に記憶(キャッシュ)するサーバーです。
② 権威DNSサーバー (コンテンツネームサーバー)
今回構築するサーバーです。自ドメイン fyume.net に対する正解情報(ゾーンデータ)を保持し、世界中からの問い合わせに「このドメインの正しいIPはこれだ!」と公式回答を返す役割を担います。
独自ドメイン取得とお名前.comの強力なメリット
独自ドメイン(.net や .com)を取得する際は、信頼できるドメイン事業者(レジストラ)を選ぶ必要があります。
各社のドメイン取得・更新コストや付帯サービスの比較は以下の通りです。
| ドメイン事業者 | 取得/更新費用目安 | おまけ・付帯機能の特徴 | 自前DNSとの相性 |
|---|---|---|---|
| お名前.com | 取得: ¥1〜 / 更新: ¥1,400〜 | 国内最大手。Whois情報公開代行が完全無料。DNSレコード設定の即時反映。 | 最適(セカンダリDNS提供) |
| Cloudflare Registrar | 取得/更新: 卸売価格(約$10前後の実費のみ) | 手数料ゼロだが、ネームサーバーをCloudflare指定のものから変更不可。 | 不可(自前DNSは利用不可) |
| ムームードメイン | 取得: ¥99〜 / 更新: ¥1,500〜 | GMOペパボ運営。初心者向けでマニュアル充実、他ロリポップ提携あり。 | 普通 |
本構築でお名前.comを採用する最大の決め手は、「セカンダリDNSサービス(セカンダリネームサーバーの無料貸出:01.dnsv.jp)」が標準提供されている点です。
自前のOCIサーバー(プライマリDNS)が万が一メンテナンスや停電、DDos攻撃などで一時ダウンしても、お名前.comのセカンダリサーバーが名前解決を代行し続けるため、WebアクセスやMinecraftサーバー接続が遮断される心配がありません。
ゾーン転送(AXFR)とセキュリティ設計
プライマリサーバー(OCI上の自作NSD)でゾーン情報(レコード)を更新すると、セカンダリサーバー(お名前.comの 01.dnsv.jp)に対して情報同期の通知(NOTIFY)が飛び、安全な「ゾーン転送(AXFR)」が行われます。
安全なゾーン転送(AXFR)のトポロジー
もしゾーン転送要求(AXFRリクエスト)を全世界に開放してしまうと、悪意のある攻撃者がドメイン内の「すべての登録サブドメイン(minecraft、files、ftpなど)」のリスト(ゾーン情報)を容易に一括引っこ抜きできてしまいます。NSD設定ファイルでお名前.comセカンダリのIPアドレス
163.44.76.202 のみ転送を許容するよう厳密にロックしましょう。
NSDの実装手順・設定コード完全公開
手順 1. パッケージインストールとディレクトリ構成
Ubuntu ServerにNSDをインストールします。NSDは標準リポジトリに含まれています。
手順 2. NSD環境設定(/etc/nsd/nsd.conf)
NSD本体の挙動と、セカンダリネームサーバーに対するゾーン転送許可を記述します。
server:
ip-address: 0.0.0.0
port: 53
username: nsd
zonesdir: "/etc/nsd"
logfile: "/var/log/nsd.log"
pidfile: "/run/nsd/nsd.pid"
# お名前.com セカンダリDNS同期のためのゾーン定義
zone:
name: "fyume.net"
zonefile: "fyume.net.zone"
# お名前.comのセカンダリDNS「01.dnsv.jp」へ同期通知(NOTIFY)を送る
notify: 163.44.76.202 NOKEY
# お名前.comのセカンダリDNS「01.dnsv.jp」からのみ、ゾーン転送(AXFR)要求を許可する
provide-xfr: 163.44.76.202 NOKEY
手順 3. ゾーン定義ファイル(/etc/nsd/fyume.net.zone)の作成
ドメイン fyume.net の具体的なIP割り当て、NSレコード、MX、SRV、およびCNAMEなどの情報を記述します。
$TTL 86400
@ IN SOA ns1.fyume.net. root.fyume.net. (
2026052901 ; Serial (ゾーン更新の度に増分)
7200 ; Refresh (2時間)
900 ; Retry (15分)
1209600 ; Expire (2週間)
86400 ; Minimum TTL (1日)
)
; --- 権威DNSサーバーの定義 ---
@ IN NS ns1.fyume.net.
@ IN NS 01.dnsv.jp. ; お名前.com セカンダリDNSを設定
; --- プライマリDNSサーバのアドレス解決 ---
ns1 IN A 217.142.225.111
; --- 各種サービス・サブドメインのマッピング ---
@ IN A 217.142.225.111
www IN A 217.142.225.111
minecraft IN A 217.142.225.111
ftp IN A 217.142.225.111
files IN A 217.142.225.111
ssh0 IN A 217.142.225.111
; --- 自宅サーバー・プライベート環境解決 ---
ssh1 IN A 118.22.132.138
private.minecraft IN A 118.22.132.138
手順 4. ファイアウォール開放 & NSD起動・検証
DNSポート(53番のTCP/UDP)を開放し、NSDを起動、正しくお名前.comセカンダリへのゾーン転送が行われているかデバッグします。
# UFWでDNSポート(TCPおよびUDP双方)の解放 sudo ufw allow 53/tcp sudo ufw allow 53/udp # NSD構文エラーチェック sudo nsd-checkconf /etc/nsd/nsd.conf # サービス有効化 & 起動 sudo systemctl enable nsd sudo systemctl restart nsd # 正常動作&ゾーン転送同期確認 dig @217.142.225.111 fyume.net dig @217.142.225.111 files.fyume.net
ゾーンファイル生成シミュレーター
ご自身の保有するドメイン、プライマリDNSサーバのIP、および必要なサブドメイン名を入力することで、NSDへそのまま貼り付け可能なゾーン定義コード(RFC標準フォーマット準拠)をリアルタイムで自動作成します。
パラメータ設定
自動生成ゾーンファイル
✓ コピー完了Generating...