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

CentOS7
DNS cache
unbound

WordPressサーバーの名前解決が遅いと感じたので、パフォーマンスアップのために、WordPressサーバー自身に、自分用兼ローカルネットワークマシン用のDNSキャッシュサーバーをunboundで構築してみました。

その時の手順を紹介します。

手順

インストール

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

yum -y install unbound

設定

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

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

「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
access-control: 192.168.1.0/24 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

ファイアウォール設定の変更

待受ポートを開放します。

firewall-cmd --add-service=dns --permanent
firewall-cmd --reload

起動

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

systemctl start unbound
systemctl enable unbound
systemctl status unbound

動作確認

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

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

ローカルネットワーク上のマシンから確認する場合は、DNSサーバーのアドレスを変更後、正引きできることと、DNSサーバーのアドレスがunboundを動かしているサーバーのIPアドレスになっていることを確認します。

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などのキャッシュサーバーを導入することで名前解決周りのパフォーマンスをアップできます。

スポンサーリンク