[CentOS]NSDインストール、設定

概要

DNSサーバーといえばBINDを前まで良く聞きましたが、脆弱性が多く危険なことから、最近ではDNSコンテンツサーバーならnsdやtinydns、DNSキャッシュサーバーならUnbound、 Dnsmasqなどに切り替える人が増えてきました。

ここでは、DNSコンテンツサーバーであるnsdをインストール、動くまで設定をしていきます。

環境

・CentOS7
・epel導入(下記でなぜ必要か説明)

インストール

nsdはepelのリポジトリを使用して導入するため、epelが入っていない人はまず下記コマンドを実行して、epelを導入してください。

また、epelが最新になっているかどうか不明なので、最新にアップデートしておきます。

# yum install epel-release
# yum update epel-release

そしたら実際にnsdをインストールしていきます。
# yum --enablerepo=epel install nsd
インストール自体はこれだけですが、設定があるので次項目で変更する設定の説明をしていきます。

設定

設定の変更について、/etc/nsd/nsd.confを変更していきます。
設定ファイルを変えるので、不安な方はバックアップを作成して、何時でも戻せるようにしましょう。

# cp -a /etc/nsd/nsd.conf /etc/nsd/nsd.conf.bak
# vi /etc/nsd/nsd.conf

ここから下、変更、コメントアウトを外す設定です。

logfile: "/var/log/nsd.log"
zonesdir: "/etc/nsd/zones"
hide-version: yes

上記3つは大体70行目~90行目あたりに同様のコメントアウトされている設定、もしくは普通に設定されているものがあるので、
コメントアウトを外して変更するか、コメントの下に追記して変更してください。 minimal-responses: no
refuse-any: no

上記の2つは恐らく140行周辺にあるので、これも同様に設定しましょう。 そして、ここからがメインです。
一番最後の行に、ゾーンの設定をしていきます。ドメイン名はexample.comにしていますが、

zone:   
name: “example.com”
zonefile: “example.com.zone”


これで設定ファイルの設定は完了しました。
ただし、まだzoneファイルの作成をしていないので、作成していきましょう。

zoneファイル設定

先ほど設定でzonesdir: "/etc/nsd/zones"と設定したので、/etc/nsd/zonesにzoneファイル を作成していきます。

# mkdir /etc/nsd/zones
# vi /etc/nsd/zones/example.com.zone

下記のように一例として記述していきます。

$TTL 2600
@ IN SOA ns0.example.com. host.example.com. (
1547785883 ;Serial
16384 ;Refresh
2048 ;Retry
1048576 ;Expire
2600 ) ;Minimum
;
300 IN NS ns0.example.com.
300 IN NS ns1.example.com.
ns0 300 IN A y.y.y.y
ns1 300 IN A x.x.x.x


zoneファイルの書き方はある程度のフォーマットは決まっていても結構様々な書き方があるので、調べてみると面白いです。

nsdの起動

起動、有効化のコマンドです。

# systemctl start nsd.service
# systemctl enable nsd.service

動作確認

動作の確認は別のホストからdigコマンドを使用することで簡単にできます。

dig @x.x.x.x example.com any

こんな感じです。

総括

zoneファイルの書き方がなかなか人それぞれでどうするか困る人もいたり、サブドメインを委任する方法だったりとかをどうするかとかも出てくると思います。結構自由度もあるので、試行錯誤しながら思うように動くまで頑張りましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です