DNSサーバを作りたかったらしい

問題名

  • DNSサーバを作りたかったらしい

概要

あなたは同僚から助けを求められた。彼は社内のDNSサーバの構築ログに基づいて環境構築を試みたが、テストとして実行したコマンドでは期待していた出力が行われなかったらしい。原因を調査して、エラーを解決してあげよう。

前提条件

  • ns01はmaster、ns02はslaveサーバとして機能させたい
  • トラブルに関係しない要素については変更しない

初期状態

ns02でdig @localhost red.prob.final.ictsc.netが解決できない

終了状態

  • ns02でdig @localhost red.prob.final.ictsc.netが解決できる
  • 原因が特定されて報告される
    - トラブル解決前に期待されていた動作をしている

接続情報

VM名ホスト名ユーザパスワード
ns01192.168.18.1userictsc2020
ns02192.168.18.2userictsc2020

解説

この問題は、bindが設定ファイルのエラーによって起動していませんでした。

root@ns02: ~$ systemctl status  bind9
● bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2021-02-26 08:46:44 UTC; 1s ago
     Docs: man:named(8)
  Process: 1173 ExecStop=/usr/sbin/rndc stop (code=exited, status=0/SUCCESS)
  Process: 1195 ExecStart=/usr/sbin/named -f $OPTIONS (code=exited, status=1/FAILURE)
 Main PID: 1195 (code=exited, status=1/FAILURE)
Feb 26 08:46:44 ns02 named[1195]: /etc/bind/named.conf.prob:115: writeable file '/etc/bind/slave/alice.prob.final.ictsc.net': already in use: /etc/bind/named.conf.prob:54
Feb 26 08:46:44 ns02 named[1195]: /etc/bind/named.conf.prob:120: writeable file '/etc/bind/slave/text.prob.final.ictsc.net': already in use: /etc/bind/named.conf.prob:60
Feb 26 08:46:44 ns02 named[1195]: /etc/bind/named.conf.prob:125: writeable file '/etc/bind/slave/tower.prob.final.ictsc.net': already in use: /etc/bind/named.conf.prob:66
Feb 26 08:46:44 ns02 named[1195]: /etc/bind/named.conf.prob:130: writeable file '/etc/bind/slave/home.prob.final.ictsc.net': already in use: /etc/bind/named.conf.prob:72
Feb 26 08:46:44 ns02 named[1195]: loading configuration: failure
Feb 26 08:46:44 ns02 named[1195]: exiting (due to fatal error)
Feb 26 08:46:44 ns02 systemd[1]: bind9.service: Main process exited, code=exited, status=1/FAILURE
Feb 26 08:46:44 ns02 systemd[1]: bind9.service: Failed with result 'exit-code'.

解決方法は/etc/bind/named.conf.prob のエラー部でin-viewを用いることです。例えば以下のように表記します。

view external {
    match-clients { any; };

    zone example.com {
    in-view internal;
    };

};
  • 参考
    • https://bind9.readthedocs.io/en/latest/reference.html?highlight=in-view#multiple-views

bind9.11からこの表記法でエラーが出るようになったため、この問題は参考にしていたドキュメントが古いバージョンのものだったというシナリオでした。
CentOS7で現在提供されている最新バージョンなど、bind9.11.xによっては上記エラーを無視して起動できるようになっています。

採点基準

採点において、in-viewを用いずfileのパスを変更して重複を回避している例が多くありました。この問題は背景として、DNSサーバの構築練習途中であるという設定があり、基準内での解決であれば100%の採点がされています。また、この問題は社内DNSサーバの構築ログを参考にとあるようにある程度期待された動作があります。そのため、設定ファイルを大幅に変更することによるトラブル解決前に期待されていた動作をしているを満たしていない場合は減点がされます。

  • エラーを解決してBINDを起動し、指定のコマンドによる名前解決に成功する && 原因と解決方法について回答に記述されている(100%)
    • どちらかに不足があった場合は50%とする。