部署内DNSを立てた

お手軽に仮想化できるようになったのはいいんだけど、結構な頻度でサーバーが増える。その度にドメイン名とIPアドレスをhostsに追加するのも大変。やっとこさ、部署内DNSを立てました。
やりたいことは、単にホスト名→IPアドレスの解決だけできればいい(正引き)。でもってgoogleとかには今まで通り普通に行けるようにする。

インストール

LinuxにBIND9を入れました。

yum install bind

バージョンは「9.3.6-4.P1.el5_4.1」でした。ちょっと古いんかな。ま、気にしない気にしない。

設定

インストールしただけではおおもととなるnamed.confは作られてなかったので、適当にネットからコピーしてきてテンプレートとして使いました。
/etcに配置します。


■named.conf

acl localnetworks {
192.168.0.0/24;
};

options
{
directory "/var/named";
dump-file "data/cache_dump.db";
statistics-file "data/named_stats.txt";
memstatistics-file "data/named_mem_stats.txt";
forwarders {
会社のDNSサーバーのアドレス;
};
};
logging
{
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view internal {
match-clients { localnetworks; };
recursion yes;

zone "." {
type hint;
file "named.root";
};
zone "example.co.jp" IN {
type master;
file "example.co.jp.local.zone";
};
};


■named.root
この設定いるんかな?一応他のサイトにしたがって取ってこよう。これは/var/namedに配置。

wget ftp://rs.internic.net/domain/named.root


■example.co.jp.local.zone
あとは、ここにホスト名とIPアドレスの対を書いていく。これも/var/namedに配置。

$ORIGIN example.co.jp.
$TTL 86400
@ IN SOA red.example.co.jp. root.red.example.co.jp. (
2005052501 ; serial
3600 ; refresh 1Hour
900 ; retry 15min
604800 ; expiry 1w
86400 ; min 24Hour
)
;
IN NS red.example.co.jp.

localhost IN A 127.0.0.1
red IN A 192.168.0.2
blue IN A 192.168.0.3
yellow IN A 192.168.0.4

動作確認

Windowsの「インターネットプロトコル(TCP/IP)のプロパティ」を開く。多分普通はDHCPで設定されるので「DNSサーバーのアドレスを自動的に取得する」になっていると思われる。そこをあえて今回作ったDNSに向くように変えます。「次のDNSサーバーのアドレスを使う」を選択し、以下の設定にする。
 優先DNSサーバー:192.168.0.2
 代替DNSサーバー:会社のDNSサーバー


あとは、http://yellow.example.co.jp/app/とかやって目的のWEBアプリが確認できれば成功!

勘違い

DNSってプライマリとセカンダリを登録しますが、てっきりプライマリが管理していないようなドメイン名はセカンダリが応答するんだと思っていたら全然違った。セカンダリは、プライマリからの応答がなかった時にだけ動作するんですね。初歩的な事ですが勉強になりました。