まずは、bind専用のユーザを作成する。
# useradd -d /var/named -s /bin/false named
次に、ソースを解凍してコンパイル。スレッド対応CPUなら、--enable-threads オプションを追加すると吉。
$ tar zxvf bind-9.3.1.tar.gz
$ cd bind-9.3.1
$ ./configure --prefix=/usr/local/bind9 --enable-threads
この指定だと、named.conf は /usr/local/bind9/etc 以下、pidファイルは /usr/local/bind9/var/run 以下となる。
任意のディレクトリに指定したければ、--sysconfdir オプションと--localstatedir オプションなどを指定する。
$ make
$ su
# make install
pidファイル用のディレクトリがなければ作成する。
# mkdir -p /usr/local/bind9/var/run
# chown named /usr/local/bind9/var/run
次に、rndc-key を作成。-u でユーザ指定、-r でランダムファイルを指定できる。
-r オプションを省略するとキーボードの標準入力からランダムキーを作成する。
# /usr/local/bind9/sbin/rndc-confgen -a -u named -r /var/log/messages
# ls -al /usr/local/bind9/etc/
-rw------- 1 named root 77 Sep 6 19:41 rndc.key
できあがってればOK。この内容を named.conf に追記しなくてもとくに問題ない?(rndcファイル関連はよくわからん)
次に、ルートDNSサーバのゾーンファイルを入手する。どこでも好きなところからどうぞ。
- ftp://rs.internic.net/domain/db.cache
- ftp://rs.internic.net/domain/named.cache
- ftp://rs.internic.net/domain/named.root
- ftp://ftp.internic.net/domain/db.cache
- ftp://ftp.internic.net/domain/named.cache
- ftp://ftp.internic.net/domain/named.root
# cd /var/named
# wget ftp://ftp.internic.net/domain/named.root
# chown named named.root
あとは、/usr/local/bind9/etc/named.conf と /var/named 以下に各ゾーンファイルを用意する。
参考までに、named.conf サンプルを掲載しておく。VIEW機能によってLAN内部用とWAN用を兼ねることが可能である。
named.conf
---
acl private-net {
192.168.0.0/24; //LAN
};
acl trust-net {
AA.BB.CC.DD; //Your trusted servers
};
options {
directory "/var/named";
version "Unknown"; //Hide bind's version
query-source port 53;
notify yes;
auth-nxdomain yes;
recursion yes;
allow-query {
localhost;
private-net;
trust-net;
};
allow-recursion {
localhost;
private-net;
trust-net;
};
};
logging {
category lame-servers { null; };
category security { null;};
};
//================================================
// LAN Setting
//================================================
view "internal" {
match-clients {
localhost;
private-net;
};
zone "." {
type hint;
file "named.root";
};
zone "localhost" {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "localhost.rev";
};
//--------------------------------------
// Lunasys.Net
//--------------------------------------
zone "lunasys.net." {
type master;
file "private/lunasys.net.zone";
allow-transfer { none; };
};
//--------------------------------------
// Reverse influence
//--------------------------------------
zone "0.168.192.in-addr.arpa" {
type master;
file "private/192.168.0.rev";
allow-transfer { none; };
};
};
//================================================
// WAN Setting
//================================================
view "external" {
match-clients {
any;
};
zone "." {
type hint;
file "named.root";
};
zone "localhost" {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "localhost.rev";
};
//--------------------------------------
// Lunasys.Net
//--------------------------------------
zone "lunasys.net." {
type master;
file "lunasys.net.zone";
allow-query { any; };
allow-transfer {
AA.BB.CC.DD; //Your secondary servers
};
};
//--------------------------------------
// Reverse influence
//--------------------------------------
zone "ZZ.YY.XX.in-addr.arpa" {
type master;
file "XX.YY.ZZ.rev";
allow-query { any; };
allow-transfer { none; };
};
};
設定ファイルを一通り準備できたら(ファイルは named ユーザのみがアクセスできるよう適切に設定すること)、チェックスクリプトで構文チェック。
# /usr/local/bind9/sbin/named-checkzone lunasys.net /var/named/lunasys.net.zone
# /usr/local/bind9/sbin/named-checkconf /usr/local/bind9/etc/named.conf
named-checkconf コマンドでは、正しい named.conf ファイルの場合なにも出力されない。
それでは、いよいよ bind の起動。
# /usr/local/bind9/sbin/named -u named
# ps ax | grep named
プロセスが立ち上がっていなかったら /var/log/messages あたりを参照。
パーミッションとかを要確認。
最後に、/etc/resolv.conf を「nameserver 127.0.0.1」に修正し、各クライアントから確認して終了。
WAN側に複数のクライアントを試せる環境な方は、不特定多数から再帰クエリを許可しないように設定されているかも忘れずに!
コメントする