更新日:2008/11/11

環境構築

イントラネット システム開発

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をセットし、以下のコマンドを実行します。

# mount /dev/cdrom /media/cdrom
# 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)を開き、設定を追加します。

# cd /var/named/chroot/etc/
# cp -p named.caching-nameserver.conf named.conf
# vi named.conf

ファイル名:/var/named/chroot/etc/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)を開き、ゾーンの定義を記述します。

# cd /var/named/chroot/etc/
# touch named.zones
# chown root:named named.zones
# vi named.zones

ファイル名:/var/named/chroot/etc/named.zones
zone "ranonet.ne.jp" IN {
        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)を開き、管理情報を記述します。

# cd /var/named/chroot/var/named/
# touch ranonet.ne.jp.zone
# chown named:named ranonet.ne.jp.zone
# chmod 640 ranonet.ne.jp.zone
# vi ranonet.ne.jp.zone

ファイル名:/var/named/chroot/var/named/ranonet.ne.jp.zone
$TTL 86400
@       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)を開き、管理情報を記述します。

# cd /var/named/chroot/var/named/
# 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

ファイル名:/var/named/chroot/var/named/0.168.192.in-addr.arpa.zone
$TTL 86400
@       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の起動に併せてデーモンを自動起動する設定に変更します。

# chkconfig named on

 以上で設定が終了したのでrcスクリプトを使用してデーモンを起動します。

# /etc/rc.d/init.d/named start
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

■目次タイトル■
■目次ボディ■
■広告■
■■■ 当サイトは Internet Explorer 6 と Mozilla Firefox 3.0 で動作確認済みです。 ■■■