クライアント(resolve.conf)からの問い合わせ先になっていたDNSはそのままにして、
別ドメインの名前解決を行う必要が発生したため、DNSフォワーダ機能を利用。
検証した時の設定値を以下に記載。
目的
1.クライアントからbind#1で管理するドメインのホスト名を解決できること
nslookup www.gh.co.jp
⇒成功
2.クライアントからbind#1で管理するドメインのサブドメインのホスト名を解決できること
nslookup www.private.gh.co.jp
⇒成功
3.クライアントからbind#1からフォワードされたドメインのホスト名を解決できること
nslookup www.private.domain.local
⇒成功
dnssecを有効の状態でやる場合、鍵の作成やゾーンファイルの署名が必要になる模様
今回は用意する予定はないため、"dnssec-enable no"としています。
環境
AzureでRHEL(IaaS)を3台構築
# | 種別 | 用途 | IPアドレス | resolve.conf |
---|---|---|---|---|
1 | クライアントPC | クライアント見立てのPC | 10.0.0.4 | 10.0.0.5 |
2 | bind#1 | クライアントから見たときのDNS | 10.0.0.5 | 10.0.0.5 |
3 | bind#2 | bind#1で管理していないドメインをマスターで保持 | 10.0.0.6 | 10.0.0.6 |
bind#1 の設定
named.conf
/etc/named.conf
options {
listen-on port 53 { 127.0.0.1; 10.0.0.0/24; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; 10.0.0.0/24; };
allow-transfer { none; };
recursion yes; /*再起問い合わせは有効化しないとフォワードリクエストで名前解決不可*/
dnssec-enable no; /*dnssecを無効化しないとフォワードできない*/
dnssec-validation no; /*dnssecを無効化しないとフォワードできない*/
bindkeys-file "/etc/named.root.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;
};
/*Debugのためにログ出力*/
channel "queries_log" {
file "/var/log/queries.log" versions 10 size 100M;
severity info;
print-time yes;
};
category queries { "queries_log"; };
};
/* メインドメイン(gh.co.jp) は "#1 master/#2 slave" */
zone "gh.co.jp" IN {
type master;
file "gh.co.jp.zone";
};
/* サブドメイン(private.gh.co.jp) は "#1 stub/#2 master" */
/* stub設定にすることで#2の設定変更のみで良い構成とした */
zone "private.gh.co.jp" IN {
type stub;
file "slaves/private.gh.co.jp.zone";
masters {10.0.0.6;};
};
/* ローカルドメイン(private.domain.local) は "#1 forward/#2 master" */
zone "private.domain.local" IN {
type forward;
forward only;
forwarders { 10.0.0.6; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
zone
/var/named/gh.co.jp.zone
$TTL 86400
@ IN SOA ns1.gh.co.jp. root.gh.co.jp. (
2020020804
3600
900
604800
86400
)
@ IN NS ns1
ns1 IN A 10.0.0.5
www IN CNAME ns1
private IN NS ns2.private
ns2.private IN A 10.0.0.6
/var/named/slaves/private.gh.co.jp.zone
$ORIGIN .
$TTL 86400 ; 1 day
private.gh.co.jp IN SOA ns2.private.gh.co.jp. root.private.gh.co.jp. (
2020021101 ; serial
3600 ; refresh (1 hour)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS ns2.private.gh.co.jp.
$ORIGIN private.gh.co.jp.
ns2 A 10.0.0.6
bind#2 の設定
named.conf
/etc/named.conf
options {
listen-on port 53 { 127.0.0.1; 10.0.0.0/24; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; 10.0.0.0/24; };
allow-transfer { none; };
recursion no; /*#2は再起問い合わせしないのでno*/
dnssec-enable no; /*dnssecを無効化しないとフォワードできなかった*/
dnssec-validation no; /*dnssecを無効化しないとフォワードできなかった*/
bindkeys-file "/etc/named.root.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;
};
/*Debugのためにログ出力*/
channel "queries_log" {
file "/var/log/queries.log" versions 10 size 100M;
severity info;
print-time yes;
};
category queries { "queries_log"; };
};
/* サブドメイン(private.gh.co.jp) は "#1 stub/#2 master" */
/* stub設定にすることで#2の設定変更のみで良い構成とした */
/* stub用にゾーン転送設定を入れてある */
zone "private.gh.co.jp" IN {
type master;
file "private.gh.co.jp.zone";
notify explicit;
also-notify { 10.0.0.5; };
allow-transfer { 10.0.0.5; };
};
/* ローカルドメイン(private.domain.local) は "#1 forward/#2 master" */
zone "private.domain.local" IN {
type master;
file "private.domain.local.zone";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
zone
/var/named/private.domain.local.zone
$TTL 86400
@ IN SOA ns3.private.domain.local. root.private.domain.local. (
2020020813 ;Serial
3600 ;Reflesh
900 ;Retry
604800 ;Expire
86400 ;Minimum
)
;
IN NS ns3.private.domain.local.
;
ns3 IN A 10.0.0.6
www IN CNAME ns3