
CentOS 7でWordPressサーバーを稼働させたときに、名前解決が遅いことが原因で一つ一つの操作が遅いという問題があり、自分自身用のDNSキャッシュサーバーを立てることで、問題を解決することができました。
そこでここでは、CentOS 7で自分自身用のDNSキャッシュサーバーをunboundで構築する方法を紹介します。
目次
動作環境
この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。
ソフトウェア | バージョン |
---|---|
CentOS(Minimal) | 7.9.2009 |
unbound | 1.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
ここでは、動作するために必要な最小限の設定のみを行っていますが、キャッシュの有効期限など設定可能な項目はたくさんありますので、環境に合わせて調整するのが良いでしょう。
設定の確認
設定が完了したら、設定に問題がないか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)
・・・
digコマンドがインストールされていない場合は、bind-utilをインストールしましょう。
あとがき
LinuxマシンはWindowsマシンと違い、DNSサーバに問い合わせた結果をシステムの内部にキャッシュする機能がないので、unboundなどのキャッシュサーバーを導入することで名前解決周りのパフォーマンスをアップできます。