bind9: ローカルゾーン構成で外部ネームサーバーを照会する方法

bind9: ローカルゾーン構成で外部ネームサーバーを照会する方法

インストールでゾーンを構成しました bind9。これは、dyndns サブドメイン用の Python スクリプトを通じて管理しているパブリック ネーム サーバーであるはずです。ただし、私のメイン Web サイトはどこか別の場所でサードパーティによってホストされており、近い将来、それらもローカルでホストしたいと考えています。現時点では、bind9 で名前解決のためにローカル データベースを調べ、失敗した場合は外部 DNS にリダイレクト (または外部 DNS から取得) するようにします。これが私の構成ですが、外部クエリ (example.com および www.example.com) では機能しません。

$ cat /etc/bind/named.conf.local
include "/etc/bind/zones.rfc1918";
zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    allow-transfer { any; };
    update-policy local;
};

$ cat /etc/bind/zones/db.example.com
$ORIGIN .
$TTL 172800     ; 2 days
example.com               IN SOA  ns1.example.com. hostmaster.example.com. (
                          116        ; serial
                          7200       ; refresh (2 hours)
                          900        ; retry (15 minutes)
                          1857600    ; expire (3 weeks 12 hours)
                          8400       ; minimum (2 hours 20 minutes)
                          )
                    NS      ns1.example.com.
                    NS      ns1.external-host.com.
                    NS      ns2.external-host.com.
ns1.external-host.com      A       1.2.3.1
ns2.external-host.com      A       1.2.3.2

$ORIGIN example.com.
ns1                     A       1.1.1.1
@            IN         NS      ns1.external-host.com.
@            IN         NS      ns2.external-host.com.
www            IN         NS      ns1.external-host.com.
www           IN         NS      ns2.external-host.com.
clients                 A       1.1.1.1
$ORIGIN clients.example.com.
$TTL 3600       ; 1 hour
test                    A       2.2.2.2

答え1

ネーム サーバーの 1 つがローカル (他のサーバーからはアクセスできない) であるため、これは不可能だと思います。技術的には、フォワーダーまたはマルチマスター オプションを試すことができます。ただし、たとえ機能したとしても、小規模なセットアップには適した方法ではありません。

DNS は、どのサーバーがゾーン マスターであるかという情報に基づいています。これはタイプによって設定されます。ゾーンはmaster現在の情報を保持する責任があるため、1 つだけ存在する必要があります (インスタンス間で違いが生じる可能性があるため)。ゾーンslaveはマスターを認識しており、ゾーン全体を直接要求できます。マスターがスレーブも認識している場合は、ゾーン全体を転送することもできます。これが実行すべきことです。

パブリック ネーム サーバーをそのままの場所に保持し、マスターとして保持します。ローカル環境で 2 番目のバインドをインストールし、ゾーンをスレーブとして追加します。また、スレーブをマスターに追加して、自動更新が機能するようにします。両方のログを確認するには、AXFR または IXFR 要求が行われる必要があります。

したがって、マスターが 1.2.3.4、スレーブが 5.6.7.8 であると仮定すると、ゾーン定義は次のようになります。

マスター:

zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    also-notify { 5.6.7.8; };
    notify yes;
};

奴隷:

zone "example.com" {
    type slave;
    file "/etc/bind/zones/db.example.com"; // this is the file updated.
    allow-notify { 1.2.3.4; };
    allow-transfer { 1.2.3.4; };
};

ご覧のとおり、スレーブのアドレスは静的に設定されているため、マスターからスレーブに到達可能である必要があります。

関連情報