内部DNSと外部DNSに役割を分割する設定

投稿者: | 2010年8月12日
Pocket

対象サーバについて

製品名 OpenBlockS 600
OS(kernel ver) Debian lenny(2.6.29)
CPU 600MHz(AMCC PowerPC 405EX)
メモリ 1GB(DDR2 SDRAM)
ストレージ 8GB(Compact Flash)

bind9の設定におけるパターン2の構成について

このページではDNSサーバ2台構成(パターン2)についてまとめています。DNSサーバ1台構成(パターン1)についてはBIND9の設定にまとめていますので参考にして下さい。

1台構成(パターン1)について詳細説明をしている内容については割愛しますので、不明な箇所はパターン1の記事を参照して下さい。

2サーバ構成

パターン2は外部サーバ(DMZに設置)と内部サーバ(LAN内部に設置)に機能を分ける構成です。

viewを使用することでLANとWANに仮想的に分割することが可能なので、ハードを分割するメリットは少ないですが、queryセッションが多い場合やセキュリティを最大限高めたい場合などには少なからず有効と思います。

細かい設定の説明についてはBIND9の設定を参照して下さい。

外部サーバの設定

named.conf

編集するファイル:/etc/bind/named.conf

# LAN内のNWアドレス
acl localnet{
        127.0.0.1;
        192.168.0.0/24;
        172.0.0.0/24;
};

include "/etc/bind/named.conf.options";
include "/etc/bind/rndc.key";

controls {
      inet 127.0.0.1 port 953
              allow { 127.0.0.1; } keys { "rndc-key"; };
};

# LAN内端末からのquery用
include "/etc/bind/named.conf.local";

# 外部の端末からのquery用
view "wan" {

        match-clients { any; }; # localnetは既にlan viewでmatchさせているためany設定とする

        allow-query { any; }; # 外部からの問い合わせ用viewのため絞らない

        recursion no; # 外部からの再帰問い合わせを拒否

        notify yes; # DNS情報の変更をSecondary DNSに通知する

        also-notify {
                123.50.202.226; # Secondary DNSのアドレス その1
                38.110.146.192; # Secondary DNSのアドレス その2
        };

        # zoneの定義(逆引きはISPにて設定されており不可)
        zone "example.jp" IN {
                type master;
                file "/etc/bind/db.example.jp"; # zoneファイルの指定
                allow-transfer  {
                        123.50.202.226;
                        38.110.146.192;
                };
        };
};

# syslogとquerylogの設定
logging {

        # syslogの設定
        channel "default-log" {
                syslog local7; # local7.infoにてsyslog出力
                severity info;
                print-time yes;
                print-severity yes;
                print-category yes;
        };

        # rndcコマンド実行時に出力されるQuerylog
        channel "default_debug" {
                file "named.run"; # rndcコマンドで出力させるログファイル名
                severity dynamic;
        };

        # 上記で設定したsyslogとquerylogの有効化(channelだけでは有効にならないため要注意)
        category default {
                "default-log";
                "default_debug";
        };

        category "lame-servers" {
                "null";
        };

};

編集するファイル:/etc/bind/named.conf.local

view "lan" {

        match-clients { localnet; }; # acl localnet(LAN内IPアドレス)に当てはまった場合は本viewを適用

        notify no; # DNS情報の変更をSecondary DNSに通知しない

        allow-query {localnet; }; # 問い合わせを受け付けるホストを指定する

        recursion yes; # LAN端末から外部ドメインの名前解決のための再帰検索を許可する

        allow-recursion { localnet; }; # 再帰的な問い合わせを受け付けるホストを指定する。

        # 内部端末からドメイン名でアクセスできるようにする
        zone "exapmle.jp" IN {
                type master;
                file "/etc/bind/db.example.jp.lan";
                allow-update { none; };
        };

        zone "localhost" {
                type master;
                file "/etc/bind/db.local";
        };

        zone "0.0.127.in-addr.arpa" {
                type master;
                file "/etc/bind/db.127";
        };

        # 外部ドメインを再帰検索するため、先ほど作成したルートゾーンファイルを指定
        zone "." {
                type hint;
                file "/etc/bind/db.root";
        };

        # 内部LANからqueryが来た時にインターネットへ逆引きしに行かないようにする設定
        zone "0.168.192.in-addr.arpa" {
                type master;
                file "/etc/bind/db.empty";
                allow-update { none; };
        };

        # DMZ上の設備の名前解決用
        zone "0.0.172.in-addr.arpa" {
                type master;
                file "/etc/bind/db.172";
                allow-update { none; };
        };
};

named.conf.options

外部サーバと内部サーバで共通の設定になります。

編集するファイル:/etc/bind/named.conf.options

options {

        # rndc querylogやrndc trace時のログ保存先を指定
        directory       "/var/cache/bind";

        # bindのバージョンを非表示(セキュリティ対応)
        version "unknown";

        # ダンプファイル(現在のDBとキャッシュの内容)の出力先パスを指定する。
        # rndc dumpdbにて出力される。
        dump-file       "/dump/named_dump.db";

        # 問い合わせの統計情報を出力するファイル名を指定
        # rndc statsにて出力される。
        statistics-file "/dump/named.stats";

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { none; };
        pid-file "/var/run/bind/run/named.pid";
};

rndcコマンドによる各種調査を実施した際のログ保存先を指定します。

ゾーンファイル

編集するファイル:/etc/bind/db.127

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
       IN      NS      localhost.
1      IN      PTR     localhost.
1      IN      PTR     www.example.jp.

編集するファイル:/etc/bind/db.empty

; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL    86400
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      localhost.

編集するファイル:/etc/bind/db.local

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
@       IN      A       127.0.0.1
@       IN      AAAA    ::1

編集するファイル:/etc/bind/db.example.jp

$TTL    86400
@       IN      SOA     ns.example.jp.  user001.open.example.jp.(
                                      2010012401 ; Serial
                                      3600       ; secondaryがゾーン情報の更新をチェックする間隔
                                      7200       ; secondaryがゾーン転送を失敗した場合に待機する間隔
                                      604800     ; secondaryがゾーンファイルを無効とみなすまでの時間
                                      3600 )     ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間
        IN NS    ns.example.jp.
        IN NS    ns1.maihama-net.com.
        IN NS    ns2.maihama-net.com.
        IN MX 10 mail-gw.example.jp.

@       IN A    111.111.111.111
ns      IN A    111.111.111.111
www     IN A    111.111.111.111
open    IN A    111.111.111.111
mail-gw    IN A    111.111.111.111

編集するファイル:/etc/bind/db.example.jp.lan

$TTL    86400
@       IN      SOA     ns.example.jp.  user001.example.jp.(
                                      2010012401 ; Serial
                                      3600       ; secondaryがゾーン情報の更新をチェックする間隔
                                      7200       ; secondaryがゾーン転送を失敗した場合に待機する間隔
                                      604800     ; secondaryがゾーンファイルを無効とみなすまでの時間
                                      100 )     ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間

        IN NS    ns.example.jp.
        IN MX 10 mail.example.jp.

@        IN A     172.0.0.2
ns       IN A     172.0.0.2
www      IN A     172.0.0.2
mail-gw     IN A     172.0.0.2
open     IN A     172.0.0.2

編集するファイル:/etc/bind/db.172

$TTL    86400
@       IN      SOA     ns.example.jp.  user001.example.jp.(
                                      2010012402 ; Serial
                                      3600       ; secondaryがゾーン情報の更新をチェックする間隔
                                      7200       ; secondaryがゾーン転送を失敗した場合に待機する間隔
                                      604800     ; secondaryがゾーンファイルを無効とみなすまでの時間
                                      3600 )     ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間
          IN    NS    ns.example.jp.
2         IN    PTR    ns.example.jp.
2         IN    PTR    www.example.jp.
2         IN    PTR    open.example.jp.
2         IN    PTR    mail-gw.example.jp.

内部サーバの設定

named.conf

編集するファイル:/etc/bind/named.conf

// LAN内のNWアドレス
acl localnet{
        127.0.0.1;
        192.168.0.0/24;
        172.0.0.0/24;
};

include "/etc/bind/named.conf.options";
include "/etc/bind/rndc.key";

controls {
      inet 127.0.0.1 port 953
              allow { 127.0.0.1; } keys { "rndc-key"; };
};

// まずLAN内の端末からのquery用
include "/etc/bind/named.conf.local";

logging {
        channel "default-log" {
                syslog local7;
                severity info;
                print-time yes;
                print-severity yes;
                print-category yes;
        };

        channel "default_debug" {
                file "named.run";
                severity dynamic;
        };

        category default {
                "default-log";
                "default_debug";
        };

        category "lame-servers" {
                "null";
        };

};

編集するファイル:/etc/bind/named.conf.local

view "lan" {

        match-clients { localnet; }; # acl localnet(LAN内IPアドレス)に当てはまった場合は本viewを適用

        notify no; # DNS情報の変更をSecondary DNSに通知しない

        allow-query {localnet; }; # 問い合わせを受け付けるホストを指定する

        recursion yes; # LAN端末から外部ドメインの名前解決のための再帰検索を許可する

        allow-recursion { localnet; }; # 再帰的な問い合わせを受け付けるホストを指定する。

        # 内部端末からドメイン名でアクセスできるようにする
        zone "exapmle.jp" IN {
                type master;
                file "/etc/bind/db.example.jp.lan";
                allow-update { none; };
        };

        zone "localhost" {
                type master;
                file "/etc/bind/db.local";
        };

        zone "0.0.127.in-addr.arpa" {
                type master;
                file "/etc/bind/db.127";
        };

        # internet上のサーバの名前解決は172.0.0.2へ転送する
        zone "." {
                type forward;
                forwarders { 172.0.0.2; };
                forward only;
        };

        # 内部LAN上の設備の名前解決用
        zone "0.168.192.in-addr.arpa" {
                type master;
                file "/etc/bind/db.192";
                allow-update { none; };
        };
};

named.conf.options

外部サーバと内部サーバで共通の設定になるため、割愛します。

ゾーンファイル

db.127、db.empty、db.localは外部サーバと内部サーバで共通の設定になるため、割愛します。

編集するファイル:/etc/bind/db.example.jp.lan

$TTL    86400
@       IN      SOA     ns2.example.jp.  user001.example.jp.(
                                      2009123001 ; Serial
                                      3600       ; secondaryがゾーン情報の更新をチェックする間隔
                                      7200       ; secondaryがゾーン転送を失敗した場合に待機する間隔
                                      604800     ; secondaryがゾーンファイルを無効とみなすまでの時間
                                      3600 )     ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間

        IN NS    ns2.example.jp.
        IN MX 10 mail.example.jp.

@        IN A     192.168.0.2
ns2      IN A     192.168.0.2
mail     IN A     192.168.0.2
close    IN A     192.168.0.2
mail-gw  IN A     172.0.0.2
www      IN A     172.0.0.2
ns       IN A     172.0.0.2
open     IN A     172.0.0.2

編集するファイル:/etc/bind/db.192

$TTL    86400
@       IN      SOA     ns2.example.jp.  user001.example.jp.(
                                      2010012401 ; Serial
                                      3600       ; secondaryがゾーン情報の更新をチェックする間隔
                                      7200       ; secondaryがゾーン転送を失敗した場合に待機する間隔
                                      604800     ; secondaryがゾーンファイルを無効とみなすまでの時間
                                      3600 )     ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間
          IN    NS    ns2.example.jp.
2         IN    PTR    ns2.example.jp.
2         IN    PTR    mail.example.jp.
2         IN    PTR    close.example.jp.
Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です