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; };
またNSレコードで指定されていないサーバにゾーンの更新を通知する場合はalso-notifyを使用(DDNSの項参照)
◎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をテストするファイル名
前へ トップへ