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サーバへ代理で問い合わせを行う
サービスを提供します。
対応バージョン
bind-9.3.2-4.1(Fedora Core 5標準)
bind-libs-9.3.2-4.1(Fedora Core 5標準)
bind-utils-9.3.2-4.1(Fedora Core 5標準)
bind-chroot-9.3.2-4.1(Fedora Core 5標準)
caching-nameserver-7.3-5.FC5(Fedora Core 5標準)
bind-libs-9.3.2-4.1(Fedora Core 5標準)
bind-utils-9.3.2-4.1(Fedora Core 5標準)
bind-chroot-9.3.2-4.1(Fedora Core 5標準)
caching-nameserver-7.3-5.FC5(Fedora Core 5標準)
インストール
初期状態でDNSサーバに必要なパッケージはインストールされています。
ここではDNSサーバのセキュリティを高めるために必要なパッケージを1つインストールします。
DVDドライブにFedora Core 5のDVD-ROMをセットし、以下のコマンドを実行します。
# mount /media/cdrom
# cd /media/cdrom/Fedora/RPMS
# rpm -ihv bind-chroot-9.3.2-4.1.i386.rpm
準備中... ########################################### [100%]
1:bind-chroot ########################################### [100%]
# cd /
# umount /media/cdrom
# cd /media/cdrom/Fedora/RPMS
# rpm -ihv bind-chroot-9.3.2-4.1.i386.rpm
準備中... ########################################### [100%]
1:bind-chroot ########################################### [100%]
# cd /
# umount /media/cdrom
設定
ここではDNSサーバが管理しているドメイン内・外の名前解決を行えるように設定します。
ドメイン内の情報については自身がホスト名・ドメイン名とIPアドレスの対応情報
(以降ゾーンデータベースという)を保持して管理します。
ドメイン外の情報についてはクライアントから問い合わせを受け付けた際に、
該当情報を管理しているDNSサーバへ代理で問い合わせを行い、
得られた結果をクライアントへ返す機能を提供します(キャッシュサーバ)。
また、イントラネットのドメインは外部へは公開する必要がないため、
外部からの問い合わせには応答しない設定とします。
DNSサーバは悪意ある攻撃の対象となるケースが多いため、その他セキュリティ上
必要な設定も行います。
(1) DNSサーバの設定
viエディタで設定ファイル(named.conf)を開き、設定を追加します。
# cd /var/named/chroot/etc/
# vi named.conf
ファイル(/var/named/chroot/etc/named.conf)# vi named.conf
※該当箇所に追加※
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
↓以下の行を追加↓
version "Unknown";
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; };
↑ここまで追加↑
(中略)
// query-source address * port 53;
};
※該当箇所に追加※
zone "0.in-addr.arpa" IN {
type master;
file "named.zero";
allow-update { none; };
};
↓以下の行を追加↓
zone "ranonet.ne.jp" IN {
type master;
file "ranonet.ne.jp.zone";
allow-update { none; };
allow-transfer { 192.168.0.12; }; ←(*1)
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "0.168.192.in-addr.arpa.zone";
allow-update { none; };
allow-transfer { 192.168.0.12; }; ←(*1)
};
↑ここまで追加↑
include "/etc/rndc.key";
(*1):セカンダリサーバを構築しない場合は記述不要
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
↓以下の行を追加↓
version "Unknown";
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; };
↑ここまで追加↑
(中略)
// query-source address * port 53;
};
※該当箇所に追加※
zone "0.in-addr.arpa" IN {
type master;
file "named.zero";
allow-update { none; };
};
↓以下の行を追加↓
zone "ranonet.ne.jp" IN {
type master;
file "ranonet.ne.jp.zone";
allow-update { none; };
allow-transfer { 192.168.0.12; }; ←(*1)
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "0.168.192.in-addr.arpa.zone";
allow-update { none; };
allow-transfer { 192.168.0.12; }; ←(*1)
};
↑ここまで追加↑
include "/etc/rndc.key";
(*1):セカンダリサーバを構築しない場合は記述不要
(2) 正引き用ゾーンデータベースの作成
独自で利用するドメインのゾーンデータベースファイルは初期状態では存在していません。
ゾーンデータベースファイルはテキストファイルですので、
まずはファイルを新規に作成し、適切なパーミッションを設定します。
その後viエディタでファイル(ranonet.ne.jp.zone)を開き、管理情報を記述します。
# cd /var/named/chroot/var/named/
# touch ranonet.ne.jp.zone
# chown named:named ranonet.ne.jp.zone
# vi ranonet.ne.jp.zone
ファイル(/var/named/chroot/var/named/ranonet.ne.jp.zone)# touch ranonet.ne.jp.zone
# chown named:named ranonet.ne.jp.zone
# vi ranonet.ne.jp.zone
$TTL 86400
ranonet.ne.jp. IN SOA svr1.ranonet.ne.jp. root.ranonet.ne.jp.
( ←実際には上の行から折り返さずに記述する
2006062300 ; Serial
7200 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ; Negative Cache TTL
)
IN NS svr1.ranonet.ne.jp.
IN NS svr2.ranonet.ne.jp. ←(*1)
IN MX 10 svr1
IN MX 20 svr2 ←(*1)
svr1 IN A 192.168.0.11
svr2 IN A 192.168.0.12 ←(*1)
pc1 IN A 192.168.0.101
pc2 IN A 192.168.0.102
pc3 IN A 192.168.0.103
www IN CNAME svr1
(*1):セカンダリサーバを構築しない場合は記述不要
ranonet.ne.jp. IN SOA svr1.ranonet.ne.jp. root.ranonet.ne.jp.
( ←実際には上の行から折り返さずに記述する
2006062300 ; Serial
7200 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ; Negative Cache TTL
)
IN NS svr1.ranonet.ne.jp.
IN NS svr2.ranonet.ne.jp. ←(*1)
IN MX 10 svr1
IN MX 20 svr2 ←(*1)
svr1 IN A 192.168.0.11
svr2 IN A 192.168.0.12 ←(*1)
pc1 IN A 192.168.0.101
pc2 IN A 192.168.0.102
pc3 IN A 192.168.0.103
www IN CNAME svr1
(*1):セカンダリサーバを構築しない場合は記述不要
(3) 逆引き用ゾーンデータベースの作成
正引きゾーンデータベースと同様に、逆引きゾーンデータベースを作成します。
手順も同様でゾーンデータベースファイルを新規に作成し、
適切なパーミッションを設定します。
その後viエディタでファイル(0.168.192.in-addr.arpa.zone)を開き、管理情報を記述します。
# cd /var/named/chroot/var/named/
# touch 0.168.192.in-addr.arpa.zone
# chown named:named 0.168.192.in-addr.arpa.zone
# vi 0.168.192.in-addr.arpa.zone
ファイル(/var/named/chroot/var/named/0.168.192.in-addr.arpa.zone)# touch 0.168.192.in-addr.arpa.zone
# chown named:named 0.168.192.in-addr.arpa.zone
# vi 0.168.192.in-addr.arpa.zone
$TTL 86400
0.168.192.in-addr.arpa. IN SOA svr1.ranonet.ne.jp.
root.ranonet.ne.jp. ( ←実際には上の行から折り返さずに記述する
2006062300 ; Serial
7200 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ; Negative Cache TTL
)
IN NS svr1.ranonet.ne.jp.
IN NS svr2.ranonet.ne.jp. ←(*1)
11 IN PTR svr1.ranonet.ne.jp.
12 IN PTR svr2.ranonet.ne.jp. ←(*1)
101 IN PTR pc1.ranonet.ne.jp.
102 IN PTR pc2.ranonet.ne.jp.
103 IN PTR pc3.ranonet.ne.jp.
(*1):セカンダリサーバを構築しない場合は記述不要
0.168.192.in-addr.arpa. IN SOA svr1.ranonet.ne.jp.
root.ranonet.ne.jp. ( ←実際には上の行から折り返さずに記述する
2006062300 ; Serial
7200 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ; Negative Cache TTL
)
IN NS svr1.ranonet.ne.jp.
IN NS svr2.ranonet.ne.jp. ←(*1)
11 IN PTR svr1.ranonet.ne.jp.
12 IN PTR svr2.ranonet.ne.jp. ←(*1)
101 IN PTR pc1.ranonet.ne.jp.
102 IN PTR pc2.ranonet.ne.jp.
103 IN PTR pc3.ranonet.ne.jp.
(*1):セカンダリサーバを構築しない場合は記述不要
(4) DNSサーバの起動ランレベル変更
OSの起動に併せてデーモンを自動起動する設定に変更します。
# chkconfig named on
以上で設定が終了しましたのでrcスクリプトを使用してデーモンを起動します。
# /etc/rc.d/init.d/named start
named を起動中: [ OK ]
named を起動中: [ OK ]
