Skip to main content

DNSサーバ構築の補助資料

DNSサーバ3台の名前解決の仕組み

テキストの文章は少し難しいので、もう少し分かりやすくした文章を掲載します。

  1. host1.example1.jpマシンは、Web ブラウザを起動して、アドレスにwww.example2.jpを入力します。
  2. Web ブラウザは、Linux のリゾルバに問い合わせます。
  3. リゾルバは、/etc/resolv.confファイルで指定されている DNS サーバー(192.168.56.100)へ問い合わせます。
  4. 問い合わせを受けた DNS サーバーは、jp ゾーンの設定ファイルを参照し、example2.jpゾーンの DNS コンテンツサーバーの IP アドレス(192.168.56.102)を取得します。
  5. 問い合わせを受けた DNS サーバは、example2.jp ゾーンの DNS コンテンツサーバーに問い合わせします。
  6. example2.jp ゾーンの DNS コンテンツサーバーは、www.example2.jpホストの IP アドレス(192.168.56.102)を返します。
  7. クライアントから要求を受けた DNS は、結果を返します。このとき、名前解決の情報はキャッシュされます。同じ要求を受けたときはキャッシュのデータを返します。キャッシュのデータは一定時間経過するとクリアされます。
  8. Web ブラウザは、www.example2.jpに HTTP でアクセスし、Web ページを受け取って表示します。
note

192.168.56.100はコンテンツサーバとキャッシュサーバの機能を持っています。example1.jpexample2.jpは別のDNSサーバに権限を委譲しています。example1.jpexample2.jp以外にアクセスすると、再帰問い合わせが有効になっているので、ルートサーバ.にアクセスして名前解決を行います。すべてのデータはキャッシュされます。

ソフトウェアの名前

DNSサーバの構築で登場する名称が複数あり (BIND、namedとnamed-chroot) 混乱することがあります。

  • BIND: BIND (Berkley Internet Name Domain) はソフトウェア本体を提供するパッケージ名です。一般的にはbindと小文字で表記されることが多いです。バージョンを付加したbind9を使うこともあります。
  • named: BINDのDNSサーバ本体のプロセス (デーモン) の名前で、実際のプログラムファイルの名前です。
  • named-chroot: namedをchroot環境で動かすときに使用するプロセスの名前です。chrootを使用するとnamedは/var/nbamed/chroot/配下しかアクセスができなくなります。chrootはセキュリティ用のツールです。主に、RHEL系 (ReaHat Enterprise Linux) で採用されています。

JPサーバの設定

namec-chekzoneコマンドで次の警告が表示されますが、問題ありません。

sudo named-checkzone jp. /var/named/jp.zone
zone jp/IN: example1.jp/NS 'host1.example1.jp' (out of zone) has no addresses records (A or AAAA)
zone jp/IN: example2.jp/NS 'host2.example2.jp' (out of zone) has no addresses records (A or AAAA)
zone jp/IN: loaded serial 2025091801
OK

一時的な名前解決の失敗

仮想マシンを起動した直後や、サスペンドから復帰した直後に名前解決が失敗することがあります。 原因は不明ですが、サーバ同士でpingコマンドで疎通確認を行った後では成功します。

仮想マシンを起動した直後は、DNSサーバ相互でpingコマンドの疎通確認を行ってください。

キャッシュサーバのキャッシュの確認

DNSサーバでキャッシュされれている情報を確認できます。

sudo rndc dumpdb -cache # キャッシュ内容をダンプ
cat /var/cache/bind/named_dump.db # ダンプを確認(場所はOSで異なる)