LAN内外のDNSを解決する
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 の簡略化を行うこともできるでしょう。