DNS サーバ NSD を使ってみる

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

こんにちは。サイオステクノロジー OSS サポート担当 山本 です。

今回は DNS サーバのお話です。CentOS 同梱版などとして広く使用されているであろう BIND から、
NSD という OSS に乗り換えてみよう、という場合に必要な最低限の確認項目、設定項目を確認してみたいと思います。

■NSD とは?

NSDNLnet Labs によって開発されている、DNS サーバの一種です。

zone ファイル (IP アドレスとドメイン名の対応表) を自身が持つ「権威サーバ (コンテンツサーバ)」の機能のみを持った DNS サーバを提供するツールで、
権威サーバへの問い合わせを代行するキャッシュサーバの機能は有していません
(同機関は DNS キャッシュサーバの機能のみを持つ “Unbound” というツールも別途開発しています。)

同種のツールとしては CentOS の同梱版などで広く使用されている、BIND が有名です。

今回は CentOS で BIND の権威 DNS サーバの zone ファイルを使って、 NSD で権威 DNS サーバを動作させる場合に行う最低限の設定を確認していきます。

NSD は CentOS の標準パッケージには含まれていないので、yum からインストールする場合には epel のパッケージを使用する必要があります。

# yum -y install epel-release
# yum -y --enablerepo=epel install nsd

■BIND の権威サーバを NSD に移行してみる

それでは早速、BIND で動作している DNS サーバを NSD に移行してみましょう。
…と、その前に。

今回の移行元となる BIND は、権威 DNS サーバとしてもキャッシュ DNS サーバとしても動作させることのできるツールです。
NSD は先述のとおり権威 DNS サーバの機能しか持っていないので、BIND が権威 DNS サーバとして動作していなければ NSD への移行はできません。
なので、まず BIND の設定ファイル /etc/named.conf の以下の設定を見て、BIND が権威サーバ/キャッシュサーバのどちらで動作しているのかを確認しましょう。

/etc/named.conf 例

options {
    :
        recursion no;

この “options” 内の設定項目 “recursion” が “no” である場合のみ、BIND は権威 DNS サーバとして動作しています。
“recursion yes;” だったり、”recursion” が設定されていない場合は BIND はキャッシュ DNS サーバとして動作しているため、NSD に移行することはできません。代わりに先述の Unbound などが移行先の候補になります。

上記が確認できたら、あとは zone の設定を移行します。

BIND の設定ファイル /etc/named.conf の zone ステートメントの設定を元に、
NSD の設定ファイル /etc/nsd/nsd.conf の末尾に zone 属性の設定を追加しましょう。

/etc/named.conf 例

       zone "example.com" {
            type master;
            file "/etc/example.com.zone";
       };

↓↓↓
/etc/nsd/nsd.conf 例

       zone:
            name: "example.com"
            zonefile: "/etc/example.com.zone"

また、必要に応じて /etc/named.conf の “file” に設定されているディレクトリに存在する zone ファイルを、/etc/nsd/nsd.conf で zonefile に設定したディレクトリに移動させます。
なお、zone ファイルの書き方は BIND、NSD ともに RFC に準拠しているため、移行に際して zone ファイルの内容を変更する必要は基本的にはありません

移行に必要な最低限の設定は以上です。
以下のコマンドで NSD を起動し、dig コマンド等で BIND を動作させていた場合と同じ結果が得られるか確認できれば一先ず移行は成功です。

# systemctl start nsd

■最後に

今回は BIND から移行する場合の NSD の導入についてお話ししました。

今回扱っている設定は移行したい場合に最低限必要な箇所のみで、NSD にも BIND にも他に多数の設定項目が存在していますので、
実際に移行を行う際には設定ファイル、マニュアル等を確認の上、動作検証なども交えて移行を行うようにしてください。

なお余談ですが、NSD はデフォルト設定ではログが出力されないようになっています。
移行や導入の確認時にはログが出ていたほうが何かと便利なことが多いと思いますので、念のため以下の設定は確認しておくこともオススメします。

server:
   :
        verbosity: 0  # ログレベル。0~3 で高いほど詳細な出力になる
          :
        logfile: "/var/log/nsd.log"  # 出力先ディレクトリ


アバター画像
About 山本 54 Articles
元サーバサイドエンジニアのサポートエンジニア。「物事は理解できれば活路が見出せる可能性がある」という信条のもと、今日も石橋を叩く。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる