Skip to main content

DNSサーバ構築の補助資料

ソフトウェアの名前

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) で採用されています。

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以外にアクセスすると、再帰問い合わせが有効になっているので、ルートサーバ.にアクセスして名前解決を行います。すべてのデータはキャッシュされます。

一時的な名前解決の失敗

warning

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

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

インタフェースの有効/無効による名前解決への影響

warning

インターネットからソフトウェアをダウンロードするときだけNATを有効にしてください。ソフトウェアのダウンロードが終了したらNATインタフェースは無効にしてください。

NATインタフェースを有効にすると/etc/resolv.confのDNS情報が、インターネットに接続するためのDNSサーバの情報に書き換えられます。 インターネット接続で使用するDNSサーバには実習で使用するexample1.jpなどのホスト名が登録されていないためにエラーになります。 もし、登録されていても、実習とは異なる情報が返ってくるため、実習は成功しません。

テキストに記載されているように、名前解決の実習を行うときはインターネット接続で使用するNAT (enp0s3) をオフにしてください。

  • 無効化: sudo nmcli connection down enp0s3
  • 有効化: sudo nmcli connection up enp0s3

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

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

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

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