BIND 9 は named ネームサーバーを実行します。その設定によって、権威応答、再帰の提供、ゾーン転送、動的更新の受け入れが決まります。インターネットに公開する権威サーバーがオープンな再帰リゾルバーにならないよう、これらの役割は分離して扱ってください。
サーバー設定 #
named.conf はグローバルオプション、アクセス制御リスト、ゾーン、ログを定義します。最小限の権威設定では、再帰とゾーン転送を制限します。
acl trusted-recursors { 192.0.2.0/24; 2001:db8:1::/48; };
options {
directory "/var/named";
listen-on { any; };
listen-on-v6 { any; };
recursion no;
allow-transfer { none; };
minimal-responses yes;
};
zone "example.net" {
type primary;
file "zones/example.net";
allow-transfer { 192.0.2.53; };
};再帰リゾルバーには recursion yes と、クライアントに限定した allow-recursion または allow-query-cache ACL が必要です。デプロイで乱用制御を備えた公開リゾルバーを明示的に提供する場合を除き、信頼できないネットワークに再帰を公開しないでください。
ACL は allow-query、allow-recursion、allow-query-cache、allow-transfer、match-clients で再利用できます。BIND の view ステートメントは、送信元アドレス、宛先アドレス、または TSIG アイデンティティに従って、異なるゾーンおよび再帰ポリシーを提示します。
view "internal" {
match-clients { trusted-recursors; };
recursion yes;
allow-recursion { trusted-recursors; };
zone "example.net" {
type primary;
file "zones/internal/example.net";
};
};
view "external" {
match-clients { any; };
recursion no;
zone "example.net" {
type primary;
file "zones/external/example.net";
};
};ビューを有効にした場合は、クライアントから見える各ゾーンを該当するビューで定義します。最も具体的な match-clients 規則を先に置いてください。BIND は最初に一致するビューを選択するためです。
ゾーンファイル #
ゾーンファイルのレコードは次の形式に従います。
owner [TTL] [class] type rdata$ORIGIN は相対名のサフィックスを指定し、$TTL はデフォルト TTL を指定します。@ の owner は現在の origin を表します。ゾーンの頂点には SOA レコードと NS レコードが必要です。末尾にドットがない名前は $ORIGIN に対して相対的です。
$ORIGIN example.net.
$TTL 3600
@ IN SOA ns1.example.net. hostmaster.example.net. (
2026080701 7200 900 1209600 300 )
IN NS ns1.example.net.
IN NS ns2.example.net.
ns1 IN A 192.0.2.53
www IN A 192.0.2.80
docs IN CNAME www公開するゾーンを変更するたびに SOA シリアルを増分します。セカンダリサーバーはシリアルを使用して転送が必要かどうかを判断します。明示的な ACL で転送を設定し、適切な場合は TSIG で認証します。
A または AAAA レコードは名前をアドレスにマップします。CNAME は owner をエイリアスにし、その owner にある通常データと共存できません。親に NS RRset を置いて子ゾーンを委任し、委任されたネームサーバーが委任名の下にある場合は、親に in-bailiwick の A または AAAA グルーを含めます。
child IN NS ns1.child
ns1.child IN A 192.0.2.91検証と運用 #
再読み込みの前に検証します。
named-checkconf /etc/named.conf
named-checkzone example.net /var/named/zones/example.net
rndc reload example.net
dig @127.0.0.1 www.example.net A +norecurseゾーン宣言を変更した後は rndc reconfig を使用し、ゾーンデータを変更した後は rndc reload を使用します。dig で権威パスと再帰パスを個別にクエリし、ステータスフラグと authority セクションを検査し、ファイアウォールの動作が異なる場合は UDP と TCP の両方をテストします。
DNSSEC は署名済み RRset、DNSKEY の公開、親からの DS チェーンを追加します。BIND は dnssec-policy を通じて署名とキーを維持できますが、その場合はキーファイル、ロールオーバー状態、親の DS 更新、時刻同期が運用上の依存関係になります。dig +dnssec で署名済み応答を検証し、RRSIG の存在だけを有効なチェーンの証拠とみなさず、検証リゾルバーを通じてテストしてください。
named は専用の権限のないサービスアカウントとして実行し、作業ディレクトリ、キー、ジャーナルファイル、ゾーンファイルに必要な権限があることを確認します。フォアグラウンド診断実行には named -g を使用し、通常運用にはサービスマネージャーを使用します。権限を落とす前に特権ポートをバインドし、書き込み可能なディレクトリを制限し、制御チャネルのキーはサービスと承認された管理者だけが読み取れるようにします。
コメント
GitHub で閲覧・コメントする(投稿にはログインが必要です)