Unbound on CentOS7でローカルDNSサーバを構築してみる
【目標】
ホストOSからnslookupで名前解決できていることの確認とブラウザからIPアドレスではなくドメインでアクセスできればOK
前回までの記事
Vagrantの使い方
VagrantでWebServerとUnbound用サーバの構築
Unboundの構築
//パッケージの更新 sudo yum -y update //ifconfigでinterfaceにIPアドレスが振られていない場合に振る sudo ifconfig enp0s8 192.168.33.20 netmask 255.255.255.0 //yumでunboundのインストール sudo yum -y install unbound //unboundの設定ファイルを書き換える(基本的にコメントアウトか加筆する) sudo vim /etc/unbound/unbound.conf server: verbosity: 1 interface: 0.0.0.0 //すべての通信に対して名前解決を行う access-control: 0.0.0.0/0 refuse //defaultは遮断 //192.168.33.0/24のネットワークは許可(ホストのvagrant用vboxnetが192.168.33.0/24なので←vagrantを使う場合は基本的に同じはず) access-control: 192.168.33.0/24 allow //test.example.comという存在しないURLを名前解決し、webserverにアクセスできるようにする local-data: "test.example.com. IN A 192.168.33.30" //すべてのドメインに対して名前解決ができない場合は次のDNSサーバー(Googleが提供している)にforwardingする forward-zone: name: "." forward-addr: 8.8.8.8 forward-addr: 8.8.4.4
<補足>
正式なURLでは、末尾に「.」がつく
→ test.example.com.
unboundの起動
$ sudo systemctl start unbound $ sudo systemctl enable unbound
DNSサーバの変更
/etc/resolv.confを編集しないといけないがNetworkManagerの影響でnetworkサービスを再起動すると設定がデフォルトに戻ってしまう
そこでネットワーク起動時のインターフェースの設定を書き換える
sudo vim /etc/sysconfig/network-scripts/ifcfg-enp0s8 … DNS1=127.0.0.1 (DNSサーバを追記、unboundサーバのIPアドレスでも可) //networkサービスの再起動 $ sudo systemctl restart network //DNSサーバのアドレスが書き換わっていることを確認 cat /etc/resolv.conf … nameserver 127.0.0.1 …
検証(名前解決できているか確認)
ホストOSは以下の画面で別途DNSサーバの追加が必要
※追加するDNSは一番上に設定する
【unbound起動状態】
[ホストOS] nslookup test.example.com [ゲストOS] nslookup test.example.com
以下のようになっていれば成功(左:ゲストOS、右:ホストOS)
ホストOSからWebブラウザでも確認(URL:test.example.com)
【unbound停止状態】
[ホストOS] nslookup test.example.com [ゲストOS] nslookup test.example.com
以下のように名前解決できないことが確認できる
最後に
ローカルDNSサーバをたてられたので満足
よくDNSサーバとして利用されるBINDとunboundの違いとしては
BINDは昔からあるもので権威DNSサーバにもキャッシュサーバにも使えるがバグが多い
unboundはキャッシュサーバと部分的な権威DNSサーバの機能しかないがBINDよりも2〜4倍ほど性能がいい
あと動作としてよくわからなかったのが