|
||
|
キャッシュサーバを構成する(DNSSEC対応)DNSSEC対応のキャッシュサーバを構成します。DNSSEC対応といっても、実際にはDNSSEC対応の上位DNSサーバと会話するためのサーバです。 注意すべき点は、この設定ではDNSSEC非対応の上位DNSとは正しく通信できない点です。 つまり上位DNSサーバに、ルータやFWのDNSプロキシーを指定している場合、正しく運用できません。 上位DNSサーバに、DNSEC非対応のネットワーク機器を指定すると様々な挙動をします。 ・まったく名前解決が働かない。 ・最初は正常に動作しているように見えるが、30日ほどするとBINDを再起動しないと名前解決できなくなる。 ・上位DNSサーバと通信できず、デフォルトのforward firstが働いて、タイムアウトを待ってからルートDNSを使用して名前解決をしている。だから初回の名前解決が非常に遅い、もしくは名前解決を成功したり失敗したりする。 などがあります。 上位DNSとしてFWやルータを指定したいのなら 「キャッシュサーバを構成する(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-enable yes; dnssec-validation yes; /* 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 #systemctl enable named 名前解決を許可した(allow-recursion)クライアントからnslookupなどで問い合わせを行ってみます。 正常にインターネット上の名前解決ができたでしょうか。 名前解決ができない場合、サーバ上のファイアウォールでUDP53が開放されているか、上位DNSサーバとは正常に通信できるかを確認します。 パラメータの説明 dnssec-validation yes | no | auto DNSSECでは、トラストアンカーと呼ばれる、世界中で使われているDNSの公開鍵が必要です。 BIND 9.7以前ではtrusted-keysなどを用いて、鍵ファイルを指定する必要があります。 BIND 9.8以降では鍵ファイルはBIND built-inと呼ばれて、内蔵してます。 dnssec-validation yes;を指定しておけば、trusted-keysが指定されていればそれを用い、指定されてなければ内蔵されたBIND built-inが使用されます。 dnssec-validation autoを指定すると、常にBIND built-inが使用されます。 yesを指定しておけばよいでしょう。 allow-query DNSのゾーンを有してないので、指定する必要はありません。 allow-recursion 誰からのDNS要求にも回答をするオープンリゾルバとならないよう、通常はクライアントのセグメントを制限します。 forwarders 問い合わせを転送する上位DNSサーバを指定します。 複数指定できます。 forward only | first onlyは、上位DNSサーバへ転送するだけです。そこで名前解決に失敗すると、問い合わせを諦めます。 DNSサーバが直接インターネットに通信できない場合は、onlyを指定します。 firstは、上位DNSサーバへ問い合わせを転送しますが、そこで名前解決に失敗すると今度はルートDNSサーバへ問い合わせを試みます。 より確実に問い合わせが成功しますが、存在しないドメイン名などを問い合わせた場合は、問い合わせ失敗までの時間が長くなります。 なにも指定しないと、firstが指定されたものとされます。 |
|