BIND (日本語)

From ArchWiki
Jump to: navigation, search

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

Tango-dialog-warning.png This article or section is out of date.
Reason: initscripts have been replaced by systemd (Discuss)
Tango-dialog-warning.png

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'.

関連項目

BIND Resources