|
||
|
named.confを調整する(CentOS5)BINDのnamed.confは不要といえるほど多数の設定が施せます。ここでは割と使うかもしれない設定情報を例にします。 ・DNSフォワーディングの設定 ・自分が管理しているゾーンにだけ応答する(インターネットドメインは解決しない) ・ログファイルの出力 ・ACLでクライアント要求を制限する ・MXレコード DNSフォワーディングの設定デフォルトでは、知らないドメインはルートヒントへ問い合わせに行きます。つまり自力で遠いサーバへ接続しに行きます。しかし毎回インターネットの解決にルートヒントを使うのも、イマイチです。 通常はフォワーダに一番近い上位DNSを指定し、名前の解決を上位DNSに任せます。 forwardersを指定すると、自分がmaster以外のゾーンは常に自分をセカンダリと認識し、上位DNSへ問い合わせます。 組織のDNSは集約されることが多いので、ISPのDNSが利用できる場合などは、上位DNSを指定することで解決を代理依頼する構成が一般的です。 ※forwardersを指定するときのもっとも避けるべきは、LAN内のDNSが複雑化しA→B→C→A、のようにDNSサーバ同士の問い合わせがループする事態です。 フォワーディングには二種類があります。 1.上位DNSへ問い合わせを実施し、失敗したらルートDNSへ通常問い合わせを実施する。(デフォルト) named.conf options { directory "/var/named"; forwarders { DNS-Addr1; DNS-Addr2;}; //フォワーディングサーバを指定する forward first; }; 上位DNSサーバがダウンしていたり、ビジーで有効時間内に応答がなかった場合、「zone "."」の記述通り、あるいはBINDの宿命としてルートサーバを使用してアドレスを解決を試みます。(もちろん、実際にルートサーバへ通信できる必要があります) ※なお、forward firstはforwardersのデフォルトパラメータなので、あってもなくても動作は同じです。 長所 上位DNSがダウンしている場合でも、ルートヒントへ問い合わせるので解決の可能性がある。 短所 「存在しないドメイン」を問い合わせた場合は、二重に問い合わせが発生するのでムダがある。 「sysquery: no addrs found for root NS」エラーが大量に出力されることがある。 2.上位DNSへ問い合わせを実施し、失敗したら解決失敗を回答する。(onlyモード) named.conf options { directory "/var/named"; forwarders { DNS-Addr1; DNS-Addr2;}; forward only; }; 今度はforward onlyを設定してあるので、上位DNSでの問い合わせに失敗した場合、ルートサーバへの問い合わせは実施しません。名前は解決できなかったことになります。 (つまりzone "."のセクションは使用されいません) ・firstではエラーの出力がある ・余計な問い合わせをルートにしない ・最近は上位のDNSも安定的に運用されている、 ともろもろのことを考えれば、いまどきはforward onlyに設定しておくのが主流のようです。 自分が管理しているゾーンにだけ応答する(インターネットドメインは解決しない)DNSは外部ドメインの解決という使命を持っているため、デフォルトでインターネットドメインを解決しようとします。ですが閉じられたネットワークなど、自分が管理しているゾーン以外のドメイン解決を望まない場合は、再帰問い合わせを無効にすることでインターネットドメインの名前解決をしなくなります。 そのためにリカーションを禁止します。 named.conf options { directory "/var/named"; recursion no; }; これで再帰問い合わせをしない、つまり自身がホストしているゾーン以外の問い合わせには答えません。 フォワーダを設定してあっても、他のサーバへ問い合わせをしません。 ログファイルの出力ログ出力の定義はちょっと複雑です。チャネルを定義し、カテゴリで使用します。 named.conf logging { channel "チャネル名" { file "/var/log/ログファイル名.log" versions 3 size 5m; }; category カテゴリ { "チャネル名"; }; }; チャネル名は適当に付けます。チャネルの宣言の中に、どのレベルの情報を出力するか、現在時刻のログ出力などの動作を定義します。 categoryでカテゴリ(detabaseやqueryなどのあらかじめ決められている単語)を選択し、その中でチャネルを指定します。 名前解決クエリーを全てログへ出力する。(ファイルは5MB単位で3世代までローテート) 運用のログではなく、DNSデバッグや攻撃追跡のときに用いるものです。サーバに負荷をかけます。 logging { channel "log_queries" { file "/var/log/queries.log" versions 3 size 5m; severity info; print-time yes; print-category yes; }; category queries { "log_queries"; }; }; ゾーンの動作情報を標準エラーへ出力する。 標準エラーはBINDでデフォルトで定義されている「default_stderr」を記述します。 logging { category database { "default_stderr"; }; }; ログはsyslogを使用することもできますが、設定項目自体タイヘン多岐にわたり、にカテゴリキーワードもチャネルキーワードも複雑になりがちです。それなりに勉強する必要があります。 ACLでクライアント要求を制限するDNSへ接続してくるクライアントを制限します。特定ネットワーク内のみ許可、あるいは特定サーバのみ許可、という設定を行います。 ネットワークの制限・ホストの制限 named.conf options { directory "/var/named"; allow-query { 192.168.1/24; 192.168.2.100; }; }; ACL定義による制限 named.conf acl "lan" { 192.168.1/24; 192.168.2.100; } options { directory "/var/named"; allow-query { "lan"; }; }; また、ゾーン単位に制限することもできます。 この場合はexample.com以外のゾーンについて制限はありません。 zone "example.com" { type master; file "example.com.fwd"; allow-query { 192.168.1/24; }; }; 許可されたクライアント以外から、nslookupで試験を行います。 refusedが表示されれば制限されています。 #nslookup >server 192.168.1.99 >host1.example.com *** [192.168.1.99] can't find bind-sv.example.com: Query refused MXレコードDNSの重要な役割の一つである「メール基盤」。ゾーンにMXレコード、プリファレンス、サーバホスト(通常はAレコード)を記述することでメールの送信経路が正しく指定されます。 example.com.zone $TTL 86400 @ IN SOA bind-sv.example.com. root.example.com. ( 2011070901 //Serial 3600 //ゾーン転送の間隔 秒 300 //転送失敗時のリトライ間隔 秒 360000 //ゾーンファイルの保持時間 秒 86400 ) //他サーバでキャッシュされる時間 秒 IN NS bind-sv.example.com. IN MX 10 mail1.example.com. IN MX 20 bind-sv.example.com. bind-sv IN A 192.168.1.99 host1 IN A 192.168.1.100 mail1 IN A 192.168.1.101 BINDをリロードします。 #service named reload LAN内のクライアントから、nslookupによる試験を行います。 #nslookup >server 192.168.1.99 >set type=ptr >example.com Server: [192.168.1.99] Address: 192.168.1.99 example.com MX preference = 20, mail exchanger = bind-sv.example.com example.com MX preference = 10, mail exchanger = mail1.example.com example.com nameserver = bind-sv.example.com mail1.example.com internet address = 192.168.1.101 bind-sv.example.com internet address = 192.168.1.99 MXレコードがプリファレンスとともに表示されれば成功です。 |
|