BINDでDNSサーバを構築する
Mac OS X で DNS サーバを構築する
[表示する]Mac OS X には、DNS サーバの BIND がインストール済みですが、インストールされたままでは起動すらしません。
ただし、少し設定することで動作するようになります。(Mac OS X Server では、サーバ管理アプリケーションを使って管理します。)
Mac OS X の BIND を起動させるまでの手順
まずは named を -g オプション付きで起動させ、すべてのログを標準出力する(ターミナルに表示する)ようにして、どのようなエラーが起きているか確認してみます。
named を -g オプション付きで起動すると、フォアグランドで起動し(デーモンとして起動しない)ログを標準出力するようになります。
$ sudo named -g Password: 27-Apr-2007 11:59:48.122 starting BIND 9.3.2 -g 27-Apr-2007 11:59:48.125 loading configuration from '/private/etc/named.conf' 27-Apr-2007 11:59:48.126 /private/etc/named.conf:4: open: /etc/rndc.key: file not found 27-Apr-2007 11:59:48.126 loading configuration: file not found 27-Apr-2007 11:59:48.126 exiting (due to fatal error)
/etc/rndc.key が無いため起動できないようなので、rndc-confgen コマンドを使い /etc/rndc.key ファイルを作成します。
$ sudo rndc-confgen -a wrote key file "/private/etc/rndc.key"
ルートサーバのゾーンファイル(/var/named/named.ca)を新しいものと入れ替えます。
$ su - Password: # cd /var/named # curl ftp://ftp.rs.internic.net/domain/named.root > named.ca
named を launchctl を使い起動します。
- named を起動するだけの場合(自動起動しない)
$ sudo launchctl load -F /System/Library/LaunchDaemons/org.isc.named.plist
- named を起動し、ブート時にも自動起動するようにする。(org.isc.named.plist を書き換えている。)
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist
- named を停止する
$ sudo launchctl unload /System/Library/LaunchDaemons/org.isc.named.plist
- named を停止し、ブート時に自動起動しないようにする。(org.isc.named.plist を書き換えている。)
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.isc.named.plist
これで、Mac OS X にインストール済みの BIND を DNS キャッシュサーバとして動作させることができます。
DNS サーバへのアクセスコントロールや、ゾーン情報を管理するには、BIND の設定ファイルである /etc/named.conf を編集したり、新たにゾーン情報を記述したファイルを作成する必要があります。named.conf の記述方法
[表示する]BIND のバージョンを隠す設定
[表示する]BIND のバージョンを調べる方法
BIND のバージョンを調べるには、バージョンを調べたい BIND (named) が稼働しているサーバにログインし named コマンドを実行するか、BIND が稼働しているサーバにログインできない場合は dig コマンドを使うことで、BIND のバージョンを調べることができる。
BIND (named) が稼働しているサーバにログインできるのであれば、named コマンドを -v オプションを付けて実行するとバージョンが表示される。
$ named -v BIND 9.3.4-P1
BIND (named) が稼働しているサーバにログインできなくても、dig コマンドに次のようなオプションを付けて実行すると BIND のバージョンが表示できる。
$ dig @ネームサーバのアドレス chaos txt version.bind
コマンドの例と、表示される内容の例
$ dig @192.168.1.1 chaos txt version.bind ; <<>> DiG 9.3.4-P1 <<>> @192.168.1.1 chaos txt version.bind ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52347 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;version.bind. CH TXT ;; ANSWER SECTION: version.bind. 0 CH TXT "9.3.2" ;; AUTHORITY SECTION: version.bind. 0 CH NS version.bind. ;; Query time: 1 msec
ANSWER SECTION: の部分にバージョンが表示される。この例だとバージョンは 9.3.2 になる。
BIND のバージョンを隠す方法
BIND のバージョンを隠すには、named.conf の option{}; に次の行を追加し named を再起動する。
options { version "表示させたい文字列"; };
例えば、次のようにする。(version ""; のように何も書かない設定でもよし。)
options { version "Unknown"; };
実際に dig コマンドを使ってどのように表示されるか確認すると、ANSWER SECTION: に "Unknown" を表示されるのが確認できる。(version ""; とした場合は、"" と表示される。)
$ dig @192.168.1.1 chaos txt version.bind ; <<>> DiG 9.3.4-P1 <<>> @192.168.1.1 chaos txt version.bind ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12725 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;version.bind. CH TXT ;; ANSWER SECTION: version.bind. 0 CH TXT "Unknown" ;; AUTHORITY SECTION: version.bind. 0 CH NS version.bind. ;; Query time: 1 msec
Mac OS X で named を再起動/停止/起動する方法
Mac OS X の launchctl で named を再起動するには、次のようにする。
$ sudo launchctl stop org.isc.named
実際にはこんな感じだと思う。。。太字 の部分が入力するコマンド。
$ sudo launchctl launchd% list ← launchd で読み込まれているジョブの一覧を表示する com.apple.dashboard.advisory.fetch com.apple.dnbobserverd ... 略 ... org.isc.named ← named のジョブ名 org.isc.named を確認 ... 略 ... launchd% stop org.isc.named ← org.isc.named は常駐する設定になっているので stop すると再起動することになる。
なお、named を停止/起動するには launchctl コマンドを次のように使う。
- named を停止する
$ sudo launchctl unload /System/Library/LaunchDaemons/org.isc.named.plist
- named を起動する
$ sudo launchctl load /System/Library/LaunchDaemons/org.isc.named.plistlaunchctl コマンドについて、詳しくは LaunchDaemons (launchctl, launchd.plist) の使い方 に書いてます。