ローカル DNS サーバとして Dnsmasq を設定した
ntpq の結果が返ってくるのが遅かった件で原因が名前解決にあったので、じゃあ DNS サーバー置くかという勢いで設定しました。
とはいえ BIND を設置するのもコスト高いよなと思ったので、簡単に設置できそうな Dnsmasq を設定することにしたわけです。
今回 DNS サーバーにしたマシンには既に NTP サーバーとして chrony、 Web サーバーとして Apache2、監視サーバーとして Zabbix、Zabbix のデータ保存用データベースとして MySQL が動いていますが、それ以外はなんの変哲もない debian 8.4 の x86 が動く ThinkPad X60s です。
手抜き設定です。
まずはインストール、apt-get で入れていきます。
$ sudo apt-get install dnsmasq -y
設定ファイルを編集して DNS サーバー自身の名前解決では /etc/resolv.conf の順番通りに問い合わせをするように変更します。
$ sudo vi /etc/dnsmasq.conf static-order
/etc/resolv.conf を編集して外部 DNS サーバーよりもローカル DNS サーバーが上になるようにします。
$ sudo vi /etc/resolv.conf nameserver 127.0.0.1 nameserver 8.8.8.8
LAN 内の名前解決には Dnsmasq のマシンの hosts ファイルが利用されるのでこれを編集して適当にマシン名と ip アドレスを書き込む。
$ sudo vi /etc/hosts 192.168.10.11 X60s 192.168.10.12 X40 192.168.10.14 debian 192.168.10.109 rpi
最初の 192.168.10.11 X60s
は DNS サーバー自身のアドレスです。
hosts ファイルの編集が終わったら Dnsmasq を再起動させる。
$ sudo service dnsmasq restart
試しに ThinkPad X40 (ホスト名は X40)の名前解決をしてみます。
$ nslookup x40 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: x40 Address: 192.168.10.12
ちゃんと返ってきました。
普通のドメインを名前解決できるか確認します。
$ nslookup www.yahoo.co.jp Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: www.yahoo.co.jp canonical name = www.g.yahoo.co.jp. Name: www.g.yahoo.co.jp Address: 183.79.231.182 Name: www.g.yahoo.co.jp Address: 182.22.59.229 Name: www.g.yahoo.co.jp Address: 182.22.63.230 Name: www.g.yahoo.co.jp Address: 124.83.235.204
大丈夫そうです。
いくらサーバーを設定しても他のマシンが参照してくれないので、他のマシンを設定して回ります。
なお、今回設定するのは全部 debian です。8系と7系が混じってますが、同じ設定でイケそうです。
$ sudo vi /etc/resolvconf.conf name_servers=192.168.10.11
もしくは
$ sudo vi /etc/network/interfaces dns-nameservers 192.168.10.11
ついでに
$ sudo vi /etc/resolv.conf nameserver 192.168.10.11 nameserver 8.8.8.8