ユーザ用ツール

サイト用ツール


ubuntu-server-10-04:dnsmasq

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 を設定した。

これでホームネットワークにいる場合でも、外部にいる場合でも同じアドレスにアクセスすればサーバにつながるようになった。

参考

ubuntu-server-10-04/dnsmasq.txt · 最終更新: 2011/05/01 22:24 by admin