FreeBSD/BIND8

BIND8を使う

BIND8を使いDNSサーバを立ててみる

  1. ソースを持ってくる
  2. ソースの展開
  3. インストール
  4. 設定ファイルを編集
  5. /etc/namedbの編集
  6. 各ゾーンファイルの編集
  7. 起動する
 

ソースを持ってくる

ISC http://www.isc.org より最新のtarballをダウンロードする。
最新はbind8.4.6(2005年6月3日現在)

> wget ftp://ftp.isc.org/isc/bind/src/8.4.6/bind-src.tar.gz

ソースの展開

> tar zxvf bind-src.tar.gz

インストール

> cd ./src
> make  
> su
# make install

設定ファイルを編集(resolv.cnf,host.conf,hosts)

▼ネームサーバの問い合わせ順を設定する

# vi resolv.conf
---------------------------------
domain	s-matsui.com
nameserver	127.0.0.1
nameserver	xxx.yyy.zzz.com
nameserver	aaa.bbb.ccc.ne.jp
---------------------------------

▼hostsを設定する

#vi /etc.hosts
---------------------------------
::1                     localhost.仮名.ne.jp localhost
127.0.0.1              localhost.仮名.ne.jp localhost
192.168.1.2            ns.仮名.ne.jp ns
192.168.1.2            ns.仮名.ne.jp.
---------------------------------

▼/etc/host.conf編集。

hostsとbindとnisとどれを先に検索して名前解決するか。
# vi /etc/host.conf
---------------------------------
# $FreeBSD: src/etc/host.conf,v 1.6 1999/08/27 23:23:41 peter Exp $
# First try the /etc/hosts file
hosts
# Now try the nameserver next.
bind
# If you have YP/NIS configured, uncomment the next line
# nis
---------------------------------

/etc/named.confの設定

記述が4つの部分に分かれているのがわかるかと思います。
最初が、ローカルアドレスの正引きファイル定義、以降、順に、ローカルアドレスの逆引きファイル定義、
グローバルアドレスの正引きファイル定義、グローバルアドレスの逆引きファイル定義です。

allow-update、allow-transfer、allow-query などと記述しているところは、その正引き~逆引きを誰に許可するかの定義です。
ローカルアドレスの部分は、外から見えないようにしなければならないので、許可するアドレスを
自分の管理しているアドレスの範囲内だけにしてあります。
逆に、グローバルアドレスの部分は、インターネット上で正規に送受信するためのものですから
世界中どこからでも見えるようにしてあります。

注意して欲しいのは、逆引きファイルの定義の zone 行の部分です。逆引き用ですから、

IPアドレスを逆に記述します。
逆といっても、数字を完全に逆にするわけではないです。初心者がよく陥る間違いなのですが、
ローカルを見ればわかるかと思いますが 192.168.0.0 の逆を 0.168.192と書いてあります。
これはローカルアドレスを 192.168.0.0 から 192.168.255.255 まで使うわけなので、
0.0.168.192 とは書いていないのです。
また、4つずつに区切った部分を逆転させるだけなので、決して 0.861.291 などとすべての数字を
反対から書いてはいけません。

options {
    directory "/etc/namedb";
};

zone "." {
    type hint;
    file "named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
    type master;
    file "localhost.rev";
};

zone "local.仮名.ne.jp" {
    type master;
    file "local.zone";
    allow-transfer {
        127.0.0.1;
        xxx.yyy.zzz.0/29;
        192.168.0.0/24;
    };
    allow-query {
        127.0.0.1;
        xxx.yyy.zzz.0/29;
        192.168.0.0/24;
    };
};

zone "0.168.192.in-addr.arpa" {
    type master;
    file "local.rev";
    allow-transfer {
        127.0.0.1;
        xxx.yyy.zzz.0/29;
        192.168.0.0/24;
    };
    allow-query {
        127.0.0.1;
        xxx.yyy.zzz.0/29;
        192.168.0.0/24;
    };
};

zone "仮名.ne.jp" {
    type master;
    file "仮名.zone";
    allow-update   { none; };
    allow-transfer { any; };
    allow-query    { any; }; 

};

zone "0.zzz.yyy.xxx.in-addr.arpa" {
    type master;
    file "仮名.rev";
    allow-update   { none; };
    allow-transfer { any; };
    allow-query    { any; };
};

各ゾーンファイルの作成

bindはアプリケーション名はBINDですが、実際のプログラムの名前はnamedと言います。
それでBIND8.xでは環境設定ファイルは/etc/namedb/というディレクトリの配下にある以下のファイルです。
/etc/namedb/named.conf ゾーンファイルのとアドレスの定義づけ
/etc/namedb/localhost.rev ループバックアドレスの逆引き定義ファイル
/etc/namedb/local.zone ローカルアドレスの正引き定義ファイル
/etc/namedb/local.rev ローカルアドレスの逆引き定義ファイル
/etc/namedb/仮名.zone グローバルアドレスの正引き定義ファイル~ /etc/namedb/仮名.rev グローバルアドレスの逆引き定義ファイル

実際に、ゾーンファイルや設定ファイルを記述するのはこのディレクトリになります。
これはOSの導入時に既に作成され、named.conf named.root の2つの設定ファイルと、
リバースを作成するためのファイル3つが用意されています。
▼localhost.revの作成

# cd /etc/namedb
# sh make-localhost

最初に行うことは、上記のようにシェルを実行し、localhost.rev 等を自動生成させることです。
生成されれば、プロトのデータとシェルは不要になるので削除してしまいましょう。

# rm PROTO.localhost-v6.rev PROTO.localhost.rev make-localhost

▼mydomain.co.jp.revファイル

$TTL 3600
@       IN      SOA     vaio.mydomain.co.jp. root.mydomain.co.jp.  (
                                2000120901  ; Serial
                                3600        ; Refresh
                                300         ; Retry
                                3600000     ; Expire
                                3600 )      ; Minimum
;
        IN      NS      vaio.mydomain.co.jp.
;
1       IN      PTR     vaio.mydomain.co.jp.
11      IN      PTR     Dynabook.mydomain.co.jp.
15      IN      PTR     ValueStar.mydomain.co.jp.
20      IN      PTR     ThinkPad.mydomain.co.jp.
99      IN      PTR     BIBLO.mydomain.co.jp.
100     IN      PTR     AccessPoint.mydomain.co.jp

▼mydomain.co.jp.zoneファイル

$TTL 3600
@ IN SOA vaio.mydomain.co.jp. root.mydomain.co.jp. (
                                2000120901  ; Serial
                                3600        ; Refresh
                                300         ; Retry
                                3600000     ; Expire
                                3600 )      ; Minimum
;
                   IN      NS      vaio.mydomain.co.jp.
;
Dynabook          IN      A       192.168.1.11
ValueStar          IN      A       192.168.1.15
ThinkPad           IN      A       192.168.1.20
BIBLO              IN      A       192.168.1.99
AccessPoint        IN      A       192.168.1.100
vaio               IN      A       192.168.1.1

www                IN      CNAME   vaio.mydomain.co.jp.

起動する

設定が完了したら起動する

# /usr/sbin/ndc start

▼サーバ起動時に起動するようシェルを用意する。

# vi /usr/etc/rc.d/bind.sh
---------------------------------------------
/usr/sbin/ndc start
---------------------------------------------
  • BINDのバージョン確認
    matsui@vaio$ dig CHAOS version.bind TXT
    
    ; <<>> DiG 8.4 <<>> CHAOS version.bind TXT
    ;; res options: init recurs defnam dnsrch no-nibble2
    ;; got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44825
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    ;; QUERY SECTION:
    ;;      version.bind, type = TXT, class = CH
    
    ;; ANSWER SECTION:
    VERSION.BIND.           0S CH TXT       "8.4.5-REL"
    
    ;; Total query time: 2 msec
    ;; FROM: vaio.mydomain.co.jp to SERVER: 192.168.1.1
    ;; WHEN: Sat Jun  4 15:05:31 2005
    ;; MSG SIZE  sent: 30  rcvd: 64