概要
Raspberry Pi 2にdnsmasq を導入して、プライベートネットワーク内の内向きDNSサーバとして利用します。
DNSといえばbindが一般的だと思いますが、bindは機能は豊富だけど設定が面倒。
dnsmasq は軽量で、hostsファイルを編集するだけで内容を展開してくれるので運用が簡単です。
dnsmasq の導入
dnsmasq は apt-get でインストールできます。
設定内容については他のサイトで解説されているのでそちらをご覧ください。
$ sudo apt-get install dnsmasq
$ sudo vi /etc/dnsmasq.conf
port=53
domain-needed
bogus-priv
local=/local.example.com/
expand-hosts
domain=local.example.com
$ sudo service dnsmasq restart
Aレコードの登録
hostsファイルに記述するだけでdnsmasq がAレコードと判断してくれます。
hostsファイル変更後は、dnsmasq を再起動する必要があります。
$ sudo vi /etc/hosts
192.168.1.192 host1.example.com
$ sudo service dnsmasq restart
クライアントで名前解決ができることを確認
WindowsOSの場合、コントロールパネルのイーサネットの設定から優先DNSサーバーに raspberry piのIPアドレスを指定します。
代替DNSサーバーは、内向きDNSがraspberry piのみであれば、普段使っているルーターなどを指定すればいいでしょう。
ここでは名前解決してApacheにアクセスできるかを確認してみます。
ブラウザからraspberry piのhostsで指定した http://host1.example.com/ へアクセスしてみましょう。
raspberry piにアクセスできれば成功です。
dnsmasqのメモリ使用量
psコマンドのRSS値を見てみましょう。
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
dnsmasq 2040 0.0 0.2 4448 2344 ? S 22:03 0:00 /usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -r /var/run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new
ほぼ起動直後で2.3MB程度のメモリを使用しているようです。
dnsmasq がダウン後に復旧した場合
dnsmasqがダウンすると当然内向きDNSは機能しません。
試しにraspberry piのLANケーブルを抜いてみます。
当然raspberry piのhostsに設定した内容は引けず、代替DNSサーバーへの問い合わせになります。
抜いたLANケーブルを再び差し込んでみます。
WindowsOSの場合、このままではすぐにdnsmasqを見てくれません。
WindowsのDNSキャッシュをクリアする必要があります。
コマンドプロンプトから下記のコマンドを実行します。
ipconfig /flushdns
Windows IP 構成
DNS リゾルバー キャッシュは正常にフラッシュされました。
ブラウザを再起動すると、再びdnsmasqを参照してくれるようになります。