BINDのviewを用いた内部向けDNS構築メモ
社内ネットワーク向け DNS サーバを立てたくて、BIND の view を用いて設定を行ってちょっとはまったのでメモを残しておく。
環境
- BIND 9.3.6 (CentOS 5.5 標準)
viewについて
- BIND 8 から使用できる、接続条件によって見える情報を変える仕組み。以下のように記述する
view view_name {
match-clients { list; };
match-destinations { list; }
// and other options
}
実際の記述
- 内部ネットワークに 192.168.100.0/24 と 192.168.200.0/24 という2つのネットワークがあり、両方から内部 DNS を参照したい場合は acl を設定したほうが楽。
- 192.168.100.1 に対外ルータがあって、外部 DNS の解決はそちらに投げる。
- ついでに Google Public DNSも設定してみる。
- この内部ネットワーク向けDNSサーバでも、内部向けの名前解決を行いたいので、内部向けのゾーンファイルは別ファイルにして、localhost_resolver, internal の2つの view で include している。
acl "internal-acl" {
127/8;
192.168.100/24;
192.168.200/24;
};
options {
directory "/var/named";
dump-file "data/cache_dump.db";
statistics-file "data/named_stats.txt";
memstatistics-file "data/named_mem_stats.txt";
allow-query { internal-acl; };
allow-transfer { internal-acl; };
forwarders {
192.168.100.1;
8.8.8.8;
8.8.4.4;
};
};
view localhost_resolver {
match-clients { localhost; };
match-destinations { localhost; };
recursion yes;
include "/etc/named.rfc1912.zones";
include "/var/named/named.internal.zones";
};
view internal {
match-clients { internal-acl; };
match-destinations { localnets; };
recursion yes;
include "/etc/named.root.hints";
include "/var/named/named.internal.zones";
};
デバッグ
- どの view を参照して応答を返しているのか分からず苦労をしたので、障害時にはqueriesログを残しておくと良い。
logging {
channel debug {
file "data/named.debug";
severity debug;
print-category yes;
print-severity yes;
print-time yes;
};
category queries { debug; };
};