せっかく24時間稼働させているWebサーバマシンがあるのだから、DNSとしても働かせたいなぁと思ったのですが、BINDは少々大げさすぎるからもっとシンプルなDNS無いのかなぁって思ってた。そしたらdnsmasqという、DNSキャッシュとして動くアプリがあることが判明。Windows端末のDNS設定をこいつを使うように設定すれば、名前解決のレスポンス改善が期待出来る。ってことで入れてみることに決定。
portinstallというコマンドを使って、dnsmasqというツールをインストールします。既にPortsはCVSupで最新の状態にあると思いますので、下記の様にコマンドを入力すればインストールされるハズです。
$ cd /usr/ports/
$ portinstall -L /var/log/ports/ dns/dnsmasq
これでdnsmasqというツールがインストールされたと思います。
設定と言っても簡単なこと。
/usr/local/etc/dnsmasq.conf.exampleというファイルを、/usr/local/etc/dnsmasq.confとするだけ。
$ cd /usr/local/etc
$ cp dnsmasq.conf.example dnsmasq.conf
一応エディタで開いてみると、なんだかよく分からない。だからとりあえずそのままにしておく。
dnsmasqの実行ファイル本体は、/usr/local/sbin/dnsmasqにあるみたい。
おもむろに下記のように入力して、dnsmasqを起動してみました。
$ /usr/local/sbin/dnsmasq
$ cd /var/run
$ ls
これでdnsmasq.pidが生成されていたら、dnsmasqの起動は成功だと思います。
せっかくDNSキャッシュサービスを導入した訳ですから、まずは自前で名前解決させないと意味がないですよね。
というわけで/etc/resolv.confを記述変更します。
| domain sasapurin.com nameserver 127.0.0.1 ←まずは自分で名前解決させる nameserver 210.153.1.1 ←自前で名前解決出来なかった場合は、プロバイダのプライマリDNSを使う nameserver 210.153.1.9 ←プロバイダのプライマリDNSでダメだった時は、セカンダリDNSを使う |
実行コマンドをシェルで記述しておいて、それを/usr/local/etc/rc.d/に置いておけば、FreeBSDを再起動した時に自動的にスタートアップしてくれるってのは、ずいぶん前に覚えた知識。簡単なシェルスクリプトを書いて、/usr/local/etc/rc.d/配下に置いておく。
$ cd /usr/local/etc/rc.d
$ touch dnsmasq.sh
$ ee dnsmasq.sh
| #!/bin/sh /usr/local/sbin/dnsmasq |
これで準備OK。
さてさて、本当にDNSキャッシュの効果があるのか検証してみることに。
Windows端末のネットワークプロパティで、TCP-IPで使うDNSのアドレスを、dnsmasqが動いているマシンのIPアドレスに変更。
これで名前解決出来るなら動作OK、名前解決出来ないならなにか問題ありと判断。
実際にやってみたら上手く行きました。インターネットブラウザを使って色々なサイトを適当に訪れてみる。
一回目はキャッシュに情報が無いので、プロバイダのDNSに問い合わせているハズだから少し待たされる。
しかし二回目に同じサイトにアクセスすると...おおっ一瞬で名前解決されたみたい。どうやら成功だ。