LoginSignup
3
4

More than 3 years have passed since last update.

条件付きフォワーダ機能

Last updated at Posted at 2020-02-11

dns.png

クライアント(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
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4