2018/4/21 CentOS7 build1708





キャッシュサーバを構成する(DNSSEC非対応)

DNSSEC非対応のキャッシュサーバを構成します。

上位DNSに、ルータやFWなどDNSプロキシー機能をもつ機器を指定する場合、こちらの構成が多いでしょう。
これらのNW機器のDNS機能は、DNSSECに対応していない可能性が高いからです。

プロバイダのDNSを指定する場合は、DNSSEC対応とすると良いでしょう。
キャッシュサーバを構成する(DNSSEC対応)」を参照してください。




1.DNSのインストール

#yum install bind-chroot bind

bind本体とbind-chroot環境をインストールします。
過去のバージョンではbind-chrootだけでbindが動作したものですが。
ここではbinr-chroot 9.9.4が入りました。



2.IPv6の問い合わせを無効にする。

 環境によりますが、もしネットワーク内にIPv4クライアントしかなく、IPv4のネットワークしか使わない予定なら、DNSのIPv6問い合わせを無効にすることで、解決速度を高めることができます。

#vi /etc/sysconfig/named

(追加)
OPTIONS="-4"




3.起動

以下のコマンドで起動します。

#systemctl start named

正常に起動すると、/etc/rndc.keyというファイルが生成されます。
これはBINDの管理ツール rndc に必要なファイルです。



※ちなみに正常に起動しない場合、なんらかの理由でrndc.keyファイルが生成されないためです。
 その場合、messagesにrndc,confもしくはrndc.keyが存在しないというエラーメッセージが出力されます。
 rndc.keyを手作業で生成したい場合は以下の手順で行います。
#rndc-confgen -a
#chmod 640 /etc/rndc.key
#chgrp named /etc/rndc.key

再度namedを起動してみます。
正常に起動できたら
#rndc status

で動作確認します。



4.コンフィグの調整

/etc/named.confを調整します。
コンフィグはバージョンによって動作が微妙に変わってくるのがクセものです。
これはBIND9.9.4(CentOS)ですから。
デフォルトのコンフィグに、赤色で追記します。

options {

      
//DNSサービスを提供する自IPアドレスを追加
        listen-on port 53 { 127.0.0.1; 192.168.1.10; };

       //IPv6問い合わせを無効jにしたいので、コメントアウト
       //
listen-on-v6 port 53 { ::1; };

        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; };

        //オープンリゾルバを意図的に禁止します
        //recursion yes;

       //「recursion yes」の代わりに名前解決を受け付けるクライアント範囲を指定
       allow-recursion {
          10.0.0.0/8;
          192.168.1.0/24;
         };


       //名前問い合わせに使用する上位DNSサーバ
      
//forwardersが指定されていなければルートDNSを使用します
       forwarders  {
            10.1.1.10;
            10.1.1.11;
         ] ;

         //上位DNSへの問い合わせ挙動を指定します
       forward only;
        //「forwarders only」 forwardersで指定した上位DNSが回答してくれなければ諦めます
        //「forwarders first」 forwardersで指定した上位DNSが回答してくれなければ
      //                        ルートDNSへ問い合わせます
  
       //DNSSECを無効にするため、noとします。
     dnssec-enable no; 
       // DNSSECを無効にするためnoとします。yesは正常動作しません。
      dnssec-validation no;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
             file "data/named.run" versions 10 size 10M;  //10世代10MBまでログを保存
                severity dynamic;
 

             print-time yes;
//ログに時刻を出力
             print-query yes; //名前解決を求めたクライアントアドレスを出力
        };

       category lame-servers { null; };   //名前解決エラーのログは出力しない
       //category queries { "default_debug"; };   クエリログを取得する場合はこちらを使用

};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";






4.サービスの再起動

#rndc stop
#systemctl start named





パラメータの説明

dnssec-validation    no

dnssec-enableをnoとして、dnssec-validationをyesとすると、DNSSECの検証を行おうとするので、正常に動作しません。
かならず揃えてnoとします。


allow-query

DNSのゾーンを有してないので、指定する必要はありません。


allow-recursion

誰からのDNS要求にも回答をするオープンリゾルバとならないよう、通常はクライアントのセグメントを制限します。


forwarders

問い合わせを転送する上位DNSサーバを指定します。
複数指定できます。


forward  only | first

onlyは、上位DNSサーバへ転送するだけです。そこで名前解決に失敗すると、問い合わせを諦めます。
DNSサーバが直接インターネットに通信できない場合は、onlyを指定します。
firstは、上位DNSサーバへ問い合わせを転送しますが、そこで名前解決に失敗すると今度はルートDNSサーバへ問い合わせを試みます。
より確実に問い合わせが成功しますが、存在しないドメイン名などを問い合わせた場合は、問い合わせ失敗までの時間が長くなります。
なにも指定しないと、firstが指定されたものとされます。





prev.gif