====== dnsmasqでDNSキャッシュサーバ ======
自宅サーバを構築しているが、固定IPを取得するほどまじめにやっているわけでもないので、DDNSのアドレスを使用している。前に使用していたルータは、ルータでDDNSのIP更新を行えば、ルータ内にいても勝手に内部のサーバのIPに置き換えてくれていたが、今のルータはそうならない。この状態だと、ルータ外にいる場合はDDNSのアドレスを使用してサーバにアクセスし、ルータ内にいる場合は、ローカルIPを直打ちしてサーバに接続することになる。これだと面倒なので、dnsmasqというDNSキャッシュサーバを使用して、ルータの内部にいる場合でもDDNSと同じアドレスでアクセスできるようにする。
===== インストール =====
$ sudo apt-get install dnsmasq
dnsmasq dnsmasq-base がインストールされる
===== 設定 =====
/etc/dnsmasq.conf を編集
$ sudo vi /etc/dnsmasq.conf
特に設定することなし
システムが名前解決に使用するサーバを設定する。
$ sudo vi /etc/resolv.conf
/etc/resolv.conf にDNSサーバを指定する(プロバイダなど)
nameserver 127.0.0.1
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
nameserver 192.168.xxx.1
* nameserver 127.0.0.1 ←まずは自前で解決する
* nameserver xxx.xxx.xxx.xxx ←自前で名前解決出来なかった場合は、プロバイダのプライマリDNSを使う
* nameserver xxx.xxx.xxx.xxx ←プロバイダのプライマリDNSでダメだった時は、セカンダリDNSを使う
* nameserver 192.168.xxx.1 ←最後の手段ゲートウェイに任せてみる
DHCP を利用していると resolv.conf が勝手に書き換わってしまうので、DHCPは使わないようにする。
自前で解決するホスト名を記述する。
$ sudo vi /etc/hosts
127.0.0.1 localhost
127.0.1.1 host
127.0.1.1 myfileserver
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
* 記述形式
* IPアドレス TAB(0x09) ホスト名
最後に dnsmasq を再起動して終了
$ /etc/init.d/dnsmasq restart
===== クライアント側の設定 =====
最後にクライアントが dnsmasq サーバをDNSサーバとして使用するように設定する。
ルータの設定に DHCP でクライアントの IP を設定する際に、クライアントに使用させる DNS を指定する項目があったので、そこに dnsmasq の IP を設定した。
これでホームネットワークにいる場合でも、外部にいる場合でも同じアドレスにアクセスすればサーバにつながるようになった。
===== 参考 =====
[[http://gihyo.jp/admin/serial/01/ubuntu-recipe/0020]]