macでBINDの設定
Tiger に元々入っている bind の設定例。
参考:http://www.atmarkit.co.jp/flinux/rensai/bind909/bind909a.html
@ITの記事を参考にして、chrootの環境を構築。1点注意は、mac の named はデフォルトでは /private/etc/named.conf を見に行くので、 シンボリックリンクをつくってやった。
# ln -s /var/named /var/named/private
named.conf設定
今回のDNSサーバは、グローバルIPが一つ、スレーブサーバーは無い設定になっている。
# rndc を使うための設定。ローカルからの接続しか受け付けない。 # 詳細はぐぐれ controls { inet 127.0.0.1 port 54 allow {any;} keys { "rndc-key"; }; }; options { # 明示的に指定 directory "/var/named"; pid-file "/var/run/named.pid"; # クエリはどこからでも受け付ける(デフォルト) allow-query { any; }; # ゾーンの転送は行わない。 allow-transfer { none; }; # ステータスや統計のダンプファイル dump-file "/var/log/named_dump.db"; statistics-file "/var/log/named.stats"; # 自分で解決できない場合の問い合わせ先。プロバイダのDNSを指定 forwarders {プライマリDNS; セカンダリDNS;}; # まずフォワーダに問い合わせ、使えなければ再帰検索を行う。(デフォルト) forward first; # 自身からのみ再帰検索を行う。 allow-recursion {127.0.0.1;}; # バージョン隠蔽 version "DNS Server"; }; # localのゾーンはデフォルトでOK。省略 # example.com のゾーン設定 zone "example.com" IN { type master; file "example.com.zone"; }; # example.com の逆引きゾーン設定 # 例えば、100.101.102.103 というIPだと、逆から指定する。 zone "103.102.101.100.in-addr.arpa" IN { type master; file "example.com.zone.rev"; };
ゾーンファイル
named.ca は最新ファイルを適切なところから持ってくる。
[ローカルのゾーン設定] localhost.zone $TTL 86400 @ 1D IN SOA @ root ( 44 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS dns.example.com. IN A 127.0.0.1
[ローカルのゾーン逆引き設定] named.local $TTL 86400 @ IN SOA example.com. root.example.com. ( 2007111902 ; Serial 3H ; Refresh 15M ; Retry 1W ; Expire 1H ) ; Minimum IN NS dns.example.com. 1 IN PTR localhost.
[example.comゾーン設定] example.com.zone $TTL 86400 @ IN SOA example.com. root.example.com. ( 2007111902 ; Serial 3H ; Refresh 15M ; Retry 1W ; Expire 1H ) ; Minimum IN NS dns.example.com. IN MX 10 mail.example.com. @ IN A XXX.XXX.XXX.XXX dns IN A XXX.XXX.XXX.XXX mail IN A XXX.XXX.XXX.XXX www IN CNAME @
[example.comゾーン逆引き設定] example.com.zone.rev @ IN SOA example.com. root.example.com. ( 2007111902 ; Serial 3H ; Refresh 15M ; Retry 1W ; Expire 1H ) ; Minimum IN NS dns.example.com. IN PTR example.com.
名前解決確認
nslookupがよく使われるが、最近は digらしい。
dig @DNSサーバ ホスト(ドメイン) [オプション] # dig @localhost www.google.com SOA # dig @localhost www.google.com MX
バージョン確認
# dig @調べるDNSサーバ chaos txt version.bind
自動起動
Tiger に bind の自動起動スクリプトは無い。適当に真似して作ってみた。ちょっと問題だったのが、chrootで動作させるため、PIDファイルの場所が異なるということだった。そのため、GetNamedPIDをコピーしてパスだけ修正。
以下のスクリプトを、/System/Lib/StartupItems/Bind に作成
#!/bin/sh ## # Bind DNS server ## . /etc/rc.common GetNamedPID () { local program="$1" local pidfile="${PIDFILE:=/var/named/var/run/${program}.pid}" local pid="" if [ -f "${pidfile}" ]; then pid=$(head -1 "${pidfile}") if ! kill -0 "${pid}" 2> /dev/null; then echo "Bad pid file $pidfile; deleting." pid="" rm -f "${pidfile}" fi fi if [ -n "${pid}" ]; then echo "${pid}" return 0 else return 1 fi } StartService () { if [ "${DNSSERVER:=-YES-}" = "-YES-" ] && ! GetNamedPID named > /dev/null 2>&1; then echo "Starting DNS server" named -u named -t /var/named fi } StopService () { if pid=$(GetNamedPID named); then echo "Stopping DNS server" kill -TERM "${pid}" else echo "named is not running." fi } RestartService () { StopService; StartService; } RunService "$1"
同じところに、StartupParameters.plist を作成
{ Description = "Bind DNS server"; Provides = ("DNS Server"); }
/etc/hostconfig に DNSSERVER=-YES- を追加して完了。