こんにちは、阿形です。
メールサーバーを運用している方なら、DNSBLを使ったスパム対策のために大量のDNSクエリが発生することがあります。そんなときにキャッシュサーバーがあると便利ですよね。
BINDは定番の選択肢ですが、セキュリティ面で気になる部分もあります。そこで今回は、違うDNSサーバーソフトを使ってみようということで、以下の構成にしてみました
NSDは「Name Server Daemon」の略で、権威DNSサーバー専用のソフトウェアです。NLnet Labsという非営利団体が開発しています。
特徴は以下の通りです。
Unboundはキャッシュ専用のDNSリゾルバです。こちらもNLnet Labsが開発しています。
特徴は以下の通り。
それでは、実際の設定手順を見ていきましょう。
OS:Ubuntu24.04
1つのサーバー上で権威サーバーとキャッシュサーバーを動作させます。
キャッシュサーバーはローカルの処理のみを引き受けます。
このため、権威サーバーは53番ポートで待ち受け、キャッシュサーバーは5353番ポートで待ち受けることにします。これだとローカルでの問い合わせがキャッシュサーバーに行ってくれないので、リゾルバ(systemd-resolved)の設定を調整することで対応します。
※本来は別々のサーバーで動かす方が良いです。今回はVPS上でDNS権威サーバーとメールサーバーを動かすため、DNSBLのためのキャッシュを運用したいという条件から変則的な構成になっています。
まずはキャッシュサーバーのUnboundから。
以下のコマンドでUnboundをインストールします。
sudo apt install unbound
次に、Unboundの設定ファイルを作成します。/etc/unbound/unbound.conf.d/local.conf
に以下の内容を記述します。
server:
verbosity: 1
interface: 127.0.0.1
port: 5353
do-not-query-localhost: no
hide-identity: yes
hide-version: yes
cache-min-ttl: 60
cache-max-ttl: 86400
設定したら、Unboundを再起動します。
sudo systemctl restart unbound
Ubuntu 24.04では、デフォルトでsystemd-resolvedがリゾルバとして動作しています。これを先ほど設定したUnboundに向けるために、/etc/systemd/resolved.conf
を編集します。
DNS=127.0.0.1:5353
systemd-resolvedも再起動します。
sudo systemctl restart systemd-resolved
さて、ちゃんと名前解決できるか確認してみましょう。digコマンドでテストした後、Unboundのキャッシュ状況を確認できます。
dig www.yahoo.co.jp
sudo unbound-control stats
sudo unbound-control dump_cache
次は権威サーバーのNSDを設定していきます。まずはインストールから。
sudo apt install nsd
ゾーンファイルを保存するディレクトリを作成します。
今回は既存のBINDのゾーンファイルがあるため、BINDのゾーンファイルをコピーします。
NSDは基本的にBINDのゾーンファイルをそのまま使用できます。
sudo mkdir /etc/nsd/zones
cp db.example.com /etc/nsd/zones/example.com.zone
NSDの設定ファイル /etc/nsd/nsd.conf.d/example.com.conf
を作成します。
server:
ip-address: xxx.xxx.xxx.xxx
server-count: 1
ip4-only: no
hide-version: yes
identity: "NSD"
zonesdir: "/etc/nsd/zones"
remote-control:
control-enable: yes
control-interface: 127.0.0.1
zone:
name: "example.com"
zonefile: "example.com.zone"
ゾーンファイルの構文に問題がないか確認してみましょう。
sudo nsd-checkzone example.com /etc/nsd/zones/example.com.zone
zone example.com is ok
確認できたら、NSDを再起動します。
sudo systemctl restart nsd
これでDNSサーバーの基本設定は完了です!あとはネームサーバーの切り替え手続きを行えば、実運用できるようになります。
今回はBIND以外のDNSサーバーソフトウェアとして、NSDとUnboundを使ったDNSサーバー構築をご紹介しました。NSDはシンプルで権威サーバーに特化した設計なので、設定もわかりやすく、セキュリティ面でも安心です。Unboundもキャッシュリゾルバとして非常に高性能で、DNSBLの運用などに最適です。
もちろん、細かい部分ではまだ調整の余地があるかもしれませんが、基本的な構成はこれで十分動作します。
今回は以上です。