nkmtの日記

日常のことをつらつら書きます

DNSキャッシュサーバーの構築

Linuxインフラ

2019年1月22日

DNSキャッシュサーバー

DNS(Domain Name System)とはipアドレスとドメインを紐付ける機能をもつサーバーです。
インターネットで「google.com」とかでサイトにアクセスすることができるのは、
google.comに紐づいているサーバーに名前解決してアクセスができているからです。
一般的にはapacheやnginxでwebサーバーを構築することは多いと思いますが、
今回はdnsキャッシュサーバーをCentOS7上で作成したいと思います。

DNSサーバーがない場合

DNSサーバーがない場合は自身のPCのホストファイルを変更して自分のPCに明示します。
ちなみに歴史的経緯によりもともと名前解決はhostsで行っていました。
windowsの場合は下記のディレクトリにhostsファイルがあります。
”’
C:\Windows\System32\drivers\etc\hosts
”’
メモ帳を開いて下記のように記入します。
”’
192.168.32.123 DNSサンプル
”’
ちなにもこのhostsによる名前解決はDNSサーバーによる名前解決手法よりも優先されます。

unboundの設定

DNSキャッシュサーバーの1つであるunboundの設定を行います。
BINDキャッシュサーバーにはbindもありますが、DNSコンテンツサーバーとしての役割もあります。
unboundはDNSキャッシュサーバー専用のサービスとして機能し、BINDに比べて軽量に動作します。

undounの初期設定

unboundをインストールします。
”’
yum install unbound
”’
初期状態ではunboundは外部からのアクセスができないようになっています。
そのため外部からアクセスできるように設定ファイルを変更します。
”’
vim /etc/unbound/local.d/test.conf
”’
/etc/unbound/local.d/ 配下に任意の.confファイルを作成します。
ファイルには下記のように記述します。
”’
interface 192.168.32.XX
interface 127.0.0.1

access-control: 192.168.32.0/24 allow
access-control: 127.0.0.1 allow
”’
上記で記載した interface で受け付けるinterfaceを指定します。
その上で受け付けるipを指定しています。
localhostからのアクセスによる名前解決も行うために127.0.0.1でlocalhostも追加しています。
以上を行った後に設定ファイルに問題がないか確認を行います。
”’
unbound-checkconf
”’

DNS SECの設定を外す

もしもDNS SECによる通信の制限を外す場合は、
/etc/unbound/unbound.conf内にconfファイルを作成し下記のようにroot-hintsを修正します。
”’
module-config “iterator”
”’
上記のroot-hintsで設定した内容を読み込ませます。
”’
unbound-control reload
”’
unboundを起動します。
”’
systemctl start unbound
systemctl is-active unbound
”’

名前解決ができている確認

最後に下記のコマンドにて、DNSサーバーのアドレスを指定して名前解決ができるか確認を行います。
”’
nslookup www.test.com 192.168.32.XX
”’
上記によりアドレスが表示されれば問題ありません。