# BIND (日本語)

Berkeley Internet Name Domain (BIND) は Domain Name System(DNS) プロトコルを実装したソフトウェアです。

## インストール

以下の手順でインストールと、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'.

## 関連項目

- BIND (chroot)

## BIND Resources

- BIND 9 DNS Administration Reference Book
- Pro DNS and BIND
- Internet Systems Consortium, Inc. (ISC)
- DNS Glossary

Category:

- Domain Name System (日本語)