内部DNSと外部DNSに役割を分割する設定
対象サーバについて
| 製品名 | OpenBlockS 600 |
| OS(kernel ver) | Debian lenny(2.6.29) |
| CPU | 600MHz(AMCC PowerPC 405EX) |
| メモリ | 1GB(DDR2 SDRAM) |
| ストレージ | 8GB(Compact Flash) |
bind9の設定におけるパターン2の構成について
このページではDNSサーバ2台構成(パターン2)についてまとめています。DNSサーバ1台構成(パターン1)についてはBIND9の設定にまとめていますので参考にして下さい。
1台構成(パターン1)について詳細説明をしている内容については割愛しますので、不明な箇所はパターン1の記事を参照して下さい。
(図版なし: 2サーバ構成)
パターン2は外部サーバ(DMZに設置)と内部サーバ(LAN内部に設置)に機能を分ける構成です。
viewを使用することでLANとWANに仮想的に分割することが可能なので、ハードを分割するメリットは少ないですが、queryセッションが多い場合やセキュリティを最大限高めたい場合などには少なからず有効と思います。
細かい設定の説明についてはBIND9の設定を参照して下さい。
外部サーバの設定
named.conf
編集するファイル:/etc/bind/named.conf
# LAN内のNWアドレス
acl localnet{
127.0.0.1;
192.168.0.0/24;
172.0.0.0/24;
};
include "/etc/bind/named.conf.options";
include "/etc/bind/rndc.key";
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
# LAN内端末からのquery用
include "/etc/bind/named.conf.local";
# 外部の端末からのquery用
view "wan" {
match-clients { any; }; # localnetは既にlan viewでmatchさせているためany設定とする
allow-query { any; }; # 外部からの問い合わせ用viewのため絞らない
recursion no; # 外部からの再帰問い合わせを拒否
notify yes; # DNS情報の変更をSecondary DNSに通知する
also-notify {
123.50.202.226; # Secondary DNSのアドレス その1
38.110.146.192; # Secondary DNSのアドレス その2
};
# zoneの定義(逆引きはISPにて設定されており不可)
zone "example.jp" IN {
type master;
file "/etc/bind/db.example.jp"; # zoneファイルの指定
allow-transfer {
123.50.202.226;
38.110.146.192;
};
};
};
# syslogとquerylogの設定
logging {
# syslogの設定
channel "default-log" {
syslog local7; # local7.infoにてsyslog出力
severity info;
print-time yes;
print-severity yes;
print-category yes;
};
# rndcコマンド実行時に出力されるQuerylog
channel "default_debug" {
file "named.run"; # rndcコマンドで出力させるログファイル名
severity dynamic;
};
# 上記で設定したsyslogとquerylogの有効化(channelだけでは有効にならないため要注意)
category default {
"default-log";
"default_debug";
};
category "lame-servers" {
"null";
};
};
編集するファイル:/etc/bind/named.conf.local
view "lan" {
match-clients { localnet; }; # acl localnet(LAN内IPアドレス)に当てはまった場合は本viewを適用
notify no; # DNS情報の変更をSecondary DNSに通知しない
allow-query {localnet; }; # 問い合わせを受け付けるホストを指定する
recursion yes; # LAN端末から外部ドメインの名前解決のための再帰検索を許可する
allow-recursion { localnet; }; # 再帰的な問い合わせを受け付けるホストを指定する。
# 内部端末からドメイン名でアクセスできるようにする
zone "exapmle.jp" IN {
type master;
file "/etc/bind/db.example.jp.lan";
allow-update { none; };
};
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
# 外部ドメインを再帰検索するため、先ほど作成したルートゾーンファイルを指定
zone "." {
type hint;
file "/etc/bind/db.root";
};
# 内部LANからqueryが来た時にインターネットへ逆引きしに行かないようにする設定
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.empty";
allow-update { none; };
};
# DMZ上の設備の名前解決用
zone "0.0.172.in-addr.arpa" {
type master;
file "/etc/bind/db.172";
allow-update { none; };
};
};
named.conf.options
外部サーバと内部サーバで共通の設定になります。
編集するファイル:/etc/bind/named.conf.options
options {
# rndc querylogやrndc trace時のログ保存先を指定
directory "/var/cache/bind";
# bindのバージョンを非表示(セキュリティ対応)
version "unknown";
# ダンプファイル(現在のDBとキャッシュの内容)の出力先パスを指定する。
# rndc dumpdbにて出力される。
dump-file "/dump/named_dump.db";
# 問い合わせの統計情報を出力するファイル名を指定
# rndc statsにて出力される。
statistics-file "/dump/named.stats";
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { none; };
pid-file "/var/run/bind/run/named.pid";
};
rndcコマンドによる各種調査を実施した際のログ保存先を指定します。
ゾーンファイル
編集するファイル:/etc/bind/db.127
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
IN NS localhost.
1 IN PTR localhost.
1 IN PTR www.example.jp.
編集するファイル:/etc/bind/db.empty
; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL 86400
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS localhost.
編集するファイル:/etc/bind/db.local
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
@ IN AAAA ::1
編集するファイル:/etc/bind/db.example.jp
$TTL 86400
@ IN SOA ns.example.jp. user001.open.example.jp.(
2010012401 ; Serial
3600 ; secondaryがゾーン情報の更新をチェックする間隔
7200 ; secondaryがゾーン転送を失敗した場合に待機する間隔
604800 ; secondaryがゾーンファイルを無効とみなすまでの時間
3600 ) ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間
IN NS ns.example.jp.
IN NS ns1.maihama-net.com.
IN NS ns2.maihama-net.com.
IN MX 10 mail-gw.example.jp.
@ IN A 111.111.111.111
ns IN A 111.111.111.111
www IN A 111.111.111.111
open IN A 111.111.111.111
mail-gw IN A 111.111.111.111
編集するファイル:/etc/bind/db.example.jp.lan
$TTL 86400
@ IN SOA ns.example.jp. user001.example.jp.(
2010012401 ; Serial
3600 ; secondaryがゾーン情報の更新をチェックする間隔
7200 ; secondaryがゾーン転送を失敗した場合に待機する間隔
604800 ; secondaryがゾーンファイルを無効とみなすまでの時間
100 ) ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間
IN NS ns.example.jp.
IN MX 10 mail.example.jp.
@ IN A 172.0.0.2
ns IN A 172.0.0.2
www IN A 172.0.0.2
mail-gw IN A 172.0.0.2
open IN A 172.0.0.2
編集するファイル:/etc/bind/db.172
$TTL 86400
@ IN SOA ns.example.jp. user001.example.jp.(
2010012402 ; Serial
3600 ; secondaryがゾーン情報の更新をチェックする間隔
7200 ; secondaryがゾーン転送を失敗した場合に待機する間隔
604800 ; secondaryがゾーンファイルを無効とみなすまでの時間
3600 ) ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間
IN NS ns.example.jp.
2 IN PTR ns.example.jp.
2 IN PTR www.example.jp.
2 IN PTR open.example.jp.
2 IN PTR mail-gw.example.jp.
内部サーバの設定
named.conf
編集するファイル:/etc/bind/named.conf
// LAN内のNWアドレス
acl localnet{
127.0.0.1;
192.168.0.0/24;
172.0.0.0/24;
};
include "/etc/bind/named.conf.options";
include "/etc/bind/rndc.key";
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
// まずLAN内の端末からのquery用
include "/etc/bind/named.conf.local";
logging {
channel "default-log" {
syslog local7;
severity info;
print-time yes;
print-severity yes;
print-category yes;
};
channel "default_debug" {
file "named.run";
severity dynamic;
};
category default {
"default-log";
"default_debug";
};
category "lame-servers" {
"null";
};
};
編集するファイル:/etc/bind/named.conf.local
view "lan" {
match-clients { localnet; }; # acl localnet(LAN内IPアドレス)に当てはまった場合は本viewを適用
notify no; # DNS情報の変更をSecondary DNSに通知しない
allow-query {localnet; }; # 問い合わせを受け付けるホストを指定する
recursion yes; # LAN端末から外部ドメインの名前解決のための再帰検索を許可する
allow-recursion { localnet; }; # 再帰的な問い合わせを受け付けるホストを指定する。
# 内部端末からドメイン名でアクセスできるようにする
zone "exapmle.jp" IN {
type master;
file "/etc/bind/db.example.jp.lan";
allow-update { none; };
};
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
# internet上のサーバの名前解決は172.0.0.2へ転送する
zone "." {
type forward;
forwarders { 172.0.0.2; };
forward only;
};
# 内部LAN上の設備の名前解決用
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
allow-update { none; };
};
};
named.conf.options
外部サーバと内部サーバで共通の設定になるため、割愛します。
ゾーンファイル
db.127、db.empty、db.localは外部サーバと内部サーバで共通の設定になるため、割愛します。
編集するファイル:/etc/bind/db.example.jp.lan
$TTL 86400
@ IN SOA ns2.example.jp. user001.example.jp.(
2009123001 ; Serial
3600 ; secondaryがゾーン情報の更新をチェックする間隔
7200 ; secondaryがゾーン転送を失敗した場合に待機する間隔
604800 ; secondaryがゾーンファイルを無効とみなすまでの時間
3600 ) ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間
IN NS ns2.example.jp.
IN MX 10 mail.example.jp.
@ IN A 192.168.0.2
ns2 IN A 192.168.0.2
mail IN A 192.168.0.2
close IN A 192.168.0.2
mail-gw IN A 172.0.0.2
www IN A 172.0.0.2
ns IN A 172.0.0.2
open IN A 172.0.0.2
編集するファイル:/etc/bind/db.192
$TTL 86400
@ IN SOA ns2.example.jp. user001.example.jp.(
2010012401 ; Serial
3600 ; secondaryがゾーン情報の更新をチェックする間隔
7200 ; secondaryがゾーン転送を失敗した場合に待機する間隔
604800 ; secondaryがゾーンファイルを無効とみなすまでの時間
3600 ) ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間
IN NS ns2.example.jp.
2 IN PTR ns2.example.jp.
2 IN PTR mail.example.jp.
2 IN PTR close.example.jp.