DNSを高速化--Snow Leopardの「BIND」を呼び起こす

海上忍
2010-11-02 19:57:18
  • このエントリーをはてなブックマークに追加

 OS Xには、クライアント版とサーバ版の2種類がある。サーバ版は基本的に「クライアント版プラスアルファ」だが、実際にはクライアント版に含まれている機能を有効化しただけ、GUIを追加しただけ、ということも少なくない。DNSサーバも、そのGUIを追加された機能の1つだ。

 逆にいうと、GUIがないことを気にしない、Terminalも苦にならないというのならば、クライアント版で事足りてしまうこともある。たとえば、OS Xに収録されているDNSサーバソフト「BIND」は、もちろん運用に関するノウハウは別として、数行のコマンドラインを実行する程度で利用できるようになる。

 OS XにDNSサーバを構えることは、それなりの意味がある。外部ではなくローカルのDNSサーバに問い合わせれば、その内容がキャッシュされ、次回以降の検索に生かされるからだ。個人ユーザーの場合、ルータの中継機能により、自分が契約するプロバイダに設置されたDNSサーバへアクセスすることが一般的だが、ローカルにキャッシュされたデータを使うぶん、名前解決のレスポンスは速くなると考えられる。筆者が試したかぎりでも、その効果は確かだ。

 Snow Leopardに収録されているDNSサーバは、BIND 9.6.0ベースだ。/usr/sbinに「named」としてインストールされているので、フォアグラウンドで動作するよう「-g」オプション付きで実行すれば起動できるはずだが(sudo named -g)、/etc/rndc.keyが存在しないために起動に失敗してしまう。

 そこで最初に以下のコマンドを実行し、/etc/rndc.key(実際には/private/etc/rndc.key)を生成しておこう。

$ sudo rndc-confgen -a
Password:
wrote key file "/private/etc/rndc.key"

 ルートネームサーバの情報を記述したファイル(ルートサーバーリストファイル)も必要だ。Snow Leopardに用意されているものは古いため、以下のとおりコマンドを実行し、最新のものに入れ替えておこう。

$ cd /var/named
$ sudo mv named.ca named.old
$ sudo curl -O ftp://ftp.rs.internic.net/domain/named.root
$ sudo mv named.root named.ca

 これで、DNSサーバを起動するための準備は完了。あとは、Terminalで「sudo named -g」とすれば起動できる……が、フォアグラウンドでの動作は実用的ではない。やはりLeopard以降のシステムらしく、launchdのエージェントとして起動させるのがスマートというもの。幸い設定ファイルはデフォルトで用意されているので、以下のとおりlaunchctlコマンドを実行すればOKだ。

$ sudo launchctl load -F /System/Library/LaunchDaemons/org.isc.named.plist

 これを停止するには、以下のコマンドラインを実行する。そのときには、ローカルにDNSサーバを置く効果を実感していることだろう。

$ sudo launchctl unload /System/Library/LaunchDaemons/org.isc.named.plist
  • 新着記事
  • 特集
  • ブログ