FYUME'S DNS LAB
NSD (Name Server Daemon) ✕ お名前.com

BINDはもう古い?
NSDで構築する超セキュアな権威DNSサーバー

自宅サーバーやOCIインスタンスの強みを最大限に活かす「自前DNSサーバーの構築」。脆弱性になりがちなBINDを避け、安全かつ圧倒的パフォーマンスを誇る「NSD」を使ってお名前.comセカンダリDNSとスマートに連携する手順を徹底解説します。

1

そもそも権威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はこれだ!」と公式回答を返す役割を担います。

なぜ BIND ではなく NSD なのか? 伝統的なDNSサーバー「BIND(バインド)」はキャッシュサーバーと権威サーバーの両方の機能を持ちますが、肥大化したシステムゆえに数多くの深刻な脆弱性が発見されてきました。 一方、NSD (Name Server Daemon) は「権威サーバー専用」としてゼロから設計されており、コードが非常にシンプルで高速、かつ極めて堅牢です。自前でドメインのレコード情報を世界に公開する用途にはNSDが最適解です。
2

独自ドメイン取得とお名前.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サーバー接続が遮断される心配がありません。

3

ゾーン転送(AXFR)とセキュリティ設計

プライマリサーバー(OCI上の自作NSD)でゾーン情報(レコード)を更新すると、セカンダリサーバー(お名前.comの 01.dnsv.jp)に対して情報同期の通知(NOTIFY)が飛び、安全な「ゾーン転送(AXFR)」が行われます。

安全なゾーン転送(AXFR)のトポロジー

プライマリDNS (OCI)
217.142.225.111 (NSD)
オリジナル情報源
1. NOTIFY 送信
AXFR (Port 53/tcp)
2. セキュリティ制限IPのみ許可
セカンダリ (お名前.com)
01.dnsv.jp (163.44.76.202)
複製ミラーデータ
⚠️ ゾーン転送のIP制限が超重要!
もしゾーン転送要求(AXFRリクエスト)を全世界に開放してしまうと、悪意のある攻撃者がドメイン内の「すべての登録サブドメイン(minecraft、files、ftpなど)」のリスト(ゾーン情報)を容易に一括引っこ抜きできてしまいます。NSD設定ファイルでお名前.comセカンダリのIPアドレス 163.44.76.202 のみ転送を許容するよう厳密にロックしましょう。
4

NSDの実装手順・設定コード完全公開

手順 1. パッケージインストールとディレクトリ構成

Ubuntu ServerにNSDをインストールします。NSDは標準リポジトリに含まれています。

sudo apt update && sudo apt install -y nsd

手順 2. NSD環境設定(/etc/nsd/nsd.conf)

NSD本体の挙動と、セカンダリネームサーバーに対するゾーン転送許可を記述します。

/etc/nsd/nsd.conf
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などの情報を記述します。

/etc/nsd/fyume.net.zone
$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セカンダリへのゾーン転送が行われているかデバッグします。

DNSサービス制御
# 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
5

ゾーンファイル生成シミュレーター

ご自身の保有するドメイン、プライマリDNSサーバのIP、および必要なサブドメイン名を入力することで、NSDへそのまま貼り付け可能なゾーン定義コード(RFC標準フォーマット準拠)をリアルタイムで自動作成します。

パラメータ設定

自動生成ゾーンファイル

✓ コピー完了
Generating...