ローカルにキャッシュサーバを立ててみるとブラウジングの速度も結構変わるのかな、と思い、unboundを入れてみた。OSは Mac OS X 10.7.4。インストール自体は MacPortsから簡単に実行できる。
MacBookAir:work fumi$ sudo port install unbound
---> Computing dependencies for unbound
---> Dependencies to be installed: ldns openssl zlib
---> Fetching archive for zlib
---> Attempting to fetch zlib-1.2.7_0.darwin_11.x86_64.tbz2 from http://packages.macports.org/zlib
---> Attempting to fetch zlib-1.2.7_0.darwin_11.x86_64.tbz2.rmd160 from http://packages.macports.org/zlib
---> Installing zlib @1.2.7_0
---> Activating zlib @1.2.7_0
---> Cleaning zlib
---> Fetching archive for openssl
---> Attempting to fetch openssl-1.0.1c_0.darwin_11.x86_64.tbz2 from http://packages.macports.org/openssl
---> Attempting to fetch openssl-1.0.1c_0.darwin_11.x86_64.tbz2.rmd160 from http://packages.macports.org/openssl
---> Installing openssl @1.0.1c_0
---> Activating openssl @1.0.1c_0
---> Cleaning openssl
---> Fetching archive for ldns
---> Attempting to fetch ldns-1.6.13_0.darwin_11.x86_64.tbz2 from http://packages.macports.org/ldns
---> Attempting to fetch ldns-1.6.13_0.darwin_11.x86_64.tbz2.rmd160 from http://packages.macports.org/ldns
---> Installing ldns @1.6.13_0
---> Activating ldns @1.6.13_0
---> Cleaning ldns
---> Fetching archive for unbound
---> Attempting to fetch unbound-1.4.17_0.darwin_11.x86_64.tbz2 from http://packages.macports.org/unbound
---> Attempting to fetch unbound-1.4.17_0.darwin_11.x86_64.tbz2.rmd160 from http://packages.macports.org/unbound
---> Installing unbound @1.4.17_0
---> Activating unbound @1.4.17_0
---> Cleaning unbound
---> Updating database of binaries: 100.0%
---> Scanning binaries for linking errors: 100.0%
---> No broken files found.
続いて自動起動の設定。
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.unbound.plist
最後に起動。
$ sudo launchctl start org.macports.unbound
後は、Mac側のシステム環境設定で DNSサーバの設定に 127.0.0.1を追加してやれば完了。
で、しばらく digで様子を見てみたけど、意外に世の中の TTLって短いことに気づく。86400がデフォかと勝手に思っていたけど、ほとんどそれ以下。なので、頻繁にアクセスしていればキャッシュの意味もあるけど、TTLより長い間隔でアクセスするような場合はキャッシュの意味がない。
そんなに頻繁にブラウズする訳でもないので、キャッシュサーバをローカルで持つ意味ってあんまりないかなあと思ったけど、せっかくなのでこのまま続けることにして、TTLをunbound側で制御できないかと思い調べてみると、cache-ttl-minでキャッシュの最低時間を指定できるようなのでとりあえず 3600秒に設定してみた。まあこれだと本当にアドレスが変わった場合は最低1時間は追随できないけど、その辺は目をつぶってキャッシュによる高速化を優先することにしたい。
$ cd /opt/local/etc/unbound/
$ sudo cp unbound.conf-dist unbound.conf
$ sudo vi unbound.conf
で、
[crayon]
# the time to live (TTL) value lower bound, in seconds. Default 0.
# If more than an hour could easily give trouble due to stale data.
# cache-min-ttl: 0
cache-min-ttl: 3600
[/crayon]
こんな感じ。編集後は
$ sudo launchctl stop org.macports.unbound
でプロセス再起動。stopとあるのは打ち間違いじゃないです。