CentOS7でDNSキャッシュサーバー(unbound)を構築する方法

CentOS7でDNSキャッシュサーバー(unbound)を構築する方法

CentOS7でWordPressサーバーを稼働させたときに、名前解決が遅いことが原因で一つ一つの操作が遅くなることがあります。

そのようなときは、自分自身用のDNSキャッシュサーバーを立てることで、原因を取り除くことができます。

そこで、ここではWordPressを稼働させているCentOS7上に、自分自身用のDNSキャッシュサーバーをunboundで構築する方法を紹介します。

動作環境

この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
CentOS(Minimal)7.9.2009
unbound1.6.6

unboundでDNSキャッシュサーバーを構築する

インストール

yumコマンドでサクッとインストールできます。

# yum -y install unbound

設定

設定ファイル「server」セクションでは、待ち受けるインターフェース(interface)と、アクセス可能なネットワーク(access-control)を指定しています。

ここでは、すべてのIPv4インターフェスで待受け、自分自身からのアクセスのみを受け付けるよう設定しています。

「foward-zone」セクションでは、ゾーンごとにフォワード先を指定します。

ここでは、すべての名前解決をGooglePublicDNSへフォワードしています。

# vi /etc/unbound/unbound.conf

server:
interface: 0.0.0.0
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.0/8 allow
hide-version: yes

forward-zone:
name: "."
forward-addr: 8.8.8.8
forward-addr: 8.8.4.4
Memo

ここでは、動作するために必要な最小限の設定のみを行っていますが、キャッシュの有効期限など設定可能な項目はたくさんありますので、環境に合わせて調整するのが良いでしょう。

設定の確認

設定が完了したら、設定に問題がないかunbound-checkconfコマンドで確認し、下のように「no error」ならOKです。

# unbound-checkconf
unbound-checkconf: no errors in /etc/unbound/unbound.conf

ネットワーク設定の変更

自分自身のDNSサーバーアドレスを12.7.0.0.1へ変更します。

# nmcli connection modify ens160 ipv4.dns "127.0.0.1"
# systemctl restart network.service

起動

サービスの起動と、OS起動時に自動起動するよう設定します。

# systemctl start unbound
# systemctl enable unbound
# systemctl status unbound

動作確認

最後に、名前解決できることを確認します。

ここでは「www.yahoo.co.jp」を正引き(ホスト名からIPアドレスを解決)できることと、DNSサーバーのアドレスが自分自身になっていることを確認しています。

# dig www.yahoo.co.jp

・・・
;; ANSWER SECTION:
www.yahoo.co.jp. 47 IN CNAME edge.g.yimg.jp.
edge.g.yimg.jp. 14 IN A 183.79.249.252

;; Query time: 32 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
・・・
Memo

digコマンドがインストールされていない場合は、bind-utilをインストールしましょう。

あとがき

LinuxマシンはWindowsマシンと違い、DNSサーバに問い合わせた結果をシステムの内部にキャッシュする機能がないので、unboundなどのキャッシュサーバーを導入することで名前解決周りのパフォーマンスをアップできます。

記事が役立ったらシェアしてくれるとうれしいです。

あなたにおすすめのコンテンツ