DNSサーバ構築
解説
インターネットやイントラネットなどのTCP/IPネットワークでは
通信先を指定するのにIPアドレス(例:192.168.0.200)が使用されます。
しかしIPアドレスは数字の羅列で覚えにくいため、
通常は人間が直感的に覚えやすいホスト名とドメイン名の組み合わせ
(例:pc.ranonet.ne.jp)を使用します。
しかし実際の通信では先に説明したIPアドレスが使用されるため、
ホスト名とドメイン名の組み合わせをIPアドレスに変換する必要があります。
ここで利用されるのがDNSサーバです。
DNSサーバはホスト名・ドメイン名とIPアドレスの対応付けを管理しています。
人がインターネットを利用するとき、例えばブラウザからウェブサイトを
閲覧するときに、ブラウザのアドレス欄にホスト名・ドメイン名を入力します。
するとコンピュータはその名前を元にDNSサーバへ対応するIPアドレスを
問い合わせます。そして得られたIPアドレスを元にインターネット上の
Webサーバと通信が行われます。一般的にDNSサーバは自身が設置された
エリアのドメインのみを管理します。ここではイントラネットのドメイン
(以下の例ではranonet.ne.jp)内のサーバとPCのドメインを管理します。
また、イントラネット外のドメイン(つまりインターネットのドメイン)
については、各ドメインを管理するDNSサーバへ代理で問い合わせを行う
サービスを提供します。
インストール
初期状態でDNSサーバに必要なパッケージはインストールされています。
ここではDNSサーバのセキュリティを高めるために必要なパッケージを1つインストールします。
DVDドライブにFedora Core 5のDVD-ROMをセットし、以下のコマンドを実行します。
# cd /media/cdrom/CentOS/
# rpm -ihv bind-9.3.3-7.el5.i386.rpm
Preparing... ########################################### [100%]
1:bind ########################################### [100%]
# rpm -ihv bind-chroot-9.3.3-7.el5.i386.rpm
Preparing... ########################################### [100%]
1:bind-chroot ########################################### [100%]
Locating /var/named/chroot//etc/named.conf failed:
[■■]
# cd /
# umount /media/cdrom
設定
ここではDNSサーバが管理しているドメイン内・外の名前解決を行えるように設定します。
自身が管理しているドメインに対する名前解決要求については、
ホスト名とIPアドレスの対応情報(以降、ゾーン情報という)を元に
リゾルバに対して応答します。
自身で管理しているゾーン情報にないドメインに対する名前解決要求に対しては、
該当情報を管理しているDNSサーバへ代理で問い合わせ(以降、再起問い合わせという)を行い、
得られた結果をクライアントへ返す機能を提供します(キャッシュサーバ機能)。
また、イントラネットのドメイン情報は外部へ公開する必要がないため、
内部からの問い合わせのみに応答する設定とします。
DNSサーバは悪意ある攻撃の対象となるケースが多いため、
セキュリティを考慮した設定も行います。
(1) DNSサーバの設定
デフォルトの設定ファイルはファイル名が長く、分かりにくいので、
以前より使用されているnamed.confという名称に変更してから編集します。
viエディタでBINDの設定ファイル(named.conf)を開き、設定を追加します。
# cp -p named.caching-nameserver.conf named.conf
# vi named.conf
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
query-source port 53;
query-source-v6 port 53;
allow-query { localhost; };
};
↓変更
options {
// listen-on port 53 { 127.0.0.1; }; ←コメントアウト
// listen-on-v6 port 53 { ::1; }; ←コメントアウト
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
query-source port 53;
// query-source-v6 port 53; ←コメントアウト
allow-query { 127.0.0.1; 192.168.0.0/24; }; ←修正
allow-recursion { 127.0.0.1; 192.168.0.0/24; }; ←追加
allow-transfer { none; }; ←追加
forwarders { 192.168.1.1; }; ←追加
version "Unknown"; ←追加
};
※以下、該当箇所のみ変更※
view localhost_resolver {
match-clients { localhost; };
match-destinations { localhost; };
recursion yes;
include "/etc/named.rfc1912.zones";
};
↓変更
//view localhost_resolver { ←コメントアウト
// match-clients { localhost; }; ←コメントアウト
// match-destinations { localhost; }; ←コメントアウト
// recursion yes; ←コメントアウト
// include "/etc/named.rfc1912.zones"; ←コメントアウト
//}; ←コメントアウト
view "internal" { ←追加
match-clients { 127.0.0.1; 192.168.0.0/24; }; ←追加
match-destinations { 127.0.0.1; 192.168.0.0/24; }; ←追加
recursion yes; ←追加
include "/etc/named.zones"; ←追加
}; ←追加
(2)ゾーン定義ファイルの作成
以前のバージョンではゾーンの定義はnamed.confファイル内で行っていました。
しかしバージョン9.3.3辺りから別ファイルで定義してincludeする記述構造になっています。
以前と同じ記述方法でも構わないのですが、一応現在の標準に乗っ取って記述することにします。
ゾーンを定義するファイルは初期状態では存在していないので、
新規に作成し、適切なパーミッションを設定します。
その後viエディタでファイル(named.zones)を開き、ゾーンの定義を記述します。
# touch named.zones
# chown root:named named.zones
# vi named.zones
type master;
file "ranonet.ne.jp.zone";
allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "0.168.192.in-addr.arpa.zone";
allow-update { none; };
};
(3) 正引き用ゾーン情報の作成
独自で利用するドメインのゾーン情報ファイルは初期状態では存在していません。
ゾーン情報ファイルはテキストファイルですので、
まずはファイルを新規に作成し、適切なパーミッションを設定します。
その後viエディタでファイル(ranonet.ne.jp.zone)を開き、管理情報を記述します。
# touch ranonet.ne.jp.zone
# chown named:named ranonet.ne.jp.zone
# chmod 640 ranonet.ne.jp.zone
# vi ranonet.ne.jp.zone
@ IN SOA svp001.ranonet.ne.jp. root.ranonet.ne.jp. (
2006062300 ; Serial
7200 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ; Negative Cache TTL
)
IN NS svp001.ranonet.ne.jp.
IN MX 10 svp001
svp001 IN A 192.168.0.11
pcd001 IN A 192.168.0.101
pcd002 IN A 192.168.0.102
pcd003 IN A 192.168.0.103
pcd004 IN A 192.168.0.104
pcd005 IN A 192.168.0.105
pcn006 IN A 192.168.0.106
pcn007 IN A 192.168.0.107
www IN CNAME svp001
(4) 逆引き用ゾーン情報の作成
正引きゾーン情報と同様に、逆引きゾーン情報を作成します。
作成手順も同様でゾーン情報ファイルを新規に作成し、
適切なパーミッションを設定します。
その後viエディタでファイル(0.168.192.in-addr.arpa.zone)を開き、管理情報を記述します。
# touch 0.168.192.in-addr.arpa.zone
# chown root:named 0.168.192.in-addr.arpa.zone
# chmod 640 0.168.192.in-addr.arpa.zone
# vi 0.168.192.in-addr.arpa.zone
@ IN SOA svp001.ranonet.ne.jp. root.ranonet.ne.jp. (
2006062300 ; Serial
7200 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ; Negative Cache TTL
)
IN NS svp001.ranonet.ne.jp.
11 IN PTR svp001.ranonet.ne.jp.
101 IN PTR pcd001.ranonet.ne.jp.
102 IN PTR pcd002.ranonet.ne.jp.
103 IN PTR pcd003.ranonet.ne.jp.
104 IN PTR pcd004.ranonet.ne.jp.
105 IN PTR pcd005.ranonet.ne.jp.
106 IN PTR pcn006.ranonet.ne.jp.
107 IN PTR pcn007.ranonet.ne.jp.
(5) DNSサーバの起動ランレベル変更
OSの起動に併せてデーモンを自動起動する設定に変更します。
以上で設定が終了したのでrcスクリプトを使用してデーモンを起動します。
Starting named: [ OK ]
設定ファイル
/var/named/chroot/etc/named.conf
/var/named/chroot/etc/named.zones
/var/named/chroot/var/named/ranonet.ne.jp.zone
/var/named/chroot/var/named/0.168.192.in-addr.arpa.zone
