CentOS 7 のBINDをセカンダリサーバーとして設定する手順を紹介します。
こちらの記事で設定したプライマリDNSのセカンダリサーバーとして設定します。
named.confファイルを設定します。ファイルパスは "/etc/named.conf" になります。
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; };
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; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* 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";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
以下のように変更します。
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 192.168.0.108; };
listen-on-v6 {none;};
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 { any; };
allow-transfer { none; };
use-v6-udp-ports { };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion no;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* 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";
rate-limit {
responses-per-second 5;
window 5;
};
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "ipentec.com" IN {
type slave;
masters {
192.168.0.100;
}
file "slaves/ipentec.com.zone.bak";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
"listen-on"でDNSサーバーの待ち受けIPアドレスとポートを指定します。今回の例ではローカルIPアドレスを記載していますが、実際にはこのDNSサーバーのグローバルIPアドレスを入力します。
listen-on port 53 { 192.168.0.108; };
今回はIPv4ネットワークのDNSサーバーのため、IPv6を無効にします。
listen-on-v6 のセクションを"none"に変更します。
listen-on-v6 {none;};
また、use-v6-udp-ports を追記します。(この記述は無くても良いかもしれません)
use-v6-udp-ports { };
コンテンツサーバー(権威サーバ)として構築するため、すべてのIPアドレスからのクエリを受け付けます。
allow-query { any; };
allow-transfer を追加しゾーン転送をしないようにします。
allow-transfer { none; };
アタック防止のため、optionsセクションに下記のrate-limitを追記しました。
1秒に5回以上問い合わせがあり、それが5秒以上続いた場合にブロックします。
rate-limit {
responses-per-second 5;
window 5;
};
上記以外のパラメータについてはこちらのページに詳しい記述があります。
また、今回はコンテンツサーバー(権威サーバー)として構築するため、
recursion no;
としてあります。このサーバーでホストしているドメイン以外は解決しません。
今回はゾーンは1つのみとします。ipentec.comドメインの例で記述しています。
セカンダリサーバーのため、typeは"slave"としています。fileにはゾーンファイルの名称を設定します。
zone "ipentec.com" IN {
type slave;
file "slaves/ipentec.com.zone.bak";
};
今回の例では
となっており、ゾーン転送されたファイルは /var/named/slaves/ipentec.com.zone.bak に保存されます。slavesを省略してfile "ipentec.com.zone.bak"と記述した場合、/var/named ディレクトリの直下に書きこむことになり、/var/named にパーミッションが設定されていた場合でも、書き込みができない状態になることがあります。マスターから転送されるゾーン情報は /var/named/slaves 以下に書きこむように file セクションの先頭には"slaves" を付加しておく必要があります。
プライマリサーバーから取得したDNSレコードを保存できるようにするために、/var/named の所有者をnamedを起動しているユーザーに変更します。(デフォルトではnamedユーザー)
下記のコマンドを実行します。