読者です 読者をやめる 読者になる 読者になる

カタカタブログ

SIerで働くITエンジニアがカタカタした記録を残す技術ブログ。Java, Oracle Database, Linuxが中心です。たまにRuby on Railsなども。

dnsmasqでRaspberry Pi 2をプライベートDNSサーバにしてみた

Linux Raspberry Pi ネットワーク

自宅LAN内にサーバが増えてくると、いちいちIPアドレスでアクセスするのが面倒なので名前解決したいが、/etc/hostsをサーバごとに個別に用意するのも面倒、ということで、Raspberry Pi 2を今回は自宅LAN内のプライベートDNSサーバにしてみた。インターネットに公開する必要はなく、単に自宅LAN内に閉じた名前でいいので、BINDを使うのも面倒だと思っていたところ、dnsmasqというのが簡単に使えそうだったので、今回使ってみた。
これにより、Raspberry Pi 2をDNSサーバとして使えて、さらにホスト名とIPアドレスのマッピングはRaspberry Piの/etc/hostsに集約されるので、サーバが増えても/etc/hostsに1行追記するだけで済む。

以下の記事を参考に、設定を行った。
https://archlinuxjp.kusakata.com/wiki/Dnsmasq

dnsmasqインストール

まずdnsmasqをapt-getでインストールする。

pi@raspberrypi~ $sudo su -
root@raspberrypi:~# apt-get update
root@raspberrypi:~# apt-get install dnsmasq

ついでに名前解決のためのnslookupコマンドもデフォルトでは使えなかったので、インストールしておく。

root@raspberrypi:~# apt-get install dnsutils

hosts設定

Raspberry Piの/etc/hostsに名前とIPアドレスのマッピングを定義する。とりあえず、Raspberry Piの設定を以下のように設定しておく。以前、固定IPにしたので、そのアドレスをセットしておく。

/etc/hosts

192.168.11.11   raspi

ルータのDNSサーバ変更

ルータはBUFFALOのWHR-300HP2を使っている。デフォルトだとプロバイダのDNSサーバを見に行っているので、Raspberry PiのDNSサーバをプライマリに設定する。以下のように「DNS(ネーム)サーバーアドレス」のプライマリーに、Raspberry PiのIPアドレスを指定し、「設定」を押す(これにより、ルータが自動的に再起動される)。
f:id:osn_th:20150628135459p:plain

名前解決確認

正しく名前解決できるか確認するために、別PC(自宅LANに接続したMac Book)からraspiを解決してみる。
もちろん、このマシン上のhostsにはraspiを解決できる設定はない。

$ nslookup raspi
Server: 192.168.11.1
Address: 192.168.11.1#53
Name: raspi
Address: 192.168.11.11

正しくルータ経由で”raspi”が解決できているよう。

ただ、この時点でインターネット上のドメイン(google.comなど)が解決できなくなってしまった。。dnsmasqの設定を変更し、ローカルで見つからなかった名前の場合は外部に問い合わせて解決するようにする。

dnsmasq設定変更

/etc/resolv.confにnameserver設定を追記すればよいが、/etc/resolv.confは自動生成されるため、設定を変更してもdnsmasq再起動のたびに上書きされてしまう。
上書きされない方法などいろいろ試したが、うまく行かなったため、以下の設定で上書きされるresolv.confにセカンダリのDNSサーバとしてgoogleのDNSサーバを追記する設定をしたところ、うまくいった。

/etc/resolvconf.confに以下の設定を追記

name_servers=127.0.0.1
name_servers=8.8.8.8

dnsmasqを再起動する。

root@raspberrypi:~# service dnsmasq restart

再起動すると/etc/resolv.confが書き換えられるが、以下のようにGoogleのDNSサーバ(8.8.8.8)とRaspiberry Pi自身のdnsmasq(127.0.0.1)が参照されるような設定になっている。

/etc/resolv.conf

# Generated by resolvconf
nameserver 8.8.8.8
nameserver 127.0.0.1

これにより、自宅LANもインターネット上のドメインも正常に名前解決できるようになった!

まとめ

Raspberrry Pi 2にdnsmasqをインストールし、ルータのDNS設定を変更することで、自宅LAN内のサーバに名前を付与することができるようになった。これでIPアドレスとホスト名の管理・解決がRaspberry Piで一元管理できる!便利!

以上

関連記事