BIND (日本語)
Berkeley Internet Name Domain (BIND) は Domain Name System(DNS) プロトコルを実装したソフトウェアです。
Contents |
インストール
以下の手順でインストールと、BINDを内向きDNSサーバーに仕立て上げる方法を紹介します。
公式リポジトリにある bind パッケージをインストールしてください。
必要に応じて /etc/named.conf にローカルホストからしか接続を受け付けないように、以下のようなセクションを追加してください。
listen-on { 127.0.0.1; };
設定したDNSサーバーを使うために /etc/resolv.conf を編集します。
nameserver 127.0.0.1
named デーモンを Start します。
デーモンを実行するための設定テンプレート
これはBINDで簡単な内向きDNSサーバーを作成するための手順です。この例では "domain.tld" というドメインを使用しています。 もっと詳しい説明が欲しい方は Two-in-one DNS server with BIND9 を参照してください。
1. zoneファイルを作成する
# nano /var/named/domain.tld.zone
$TTL 7200
; domain.tld
@ IN SOA ns01.domain.tld. postmaster.domain.tld. (
2007011601 ; Serial
28800 ; Refresh
1800 ; Retry
604800 ; Expire - 1 week
86400 ) ; Minimum
IN NS ns01
IN NS ns02
ns01 IN A 0.0.0.0
ns02 IN A 0.0.0.0
localhost IN A 127.0.0.1
@ IN MX 10 mail
imap IN CNAME mail
smtp IN CNAME mail
@ IN A 0.0.0.0
www IN A 0.0.0.0
mail IN A 0.0.0.0
@ IN TXT "v=spf1 mx"
$TTL(Time to Live)は全てのレコードに対応する有効期限を秒単位で定義してください。この例では7200秒(2時間)となっています。
Serialはzoneレコードを変更しnamedデーモンを再起動するたびに手動で増やしてください。忘れるとスレーブサーバーにzone情報が転送されません。 スレーブサーバーへのzone転送は最後に転送された時間から値が増えていなければ転送されません。
2. マスターサーバーを設定する
/etc/named.conf にzoneを定義してください。
zone "domain.tld" IN {
type master;
file "domain.tld.zone";
allow-update { none; };
notify no;
};
完了したらデーモンを再起動してください。
簡単なDNS転送
もしVPNへの接続などで問題が生じた場合、転送DNSサーバーを建てることによって解決することができるでしょう。BINDでは簡単です。あなたの使っているIPアドレスに従って以下のように を変更してください。
listen-on { 192.168.66.1; };
forwarders { 8.8.8.8; 8.8.4.4; };
完了したらデーモンを再起動してください。
chroot環境で実行する
chroot で実行することは必須ではありませんが、セキュリティが向上します。BIND (chroot) をみて実施してください。
BINDをDNSSECに対応させる
DNSSEC#BIND (serving signed DNS zones) を見てください。
Automatically listen on new interfaces without chroot and root privileges
Add
interface-interval <rescan-timeout-in-minutes>;
parameter into named.conf options. Then you should modify rc-script:
stat_busy "Starting DNS"
- [ -z "$PID" ] && /usr/sbin/named ${NAMED_ARGS}
+ setcap cap_net_bind_service=eip /usr/sbin/named
+ NAMED_ARGS=`echo ${NAMED_ARGS} | sed 's#-u [[:alnum:]]*##'`
+ [ -z "$PID" ] && sudo -u named /usr/sbin/named ${NAMED_ARGS}
So your /etc/rc.d/named should look like this:
stat_busy "Starting DNS"
setcap cap_net_bind_service=eip /usr/sbin/named
NAMED_ARGS=`echo ${NAMED_ARGS} | sed 's#-u [[:alnum:]]*##'`
[ -z "$PID" ] && sudo -u named /usr/sbin/named ${NAMED_ARGS}
Change user name in last line (with "... sudo -u named ...") if your named user is not 'named'.