ISC BINDのView定義方法


Vers.8.x 以降のISC BINDは、view文を使用して、aclの設定条件にしたっがってゾーン設定を切り替えることができます。この機能を使うと、NATを使ってサーバを外部公開している場合など、DNSサーバのゾーン管理を一本化することができます。

クライアントのアドレスでゾーン情報を切り替える

viewの設定は、bindの設定ファイルbind.confに記述します。以下は、DNSクエリーのソースIPアドレスを基に、インターネットからのDNS参照とLANからのDNS参照を識別することによって、異なるゾーン情報を返送する場合のbind.confの設定のポイントを示しています。

“view”は、特定の条件に合致したクエリに対してのみ適用される設定を定義する手段です。以下の形式で定義します。

view {
     match-clients { <対応するacl設定の定義名>; };
     ・・・
}

VIEWの利用例

以下の例は、(1)プライベートネットワーク,(2)DMZネットワーク,(3)その他(=外部ネットワーク)をacl文で定義し、それぞれに対応する設定をそれぞれ、viewで別々に定義する際のbind.confへの記載の概容を示しています。

// プライベートネットワーク, DMZネットワークの識別条件をACLで定義
acl privatenet{
     192.168.0.0/16;
     127.0.0.1/32;
};
acl dmznet {
     10.0.0.1/8;
};
options {
    //全体的なオプションの設定
    ….
};
logging {
     // ロガーの定義
    ….
};

view internal {
     match-clients { privatenet; };
     allow-query { privatenet; };
    // zone定義その他の設定 (プライベートネットワーク用
     ….
    // eis.co.jpをプライベートネットワークから参照するときのzone情報
    zone “eis.co.jp” IN {
         type master;
         file “eis.co.jp_private.zone”;
         ….
    };
};
view dmz {
    match-clients { dmznet; };
    allow-query { dmznet; };
    // zone定義その他の設定(DMZネットワーク用)
     ….
    // eis.co.jpをDMZネットワークから参照するときのzone情報
    zone “eis.co.jp” IN {
        type master;
        file “eis.co.jp_dmz.zone”;
         ….
    };
};

view external {
     match-clients { any; };
     allow-query { any; };
     // zone定義その他の設定(プライベートネットワーク以外の(=外部)ネットワーク用)
     ….
     // eis.co.jpを外部ネットワークから参照するときのzone情報
    zone “eis.co.jp” IN {
        type master;
        file “eis.co.jp.zone”;
        ….
     };
};

eis.co.jpドメインの情報は、DNSクライアントの所属するネットワークの違いにより、それぞれ別々なZONE定義ファイルの内容に基づいて提供されます。たとえばDMZに設置されたWEBサーバ WEB1.EIS.CO.JPのホストアドレスが10.0.0.200で、NATによってアドレスnnn.nnn.nnn.nnnで外部に公開されているとします。これに対応するには各viewに対応したzoneファイルでweb1.eis.co.jpを以下のように定義しておきます。

【ファイルeis.co.jp_private.zone】

web1.eis.co.jp. IN A 10.0.0.200

【ファイルeis.co.jp_dmz.zone】

web1.eis.co.jp. IN A 192.168.0.200

【ファイルeis.co.jp.zone】

web1.eis.co.jp. IN A nnn.nnn.nnn.nnn

aclの評価には「ファースト・マッチ」のルールが適用されます。つまり、bind.confに列挙された一連のview定義の中のmatch-clients定義がviewの順番とおりに検査され、最初に合致したviewが適用されて、以後のviewは無視されます。上記の例で、”external”のアドレス条件はany(すべてのアドレス)とされていますが、たとえば192.168.0.1や127.0.0.1/8は、それ以前に”internal”のアドレス条件に合致していますので、”internal”のルールが適用された時点で評価が終了し、”external”の評価は行われません。

 

2009年7月5日 | カテゴリー : DNS, BIND | 投稿者 : eurotec