< Top / Next >
2011年11月27日 更新
自組織にインターネットサイドからアクセス出来るサーバ(例えば、WWWやメールサーバ)を構築した場合、DNSの運用が不可欠になってきます。 その場合、これら公開用サーバのためのDNSに登録するデータは、公開されるサーバに関するモノだけで良く、セキュリティを考慮する場合には他の情報は極力載せるべきではありません。
一方、組織内の内部LAN側では、ファイルサーバや内部メールサーバ、グループウェアサーバなどが動作しているかも知れません。 クライアントからのアクセスにおいて、これらのサーバについて、DNSを使う方が利便性は上がることでしょう。
このような時には、インターネット側の名前解決を行うDNS(外部DNS)と組織のLAN側の名前解決を行うDNS(内部DNS)とを独自で構築すると良いでしょう。
このような構成を取ることで、外部DNSへの登録情報を少なくでき、DNSのセキュリティ性が向上します。
以下では、内部プライマリDNSを構築する例を述べていきます。 内部セカンダリDNSについては、プライマリサーバが内部DNSになるだけで3章でのセカンダリサーバの構築手順と変わり有りません。
以下のような内容で内部DNSの設定を実施します。
内部のLANセグメント 192.168.10.0/24
172.16.0.0/16DNSサーバに割り当てる固定IPアドレス 192.168.10.3
192.168.10.4 (セカンダリ)ドメイン名 正引き example.co.jp 逆引き 10.168.192.in-addr.arpa
16.172.in-addr.arpaDNSサーバのFQDN名 ns.example.co.jp
ns1.example.co.jp (セカンダリ)DNSに登録する内部のメールサーバ名 mx1.example.co.jp 内部メールサーバのIPアドレス 192.168.10.5 プロパイダのDNS dns1.isp.ne.jp (210.200.xxx.5)
dns2.isp.ne.jp (210.200.xxx.6)DHCPクライアントのアドレス範囲 172.16.5.0 - 172.16.5.255
以下では、プライマリDNSサーバの設定についての説明をします。
なお、BINDの設定に使う設定ファイルは利用するOS毎に違うので、以下ではOS毎の設定に分けて説明を行います。
2-1. Redhat ES5(CentOS 5)の場合
- BINDのインストール方法
# yum install bind bind-utils
- BINDで利用する設定ファイル
Redhat(CentOS)では、デフォルトでセキュリティ強化の為にBINDの動作はchroot環境化(通称、牢獄環境)にて実行されるようになりました。 このため、BINDに関する各種設定ファイルは従来の場所ではなく /var/named/chroot 下の各ディレクトリに置かれたものを使うようになっています。
目的 保存場所 従来の場所 BINDの動作に関する基本の設定ファイル /var/named/chroot/etc/named.conf /etc/named.conf DNSのゾーン定義ファイルの保存場所 /var/named/chroot/var/named/* /var/named/* 正引きファイル db.example.co.jp - 逆引きファイル db.192.168.10
db.172.16- ログファイルの場所 /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 master;
allow-query { any; };
file "db.example.co.jp";
};
zone "16.172.in-addr.arpa" {
type master;
allow-query { any; };
file "db.172.16";
};
zone "10.168.192.in-addr.arpa" {
type master;
allow-query { any; };
file "db.192.168.10";
};
};
(/var/named/chroot/var/named/db.example.co.jpの内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030900 ; 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 ns1.example.co.jp.
@ IN MX 10 mx1.example.co.jp.
*.example.co.jp. IN MX 10 mx1.example.co.jp.;
ns IN A 192.168.10.3 # 内部のDNS
ns1 IN A 192.168.10.4 # 内部のDNS
mx IN A 192.168.10.5 #内部のメールサーバ
;
www IN A 202.xxx.yyy.zz # 外部(DMZのwebサーバなどがあれば)
;
$GENERATE 1-254 dhcp-pc$ A 172.16.5.$ # DHCPクライアント用のアドレスを自動生成
(/var/named/chroot/var/named/db.192.168.10の内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030900 ; 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 ns1.example.co.jp.;
3 IN PTR ns.example.co.jp.
4 IN PTR ns1.example.co.jp.
5 IN PTR mx1.example.co.jp.
;
(/var/named/chroot/var/named/db.172.16の内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030900 ; 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 ns1.example.co.jp.;
$GENERATE 1-254 $.5 PTR dhcp-pc$.example.co.jp. # DHCPクライアント用のアドレスを自動生成
;
- BINDをシステム起動時に自動的に起動する
# chkconfig named on
2-2. Debian 4.x(Ubuntu 8.x)の場合
- BINDのインストール方法
$ sudo apt-get install bind9 bind9utils
- BINDで利用する設定ファイル
目的 保存場所 従来の場所 BINDの動作に関する基本の設定ファイル /etc/bind/named.conf ←同 named.confにおけるoptin部 /etc/bind/named.conf.options ←同 named.confにおけるゾーン定義部 /etc/bind/named.conf.local ←同 DNSのゾーン定義ファイルの保存場所 /var/cache/bind/* ←同 正引きファイル db.example.co.jp - 逆引きファイル db.192.168.10
db.172.16- ログファイルの場所 /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 master;
allow-query { any; };
file "db.example.co.jp";
};
zone "16.172.in-addr.arpa" {
type master;
allow-query { any; };
file "db.172.16";
};
zone "10.168.192.in-addr.arpa" {
type master;
allow-query { any; };
file "db.192.168.10";
};
(/var/cache/bind/db.example.co.jpの内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030900 ; 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 ns1.example.co.jp.
@ IN MX 10 mx1.example.co.jp.
*.example.co.jp. IN MX 10 mx1.example.co.jp.;
ns IN A 192.168.10.3 # 内部のDNS
ns1 IN A 192.168.10.4 # 内部のDNS
mx IN A 192.168.10.5 #内部のメールサーバ
;
www IN A 202.xxx.yyy.zz # 外部(DMZのwebサーバなどがあれば)
;
$GENERATE 1-254 dhcp-pc$ A 172.16.5.$ # DHCPクライアント用のアドレスを自動生成
;
(/var/named/chroot/var/named/db.192.168.10の内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030900 ; 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 ns1.example.co.jp.;
3 IN PTR ns.example.co.jp.
4 IN PTR ns1.example.co.jp.
5 IN PTR mx1.example.co.jp.
;
(/var/named/chroot/var/named/db.172.16の内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030900 ; 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 ns1.example.co.jp.;
$GENERATE 1-254 $.5 PTR dhcp-pc$.example.co.jp. # DHCPクライアント用のアドレスを自動生成
;
2-3. 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などと合わせておくと混乱が少ないと思います。(なお、ファイルの内容について同じような記述が複数のファイルにあります が、間違いではありません)
目的 保存場所 従来の場所 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 - 正引きファイル db.example.co.jp - 逆引きファイル db.192.168.10
db.172.16- ログファイルの場所 イベントログ -
- ルートキャッシュファイル作成
インターネットが利用できる環境で以下のコマンドを実行します。 このコマンドを実行することで最新のルート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 master;
allow-query { any; };
file "db.example.co.jp.txt";
};
zone "16.172.in-addr.arpa" {
type master;
allow-query { any; };
file "db.172.16";
};
zone "10.168.192.in-addr.arpa" {
type master;
allow-query { any; };
file "db.192.168.10";
};
};
(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.
(/var/named/chroot/var/named/db.example.co.jp.txt の内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030900 ; 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 ns1.example.co.jp.
@ IN MX 10 mx1.example.co.jp.
*.example.co.jp. IN MX 10 mx1.example.co.jp.;
ns IN A 192.168.10.3 # 内部のDNS
ns1 IN A 192.168.10.4 # 内部のDNS
mx IN A 192.168.10.5 #内部のメールサーバ
;
www IN A 202.xxx.yyy.zz # 外部(DMZのwebサーバなどがあれば)
;
$GENERATE 1-254 dhcp-pc$ A 172.16.5.$ # DHCPクライアント用のアドレスを自動生成
;;
(/var/named/chroot/var/named/db.192.168.10の内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030900 ; 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 ns1.example.co.jp.;
3 IN PTR ns.example.co.jp.
4 IN PTR ns1.example.co.jp.
5 IN PTR mx1.example.co.jp.
;
(/var/named/chroot/var/named/db.172.16の内容)
$TTL 3600
@ IN soa ns.example.co.jp. root.example.co.jp. (
2009030900 ; 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 ns1.example.co.jp.;
$GENERATE 1-254 $.5 PTR dhcp-pc$.example.co.jp. # DHCPクライアント用のアドレスを自動生成
;
< Top / Next >
Copyright© 1998-2011 ROBATA.ORG