====== 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]]