• ホーム
  • サーバ
  • DNSサーバ(BIND)
  • プライマリマスタ
  • named.conf
  • named.conf

    BIND環境設定ファイル
    /etc/named.conf
    
    中身
    // /etc/named.conf
    // Boot file Primary Master Name Server for example.com
    // Making of 2004.xx.xx test	コメントは // か # か /*〜*/ を使う
    ■アクセスコントロールリスト(このIPからのアクセスを許可や拒否に使用する)
    acl "acl-name" { 172.16/16; 192.168.1/24; localhost; };
    	予約名	any=全てのIP、none=どのIPでもない、localhost=ローカルホスト、
    		localnets=ローカルホストが自身のNICで指定されているものと同じネットワーク
    
    ■動作全般を制御options
    options {
    	directory "/var/named";	ゾーンテーブルの保存先(以下の使用するファイルの保存先)
    	pid-file "/var/run/named/named.pid";	PIDファイルの指定。
    	recursion yes;		再帰的問合せをオンにする。外部のドメインに対して返答が可能
    				no;なら再帰的問い合わせを無効にする(権威サーバで、自ドメインの応答のみで良ければno)
    
    	[その他] 重要な項目は◎
    	◎version "8.5.3";	バージョンの問い合わせに対し答える情報(実際のバージョンを隠す)
    			例 version "None";	セキュリティ上入れたほうが良い
    	query-source address * port 1053;	ネームサーバが問い合わせを送出するポートを指定
    		標準では1023以上のポートが使用されるが、この設定により固定のポートに限定できる
    		複数のNICがある場合は、address を指定することで問合せを送出するIPを限定することも
    		※キャッシュポイズニング対策の為、最近のバージョンではポートランダマイズ化される為、
    		 これは使用しないほうが良い
    	transfer-source 192.168.0.2;	ゾーン転送(SOAと動的更新)に使用(送出)されるNICを指定可能
    	notify-source 192.168.0.2;		NOTIFYメッセージの送出に使用されるNIC(IP)を指定可能
    	◎allow-transfer { 192.168.0.3; };	ゾーン転送を許可するスレーブサーバを限定する(BIND9以降)
    		なおzoneステートメントにも記述が可能。ゾーン転送拒否=allow-transfer { none; };
    	◎allow-query { 192.168.2/24; "acl-name"; };
    		このネットワークから(DNSクエリー(要求))のみ、問合せを許可する(BIND9以降)
    		なおzoneステートメントにも記述が可能。特定のゾーン内のデータへの問合せに使用
    
    ※注意※ optionsに記述した場合、各ゾーンステートメントにもその設定が有効になる。 そのゾーンに対する外からの問合せにも答えなくなる為、必要に応じてゾーンステートメントに allow-query { any; }; 等を記述すること なおBIND9.4以降では、必ずこの設定を入れること(デフォルトはanyではなく、localhostとlocalnetsのみだから) 特に外部に公開するゾーンにはanyを忘れないこと
    ○allow-recursion { 192.168.2/24; "acl-name"; }; BIND8.2.1以降 記述したものにだけ再帰的問合せを許可する。デフォルトはany (9.4以降は違う)。 それ以外のネットワークからの問合せに対しては、非再帰的とみなす。 よって自身が持っているゾーンに対する問合せには答える。 (これを記述することで、上記のallow-query はあまり使わなくなるかも) ※オープンリゾルバにならない為にも自社の管理するネットワークからの再帰的問い合わせだけを許可すること ○allow-query-cache { localnets; localhost; }; 9.4.1-P1以降で利用可能 指定していない場合は、allow-recursionで指定した範囲と同じになる(通常はそれで良いはず) さらにallow-recursionも設定されていない場合は、allow-queryで指定した範囲と同じになる。 キャッシュした情報へのアクセスを制限。none;を指定することも可能。 (再帰的問い合わせへの制限と、キャッシュ情報へのアクセスの制限は違う) ○recursive-clients 1000; 同時に受け取る再帰的問合せ数(デフォルト1000) BIND9以上 なお問合せ1つあたり20KBのメモリを使用。1000なら20MB max-cache-size 10m; 使用メモリの制限。左の場合10Mに達したとき古いキャッシュから削除 listen-on { 192.168.0.10; 127.0.0.1; }; 待ち受けるインタフェースの指定(未指定の場合全て) listen-on { ! 192.168.0.11; }; このように待ち受けないインタフェースの指定も可能 listen-on-v6 { 2001:0db8:000a::53; }; anyも指定可能。IPv6でのアクセスを受け付ける。 blackhole { 10/8; 172.16/12; 192.168/16; }; 指定したIPからには応答しない auth-nxdomain yes AA ビットは、常に NXDOMAIN の応答にセットされます。 要は権威の無い回答であっても権威のある応答として返答します(デフォルトyes) ※AAビットとは Authoritative Answerの略。権威のあるサーバーによって回答された場合は, このビットがオンになり,キャッシュから回答された場合はオフになる }; zone "example.com" in { example.comゾーンのテーブルファイルの定義(正引きDBファイル名の設定) type master; example.comのプライマリマスターサーバである file "named.zone"; example.com.zone やdb.example.com等でもよい }; zone "3.168.192.in-addr.arpa" in { ゾーンの逆マッピング type master; 逆引きプライマリマスターサーバ file "named.rev"; 3.168.192.in-addr.arpa.revやdb.192.168.3等でもよい(逆引ファイル名) }; zone "localhost" in { localhostゾーンのプライマリマスターサーバ type master; file "localhost.zone"; 自分自身の正引き情報を得るためのファイル名 }; zone "0.0.127.in-addr.arpa" in { ローカルの逆マッピング type master; file "localhost.rev"; 127.0.0.のテーブルファイル名 }; zone "." in { ルートDNSの情報定義 type hint; ヒント。キャッシュサーバのこと file "root.cache"; トップレベルドメイン情報を読み込むファイル(ルートネームサーバ) }; □例 ゾーン情報の提供とリゾルバからの問合せに対応する。 一般的にゾーン情報は他のネームサーバから問合せに対しても答える必要がある リゾルバからの再帰的問合せには、自ネットワークからの問合せのみに答える acl "mynetwork" { 172.16/16; 172.17.10/23; }; options { directory "/var/named"; pid-file "/var/run/named/named.pid"; version ""; allow-query { "mynetwork"; }; 再帰的問合せは自ネットワークからのみ }; zone "example.jp" { type master; file "db.example.jp"; allow-query { any; }; ゾーンファイルへは全てのネットワークから許可 allow-transfer { 192.168.0.2; };ゾーン転送は指定のスレーブのみ許可 }; zone "10.17.172.in-addr.arpa" { type master; file "db.10.17.172"; allow-query { any; }; 逆引きも同様 allow-transfer { 192.168.0.1; }; };
    DDNS関連
    allow-update { 動的DNS更新を許可するネットワークやホスト 127.0.0.1; ローカルホスト 192.168.3.10; DNSサーバ 192.168.3.11; DHCPサーバ } notify yes; ダイナミックアップデートが行われた場合スレーブサーバにも通知する 上記notifyがyesの場合はNSレコードに記載されているDNSサーバには通知されるが、 それ以外のNSレコードに載せていないDNSサーバにも通知したい場合は、下記also-notifyで指定する also-notify { 192.168.3.11; } ※このステートメントを記載する場合は、正引きと逆引き両方の箇所へ記載することを忘れなく
    viewステートメント(Split DNS)
     問い合わせ元により返す返答を変える時に使う。(外部用応答と内部用応答を分けたりなど)  match-clients で実際に対象となるホストを指定する。指定しない場合はanyと同じ意味になる  注意 viewステートメントはoptionsの中には入れないで、単体で使用すること     また同ステートメント内には、aclステートメント以外はほとんど使用できる viewは上から順に判定されるので、一番上のviewのmatch-clientsはanyにしないこと ※セカンダリDNS(スレーブ)へゾーン転送している場合、先にviewでマッチした方しか  転送されない為、スレーブの方も同じ設定にしたい場合は、手動で(type masterで)  登録する必要がある。 view "test-net" { match-clients { 192.168.100/24; }; zoneとかoption系設定を書く } ○例 acl "local-net" { 127.0.0.1; 192.168.0/24; }; view "local" { match-clients { "local-net"; }; zone "example.com"{ type master; file "example.com.local.zone"; }; }; view "global" { match-clients { any; }; zone "example.com"{ type master; file "example.com.global.zone"; }; };  その他の条件  match-destinations { x.x.x.x; }; 問い合わせ先(サーバ側)のIPで条件を設定する  match-recursive-only no; (又はyes;) 再帰的問合せ要求の有無で条件を設定する
    回送(フォワーダ)の設定
     DNSの問い合わせを他のDNSサーバにまかせる(回送する)。  1、キャッシュにある場合は、それで回答  2、フォワーダに問い合わせを送る(再帰的な問い合わせで)  3、回答が得られない場合、通常通り自分で問い合わせを行う options { forwarders { 192.168.0.1; 192.168.0.2; }; forward only; 回送専用となり、上記3回答が得られない場合そこで終了になる設定 }; ○回送ゾーン ○特定のゾーンのみ回送する 例 zone "example.com" { type forward; forwarders { 192.168.0.1; 192.168.0.2; }; }; ○特定のゾーン以外を回送する 例 options { directory "/var/named"; forwarders { 192.168.0.1; 192.168.0.2; }; }; zone "example.com" { type slave; masters { 192.168.0.100; }; file "bak.example.com"; forwarders {}; }; ※forwarders {};と書くことでoptionステートメントで指定されている回送を取り消す
    DNS RRL(Response Rate Limiting)
    ※BIND9.10〜  DNSの問い合わせに対しての応答にレート制限を設ける  options{}内かview{}内に記述する rate-limit { responses-per-second 5; 秒間5クエリーまで(1 IPに付き) window 5; 指定秒数経てば制限を解除(多分)デフォルト15秒 };
    RPZ(Response Policy Zone)、DNSブロッキング
    (BIND9.8以降) キャッシュDNSサーバーにおいて、応答内容に変更を加える。DNSブロッキング等に使用 再帰検索クエリへの応答は、設定したRPZで定義したゾーンが上書き適応される なお普通にゾーンを書くのと違う点は下記2点 1.rndc reloadで反映できる(RPZじゃない場合は、rndc reconfig) 2.ゾーン転送できる ○named.confへの記載例 response-policy { zone "rpz.example.com"; }; zone "rpz.example.com" { type master; file "rpz.example.com.zone"; }; ○ゾーンファイルへの記載例 $TTL 21600 @ IN SOA localhost. nobody.localhost. ( 2012102201 ; Serial Number 10800 ; Refresh after 3 hour 3600 ; Retry after 1 hour 604800 ; Expire after 1 week 21600 ; Minimum TTL of 6 hour ) IN NS localhost. black.example.jp IN CNAME . ;NXDOMAIN(見つからない応答) www.test.jp IN CNAME tensou.example.jp. ;redirect(別のホストへ転送) ※左側は終端に"."を付けない事 ※DNSSEC検証は当然失敗するのでその点は注意
    AAAAフィルター
    (BIND9.7以降) ◎IPv6→IPv4フォールバック問題への対応策 IPv4、v6の両方に対応しているユーザがv6網を使用して接続した場合で、 名前解決がv6でできるのにv6でのインターネット接続ができない場合、 IPv4へフォールバックするので、接続するまで時間が掛かってしまう AAAAフィルターは、この問題に対応する為にv6での名前解決をできないようにする。 (もちろん可能ならv6でインターネットに接続できるようにするのが望ましい) 対策として →AAAAレコードを除去してからクライアントに応答をする。 □設定 コンパイル(configure)時に--enable-filter-aaaa オプションが必要 その上で、下記を使用した場合AAAAフィルターが有効になる options { filter-aaaa-on-v4 yes; }; クライアントからのリクエストが、IPv6による問い合わせの場合はAAAAフィルターは掛けない DNSSEC署名つき応答の場合もフィルターは掛けない 又は options { filter-aaaa-on-v4 break-dnssec; }; クライアントからのリクエストが、IPv6による問い合わせの場合はAAAAフィルターは掛けない DNSSEC署名つき応答の場合でもAAAAフィルターを掛ける □Googleは特定のIPからの問い合わせに対し、AAAAフィルターを適応している [Googleが公開しているAAAAフィルター] http://www.google.com/intl/en_ALL/ipv6/statistics/data/no_aaaa.txt
    ログ関係の設定
    logging { }; ロギングステートメント。1つだけ書くことができる file [ファイル名] versions [ローテーション数] size [最大ファイルサイズ(単位k,m,g)]; syslog [下記のsyslogの分類]; ファイルに保存するのではなくsyslogデーモンに送る場合に使う  kern、user、mail、daemon、auth、syslog、lpr、news、uucp、cron、authpriv、ftp、local0〜local7 stderr; 標準エラー出力に出す null; 出力しない severity [ロギングのカテゴリ]; どういった内容のログを取るか よく使う主なカテゴリ default チャンネルが割り当てられていない全てのカテゴリ全部 queries 問い合わせのログ lame-servers 名前解決を試みようとして発見した、間違った設定のサーバーに関するメッセージ その他のカテゴリ general そのチャンネルの以下のカテゴリに分類されない全てのメッセージ database namedの内部データベースに関するメッセージ security 要求の承認と拒否に関するメッセージ config 設定ファイルの処理に関するメッセージ resolver 名前解決に関するメッセージ。再帰的に問い合わせへの応答も含む xfer-in 他サーバーから自ホストへのゾーン転送に関するメッセージ xfer-out 自ホストから他サーバーへのゾーン転送に関するメッセージ notify 非同期びゾーン更新通知に関するメッセージ client クライアントからの要求に関するメッセージ network ネットワークに関するメッセージ upadate 動的更新に関するメッセージ cname CNAMEのメッセージ dnssec DNSSECとTSIGの処理に関するメッセージ。 os オペレーティングシステムで発生した問題 insist 内部の処理でデータに矛盾が検出された maintenance 定期メンテナンス処理 load ゾーンを読み込んだときのメッセージ response-checks "Malformed response ...", "wrong ans. name ...", "unrelated additional info ...", "invalid RR type ...", and "bad referral ...". のような、応答を確認したときのメッセージ panic サーバが内部処理の問題で停止するとき、発生した問題のカテゴリーとともに このカテゴリーに入ります unmatched どのview にもマッチしなかったメッセージ packet 送受信したパケットのダンプ print-category [yes|no]; カテゴリも出力するかどうか print-severity [yes|no]; 重要度も出力 print-time [yes|no]; 時刻も出力 channel [チャンネル名] { }; 出力先を選択 category [カテゴリ名] { チャンネル名; };出力フォーマットとseverity(重要度)を指示 必要なものだけを選んでログに出力することができます。categoryに channel を指定しなかった 場合、ログは default の category に出力されます。 デフォルトの category も定義していなかった場合は、次のデフォルトのデフォルトが使われます category default { default_syslog; default_debug; }; 例 logging { channel default-log { file "/var/log/named.log" versions 5 size 100m; 100Mbyteのログファイルを5世代保存 severity info; info=最低限のレベル。notice=ある程度詳細。debug=非常に詳細 [critical | error | warning | notice | info | debug] print-time yes; ログに時間を出力 print-category yes; ログにカテゴリを出力 }; category lame-servers { null; }; 逆引きのエラーログは捨てる category default { default-log; }; }; 例2 1件ずつ問い合わせ内容をログに残す logging { channel query_log { file "queries.log"; ログを出力するファイル名 print-time yes; }; category queries { "query_log"; }; 問い合わせ内容をログに出力するように指定 }; なおログファイルはtouch等でファイルだけは用意しておくこと
    一般例
    例 ゾーン情報の提供とリゾルバからの問合せに対応する。 一般的にゾーン情報は他のネームサーバから問合せに対しても答える必要がある リゾルバからの再帰的問合せには、自ネットワークからの問合せのみに答える acl "mynetwork" { 172.16/16; 172.17.10/23; }; options { directory "/var/named"; pid-file "/var/run/named/named.pid"; version ""; allow-query { "mynetwork"; }; 再帰的問合せは自ネットワークからのみ }; zone "example.com" { type master; file "db.example.com"; allow-query { any; }; ゾーンファイルへは全てのネットワークから許可 allow-transfer { 192.168.0.2; }; ゾーン転送は指定のスレーブのみ許可 }; zone "10.17.172.in-addr.arpa" { type master; file "db.10.17.172"; allow-query { any; }; 逆引きも同様 allow-transfer { 192.168.0.1; }; };
    文法のチェックを行う
    /usr/sbin/named-checkconf /etc/named.conf等named.confをテストするファイル名

    前へ  トップへ inserted by FC2 system