概要
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
こんな感じです。