LAN内外のDNSを解決する

最終更新日時:2011-07-11 00:00:00
djbdns

概要


外部 DNS と内部(LAN 内)DNS を解決するサーバを構築します。
外部 DNS の解決には dnscache を使用し、内部 DNS の解決には dnscache から tinydns を参照することで実現します。

1サーバ内で dnscache, tinydns を稼働させる必要があるが、双方ともに53番ポートを使用する必要があります。
また、tinydns は dnscache からしか参照されることはありません。
従って、それぞれで以下の IP で Listen させることとします。

tinydns: 127.0.0.1
dnscache: 192.168.0.2(LAN 内のプライベートアドレス)

設定手順


tinydns と dnscache をインストールします。
詳細はdjbdnsを参照。
上記の Listen アドレスにて、dnscache は外部DNSが問題なく解決出来ており、tinydns は内部 DNS が問題なく解決できるところまで、設定します。
DHCPとdjbdnsを連動して内部DNSを解決する方法はdhcp_dnsをご参考。

ここまで設定できたら、あとは dnscache と tinydns を連携させるだけです。
dnscache のサーバ設定ディレクトリ(通常、/var/dnscache/root/servers/ に tinydns の情報を追加します。
内部DNSのドメインをxxx、ネットワークを 192.168.0.x とする場合には、以下を実行後、dnscache に設定を再読込させます。

 # echo 127.0.0.1 > /var/dnscache/root/servers/xxx
 # echo 127.0.0.1 > /var/dnscache/root/servers/0.168.192.in-addr.arpa


これで dnscache に対して、*.xxx や 192.168.0.x の解決リクエストを送ると、tinydns を使用するようになりますので確認します。


使用方法


DNS クライアントからは dnscache のみを参照させればOKですので、DNS サーバは 192.168.0.2 を設定すればOKです。
192.168.0.2 が外部も内部も DNS を解決します。
また、/etc/resolv.conf で search 設定することで、内部 DNS の簡略化を行うこともできるでしょう。

お問い合わせは 掲示板 にて。