2011年11月27日 更新
現在、多くの企業や大学、官庁など多くの組織でインターネットを使い、メールやWebサーバの公開をしています。
各組織に置かれたこれらのサーバとの通信では、サーバ名としてFQDN名(ex. "www.example.co.jp")を使っていることでしょう。 このとき、自分のサイトのDNSに障害が発生したらどうでしょう。 相手のサーバやクライアントでは、こちらのサーバ名に対応するIPアドレスが取得できなくなり、メールやWebアクセスが失敗し、業務に支障がでるかも知れません。 また、自分の組織からも相手のサーバが探せなくなり、同じくアクセスに失敗することとなります。
このような障害は、DNSを冗長化させておくことで避けることが可能です。
DNSでは最初に構築した自サイトのDNSをプライマリ(主)として、そのコピー情報を持ったセカンダリ(副)DNSを複数構築する事が可能です。
また、セカンダリDNSはインターネット上の他の組織、たとえばプロパイダのセカンダリDNSを利用することで、自分の組織の回線障害の状態でもDNSを他の組織が利用できる構成を取ることも可能です。
セカンダリDNSの配置構成は一般的には次のようになります。
インターネット公開用のDNSの場合、その配置場所はインターネットからアクセスできるセグメント、即ち、インターネットLAN上かDMZ LANに配置するのが一般的で。
なお、ファイアーウォールのポートフォワーディング機能によって、内部LANにDNSを配置する構成も可能ですが、セキュリティ上、リスクが高くなることに注意が必要です。
セカダリDNSの配置する場合の設定は以下のようになります。 強調文字の部分が、セカンダリDNSのために新たに定義した部分になります。なお、プライマリDNSサーバの設定内容は2章での設定例とします。
自組織のセカンダリDNSの情報を、レジストラに登録する必要はありません。(登録出来る場合には、登録しても良いです。) また、プロパイダのセカンダリDNSのIPアドレスについては、原則知っている必要はありませんが、セキュリティのためプライマリの情報をセカンダリに転送する場合の相手を限定するためにIPアドレスを指定する場合には、nslookupなどを使って相手先サーバを調べてください。
取得したIPアドレスの範囲 202.xxx.yyy.0 - 202.xxx.yyy.15 DNSサーバに割り当てる固定IPアドレス 202.xxx.yyy.2(プライマリ)
202.xxx.yyy.3(セカンダリ)NICから取得したドメイン名 正引き example.co.jp 逆引き 16.yyy.xxx.202.in-addr.arpa NICに申請したDNSサーバの正式(FQDN)名 ns.example.co.jp セカンダリDNSサーバの正式(FQDN)名 ns2.example.co.jp プロパイダのセカンダリセカンダリDNSサーバの正式(FQDN)名 ns.isp.ne.jp
(210.200.xxx.10)DNSに登録する自社のメールサーバ名 mx.example.co.jp メールサーバのIPアドレス 202.xxx.yyy.5 プロパイダのDNS dns1.isp.ne.jp (210.200.xxx.5)
dns2.isp.ne.jp (210.200.xxx.6)
セカンダリDNSの構築に際しては、
という作業が必要になります。
プライマリDNSには、”セカンダリDNSが追加された”ことを定義する必要があります。 また、セカンダリDNSにデータを渡せるように設定が必要です。
ⅰ) Redhat ES5(CentOS 5)の場合
- セカンダリDNSを立てる場合、プライマリDNS側での設定は以下のファイルに行います。
目的 保存場所 従来の場所 BINDの動作に関する基本の設定ファイル /var/named/chroot/etc/named.conf /etc/named.conf DNSのゾーン定義ファイルの保存場所 /var/named/chroot/var/named/* /var/named/* 正引きファイル db.example.co.jp /var/log/messages 逆引きファイル db.example.co.jp -
- 設定ファイルの編集
RedHatでは、プライマリDNSの以下の部分を修正します。
(/var/named/chroot/etc/named.confの内容)
//
options
{
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
// Put files that named is allowed to write in the data/ directory:
directory "/var/named"; // the default
dump-file "data/cache_dump.db";
statistics-fil "data/named_stats.txt";
memstatistics-file "data/named_mem_stats.txt";
// listen-on-v6 { any; };
auth-nxdomain no; # conform to RFC1035
allow-transfer {
localnets ;
202.xxx.yyy.3 ; # ns2からの転送要求を可能にする。
210.200.xxx.10 ; # プロパイダからの転送要求を可能にする。
};
// forwarders { # forwardersの設定は、DNSが直接ルートDNSに参照にいけない場合設定する
// 210.200.xxx.5 ;
// 210.200.xxx.6 ;
// };
};
//
logging
{
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
//key ddns_key
//{
// algorithm hmac-md5;
// secret "use /usr/sbin/dns-keygen to generate TSIG keys";
//};
view "external"
{
match-clients { any; }; # // All Clients
match-destinations { any; }; # // All Interface
recursion no;
// all views must contain the root hints zone:
include "/etc/named.root.hints";
zone "example.co.jp" {
type master;
allow-query { any; };
file "db.example.co.jp";
};
zone "16.yyy.xxx.202.in-addr.arpa" {
type master;
allow-query { any; };
file "db.202.xxx.yyy";
};
};
(/var/named/chroot/var/named/db.example.co.jpの内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030901 ; Serial
3H ; Refresh(3 hour)
15M ; Retry(15 minutes)
1W ; Expire(1 week)
3600 ) ; Negative Cache TTL(1 hour)
;
@ IN NS ns.example.co.jp.
@ IN NS ns2.example.co.jp.
@ IN NS ns.isp.ne.jp.
@ IN MX 10 mx.example.co.jp.
*.example.co.jp. IN MX 10 mx.example.co.jp.;
ns IN A 202.xxx.yyy.2
ns2 IN A 202.xxx.yyy.3
mx IN A 202.xxx.yyy.5;
(/var/named/chroot/var/named/db.202.xxx.yyyの内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030901 ; Serial
3H ; Refresh(3 hour)
15M ; Retry(15 minutes)
1W ; Expire(1 week)
3600 ) ; Negative Cache TTL(1 hour)
;
@ IN NS ns.example.co.jp.
@ IN NS ns2.example.co.jp.
@ IN NS ns.isp.ne.jp.;
2 IN PTR ns.example.co.jp.
3 IN PTR ns2.example.co.jp.
5 IN PTR mx.example.co.jp.;
- BINDをシステム起動時に自動的に起動する
# chkconfig named on
ⅱ) Debian 4.x(Ubuntu 8.x)の場合
- セカンダリDNSを立てる場合、プライマリDNS側での設定は以下のファイルに行います。
目的 保存場所 従来の場所 named.confにおけるoptin部 /etc/bind/named.conf.options ←同 DNSのゾーン定義ファイルの保存場所 /var/cache/bind/* ←同 正引きファイル db.example.co.jp - 逆引きファイル db.202.xxx.yyy -
- 設定ファイルの編集
(/etc/bind/named.conf.options の内容)
options {
directory "/var/cache/bind";
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
allow-query { any; };
allow-transfer {
localnets ;
202.xxx.yyy.3 ; # ns2からの転送要求を可能にする。
210.200.xxx.10 ; # プロパイダからの転送要求を可能にする。
};
// forwarders { # forwardersの設定は、DNSが直接ルートDNSに参照にいけない場合設定する
// 210.200.xxx.5 ;
// 210.200.xxx.6 ;
// };
};
(/var/cache/bind/db.example.co.jpの内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030901 ; Serial
3H ; Refresh(3 hour)
15M ; Retry(15 minutes)
1W ; Expire(1 week)
3600 ) ; Negative Cache TTL(1 hour)
;
@ IN NS ns.example.co.jp.
@ IN NS ns2.example.co.jp.
@ IN NS ns.isp.ne.jp.
@ IN MX 10 mx.example.co.jp.
*.example.co.jp. IN MX 10 mx.example.co.jp.;
ns IN A 202.xxx.yyy.2
ns2 IN A 202.xxx.yyy.3
mx IN A 202.xxx.yyy.5;
(/var/cache/bind/db.202.xxx.yyyの内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030901 ; Serial
3H ; Refresh(3 hour)
15M ; Retry(15 minutes)
1W ; Expire(1 week)
3600 ) ; Negative Cache TTL(1 hour)
;
@ IN NS ns.example.co.jp.
@ IN NS ns2.example.co.jp.
@ IN NS ns.isp.ne.jp.;
2 IN PTR ns.example.co.jp.
3 IN PTR ns2.example.co.jp.
5 IN PTR mx.example.co.jp.
;
ⅲ) Windows 2000/2003の場合
- セカンダリDNSを立てる場合、プライマリDNS側での設定は以下のファイルに行います。
目的 保存場所 従来の場所 BINDの動作に関する基本の設定ファイル c:\windows\system32\etc\named.conf - DNSのゾーン定義ファイルの保存場所 c:\windows\system32\etc\* - 正引きファイル db.example.co.jp.txt - 逆引きファイル db.202.xxx.yyy.txt -
- 設定ファイルの編集
(c:\windows\system32\etc\named.confの内容)
//
options
{
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
directory "C:\Windows\system32\dns\etc"; // the default
// dump-file "cache_dump.db";
// statistics-fil "named_stats.txt";
// memstatistics-file "named_mem_stats.txt";
// listen-on-v6 { any; };
auth-nxdomain no; # conform to RFC1035
allow-transfer {
localnets ;
202.xxx.yyy.3 ; # ns2からの転送要求を可能にする。
210.200.xxx.10 ; # プロパイダからの転送要求を可能にする。
};
// forwarders { # forwardersの設定は、DNSが直接ルートDNSに参照にいけない場合設定する
// 210.200.xxx.5 ;
// 210.200.xxx.6 ;
// };
empty-zones-enable no;
};
//
logging
{
channel default_debug {
file "named.run";
severity dynamic;
};
};
//key ddns_key
//{
// algorithm hmac-md5;
// secret "use /usr/sbin/dns-keygen to generate TSIG keys";
//};
view "external"
{
match-clients { any; };
match-destinations { any; };
recursion no;
// all views must contain the root hints zone:
zone "." IN {
type hint;
file "named.root.txt";
};
include "named.rfc1912.zones.txt";
zone "example.co.jp" {
type master;
allow-query { any; };
file "db.example.co.jp.txt";
};
zone "16.yyy.xxx.202.in-addr.arpa" {
type master;
allow-query { any; };
file "db.202.xxx.yyy.txt";
};
};
(/var/named/chroot/var/named/db.example.co.jp.txt の内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030901 ; Serial
3H ; Refresh(3 hour)
15M ; Retry(15 minutes)
1W ; Expire(1 week)
3600 ) ; Negative Cache TTL(1 hour)
;
@ IN NS ns.example.co.jp.
@ IN NS ns2.example.co.jp.
@ IN NS ns.isp.ne.jp.
@ IN MX 10 mx.example.co.jp.
*.example.co.jp. IN MX 10 mx.example.co.jp.;
ns IN A 202.xxx.yyy.2
ns2 IN A 202.xxx.yyy.3
mx IN A 202.xxx.yyy.5;
(/var/named/chroot/var/named/db.202.xxx.yyy.txt の内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030901 ; Serial
3H ; Refresh(3 hour)
15M ; Retry(15 minutes)
1W ; Expire(1 week)
3600 ) ; Negative Cache TTL(1 hour)
;
@ IN NS ns.example.co.jp.
@ IN NS ns2.example.co.jp.
@ IN NS ns.isp.ne.jp.;
2 IN PTR ns.example.co.jp.
3 IN A ns2.example.co.jp.
5 IN PTR mx.example.co.jp.;
セカンダリDNSの構築はプライマリDNSのときと同じ内容となります。
ⅰ) Redhat ES5(CentOS 5)の場合
- BINDのインストール方法
# yum install bind bind-utils
- BINDで利用する設定ファイル
Redhat(CentOS)では、デフォルトでセキュリティ強化の為にBINDの動作はchroot環境化(通称、牢獄環境)にて実行されるようになりました。 このため、BINDに関する各種設定ファイルは従来の場所ではなく /var/named/chroot 下の各ディレクトリに置かれたものを使うようになっています。
セカンダリDNSでは以下の設定ファイルを編集します。
目的 保存場所 従来の場所 BINDの動作に関する基本の設定ファイル /var/named/chroot/etc/named.conf /etc/named.conf DNSのゾーン定義ファイルの保存場所 /var/named/chroot/var/named/* /var/named/* 正引きファイル プライマリDNSより自動的にコピーされる。 - 逆引きファイル プライマリDNSより自動的にコピーされる - ログファイルの場所 /var/log/messages /var/log/messages
- 設定ファイルの編集
(/var/named/chroot/etc/named.confの内容)
//
options
{
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
// Put files that named is allowed to write in the data/ directory:
directory "/var/named"; // the default
dump-file "data/cache_dump.db";
statistics-fil "data/named_stats.txt";
memstatistics-file "data/named_mem_stats.txt";
// listen-on-v6 { any; };
auth-nxdomain no; # conform to RFC1035
allow-transfer {
localnets ;
};
// forwarders { # forwardersの設定は、DNSが直接ルートDNSに参照にいけない場合設定する
// 210.200.xxx.5 ;
// 210.200.xxx.6 ;
// };
};
//
logging
{
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
//key ddns_key
//{
// algorithm hmac-md5;
// secret "use /usr/sbin/dns-keygen to generate TSIG keys";
//};
view "external"
{
// match-clients { !localnets; !localhost; };
// match-destinations { !localnets; !localhost; };
match-clients { any; };
match-destinations { any; };
recursion no;
// all views must contain the root hints zone:
include "/etc/named.root.hints";
zone "example.co.jp" {
type slave ;
allow-query { any; };
file "db.example.co.jp";
masters {
202.xxx.yyy.2;
};
};
zone "16.yyy.xxx.202.in-addr.arpa" {
type slave ;
allow-query { any; };
file "db.202.xxx.yyy";
masters {
202.xxx.yyy.2;
};
};
};
- BINDをシステム起動時に自動的に起動する
# chkconfig named on
ⅱ) Debian 4.x(Ubuntu 8.x)の場合
- BINDのインストール方法
$ sudo apt-get install bind9 bind9utils
- BINDで利用する設定ファイル
セカンダリDNSでは以下の設定ファイルを編集します。
目的 保存場所 従来の場所 BINDの動作に関する基本の設定ファイル /etc/bind/named.conf ←同 named.confにおけるoptin部 /etc/bind/named.conf.options ←同 named.confにおけるゾーン定義部 /etc/bind/named.conf.local ←同 DNSのゾーン定義ファイルの保存場所 /var/cache/bind/* ←同 正引きファイル プライマリDNSより自動的にコピーされる。 - 逆引きファイル プライマリDNSより自動的にコピーされる。 - ログファイルの場所 /var/log/syslog ←同
- 設定ファイルの編集
(/etc/bind/named.conf の内容)
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
(/etc/bind/named.conf.options の内容)
options {
directory "/var/cache/bind";
auth-nxdomain no; # conform to RFC1035
allow-query { any; };
allow-transfer {
localnets ;
};
// forwarders { # forwardersの設定は、DNSが直接ルートDNSに参照にいけない場合設定する
// 210.200.xxx.5 ;
// 210.200.xxx.6 ;
// };
};
(/etc/bind/named.conf.local の内容)
//
match-clients { any; } ;
recursion no;zone "example.co.jp" {
type slave;
allow-query { any; };
file "db.example.co.jp";
masters {
202.xxx.yyy.2;
};
};
zone "16.yyy.xxx.202.in-addr.arpa" {
type slave;
allow-query { any; };
file "db.202.xxx.yyy";
masters {
202.xxx.yyy.2;
};
};
ⅲ) Windows 2000/2003の場合
- BINDのインストール方法
ISC(Internet Systems Consortium, Inc.)のダウンロードサイトか ら入手したzip形式のファイルを解凍してください。 解凍すると 「BINDInstall.exe」という実行ファイルがあるのでこれを実行します。 実行すると、bindをインストールするディレクトリ(デフォル ト: c:\windows\system32\dns)と、実行時のアカウント(デフォルト:named)とそのパスワードを求めてきます。 ユーザアカウン トはセキュリティの為に管理者権限以外のアカウント使う必要があるのでそのまま"named"としてパスワードを指定します。 ここでnamedのアカウ ントがWindowsに登録されていなければ指定したパスワードとともにWindowsに登録されます。
また、セキュリティ保護のためにファイルへのアクセス権が必要なのでBINDをインストールするファイルシステムはNTFSとなっている必要があります。
- BINDで利用する設定ファイル
Windows版のBINDをインストールしても、各種の設定ファイルは自動的に構成されません。 このため、1からファイル作成する必要がありますが、 記述方法自体はLinuxと変わりありません。 また、基本の設定ファイルであるnamed.confのファイル名が決まっているだけなので、それ以外の ファイル名についてはLinuxなどと合わせておくと混乱が少ないと思います。(なお、ファイルの内容について同じような記述が複数のファイルにありますが、間違いではありません)
セカンダリDNSでは以下の設定ファイルを編集します。
目的 保存場所 従来の場所 BINDの動作に関する基本の設定ファイル c:\windows\system32\etc\named.conf - DNSのゾーン定義ファイルの保存場所 c:\windows\system32\etc\* - ルートキャッシュファイル named.root.txt - ローカルゾーン設定ファイル named.rfc1912.zones.txt - 「localdomain」ゾーン定義ファイル localdomain.zone.txt - 「localhost」正引き定義ファイル localhost.zone.txt - 「localhost」逆引き定義ファイル named.local.txt - 「localhost」ipv6逆引き定義ファイル named.ip6.local.txt - ローカルブロードキャスト定義ファイル named.broadcast.txt - ローカルネット定義ファイル named.zero.txt - 正引きファイル プライマリDNSより自動的にコピーされる。 - 逆引きファイル プライマリDNSより自動的にコピーされる。 - ログファイルの場所 イベントログ -
- ルートキャッシュファイル作成
インターネットが利用できる環境で以下のコマンドを実行します。 このコマンドを実行することで最新のルートDNSの情報が取得できます。
C:\> cd \Windows\system32\dns
C:\> bin\dig @a.root-servers.net . ns > etc/named.root.txt
- 設定ファイルの編集
(c:\windows\system32\etc\named.confの内容)
//
options
{
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
directory "C:\Windows\system32\dns\etc"; // the default
// dump-file "cache_dump.db";
// statistics-fil "named_stats.txt";
// memstatistics-file "named_mem_stats.txt";
// listen-on-v6 { any; };
auth-nxdomain no; # conform to RFC1035
allow-transfer {
localnets ;
};
// forwarders { # forwardersの設定は、DNSが直接ルートDNSに参照にいけない場合設定する
// 210.200.xxx.5 ;
// 210.200.xxx.6 ;
// };
empty-zones-enable no;
};
//
logging
{
channel default_debug {
file "named.run";
severity dynamic;
};
};
//key ddns_key
//{
// algorithm hmac-md5;
// secret "use /usr/sbin/dns-keygen to generate TSIG keys";
//};
view "external"
{
match-clients { any; };
match-destinations { any; };
recursion no;
// all views must contain the root hints zone:
zone "." IN {
type hint;
file "named.root.txt";
};
include "named.rfc1912.zones.txt";
zone "example.co.jp" {
type slave;
allow-query { any; };
file "db.example.co.jp.txt";
masters {
202.xxx.yyy.2;
};
};
zone "16.yyy.xxx.202.in-addr.arpa" {
type slave;
allow-query { any; };
file "db.202.xxx.yyy.txt";
masters {
202.xxx.yyy.2;
};
};
};
(C:\Windows\system32\dns\etc\named.rfc1912.zones.txt の内容)
// named.rfc1912.zones:
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
//
zone "localdomain" IN {
type master;
file "localdomain.zone.txt";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "localhost.zone.txt";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local.txt";
allow-update { none; };
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.ip6.local.txt";
allow-update { none; };
};
zone "255.in-addr.arpa" IN {
type master;
file "named.broadcast.txt";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.zero.txt";
allow-update { none; };
};
(C:\Windows\system32\dns\etc\localdomain.zone.txt の内容)
$TTL 86400
@ IN SOA localhost root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS localhost
localhost IN A 127.0.0.1
(C:\Windows\system32\dns\etc\localhost.zone.txt の内容)
$TTL 86400
@ IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS @
IN A 127.0.0.1
IN AAAA ::1
(C:\Windows\system32\dns\etc\named.local.txt の内容)
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
(C:\Windows\system32\dns\etc\named.ip6.local.txt の内容)
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
(C:\Windows\system32\dns\etc\named.broadcast.txt の内容)
$TTL 86400
@ IN SOA localhost. root.localhost. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS localhost.
(C:\Windows\system32\dns\etc\named.zero.txt の内容)
$TTL 86400
@ IN SOA localhost. root.localhost. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS localhost.
プロパイダがサービスを実施している場合、プロパイダのDNSにセカンダリDNSの役割を行ってもらう場合、プライマリDNSで転送の許可(allow-transfer {} への設定)を与えてから、プロパイダの指示に従い登録をおこなってください。
Copyright© 1998-2011 ROBATA.ORG