view

viewについて

view view_name
    [class] {
    match-clients { address_match_list };
    match-destinations { address_match_list };
    match-recursive-only yes_or_no ;
    [ view_option; ...]
    [ zone_statement; ...]
};

 

view使い方

viewはどのクライアントが問い合わせにきたかによって応答を自由に設定することができる強力な設定です。これがあることで複数のサーバを用意しなくてもスプリットDNSの機能を提供することが可能です。

各viewはサブネットやクライアント単位で定義します。viewに定義された送信元(Src)IPアドレスか、もしくは宛先(Dest)IPアドレスに従いクライアントを分類します。アドレスに関する定義が無い場合には全てのIPのクライアントに対応します。

match-clients と match-destinations はviewを選択するキーになります。また、viewはmatch-recursive-onlyを設定することも可能で、これはクライアントからの再起問い合わせにのみ応答します。viewの順番も重要で、一番初めにマッチしたviewが適用されます。

viewに設定されたzone情報は、そのview条件にマッチしたクライアントのみに適用されます。同じzoneだとしても、そのzoneに対してview毎に異なる設定がされていればクライアントには異なる応答が返ることになります。例えば internal と external のクライアントに対して別の応答を返すようなスプリットDNSを設定することが可能です。

optoinsで設定できる多くの設定も、view単位で異なるものを設定できます。view単位で設定すべきでない項目が設定された場合、その設定は無視されてデフォルトの値が適用されます。また、viewで定義されたzone設定はグローバルに記載された設定よりも優先されます。

viewではクラスを定義します。クラスなければINクラスになります。INクラスでないviewはhintゾーンを含む必要があります。
INクラスのみがビルドインのデフォルトクラスになります。view設定がnamed.confになければデフォルトviewが全クライアントにマッチし、自動でINクラスが生成されます。また、named.confの一番最初に記載されているzone設定がデフォルトviewとして認識されます。明示的にviewが設定されれば、全zoneはそのviewの配下となります。

 

view設定例

viewによってスプリットDNSを設定する典型的な設定れいはコチラ。

view "internal" {
    // This should match our internal networks.
    match-clients { 10.0.0.0/8; };
    // Provide recursive service to internal

    // clients only.
    recursion yes;

    // Provide a complete view of the example.com
    // zone including addresses of internal hosts.
    zone "example.com" {
        type master;
        file "example-internal.db";
    };
};

view "external" {
    // Match all clients not matched by the
    // previous view.
    match-clients { any; };

    // Refuse recursive service to external clients.
    recursion no;

    // Provide a restricted view of the example.com
    // zone containing only publicly accessible hosts.
    zone "example.com" {
        type master;
        file "example-external.db";
    };
};