対象サーバについて
製品名 | 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は外部サーバ(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.