ローカルゾーンの DNS 要求がローカルで一致しない場合に外部 DNS に転送する方法 (BIND9)

ローカルゾーンの DNS 要求がローカルで一致しない場合に外部 DNS に転送する方法 (BIND9)

私はドメインを持っておりexample.com、Azure DNS を使用して、インターネットから表示できるすべてのホスト名を解決しています。mail.example.comポイントするように定義しており198.51.100.123、外部クライアントによって問題なく解決できます。

これはexample.com私の LAN でも使用されており、bind を使用してすべてのローカル IP アドレスを解決します。これはローカル ホスト名に対しては正常に機能します。私の DHCP サーバーもこれに対処する方法を認識しており、ゾーン ファイルを適切に更新します。他のゾーンのすべての DNS 要求は Cloudflare DNS に転送されます。

サーバーでローカル ネーム サーバーを使用し、ローカル ゾーン ファイルにエントリが見つからない場合は、Azure サーバーに接続して確認するようにします。次のエントリをゾーン ファイルに追加すると、これらのホスト名に対して機能します。

external-dns            A       1.1.1.1
vpn                     NS      external-dns
www                     NS      external-dns
ftp                     NS      external-dns

ワイルドカードは Bind9 では機能しなくなったため、 を使用できません* NS external-dns。これを実現する他の方法はありますか?

答え1

response-policyマスターゾーンの代わりにゾーンを使用するexample.com

ホスト名を解決しようとすると、bind はresponse-policy最初にゾーン ファイルを検索し、答えが見つからない場合は検索を続けます。

設定例は次のとおりです。

options {
    # Your normal options
    response-policy { zone "local_example_com"; };
};
zone "local_example_com" {
    type master;
    file "master/local_example.zone";
    allow-query {none;};
};

master/local_example.zone次に、次の内容を含むというゾーン ファイルを追加します。

$TTL 24H
@    SOA LOCALHOST. named-mgr.example.com (1 1d 1h 30d 2h)
     NS  LOCALHOST.

host1.example.com     A   192.168.1.1
host2.example.com     A   192.168.1.2
host3.example.com     A   192.168.1.3
host4.example.com     A   192.168.1.4

解決しようとするとゾーンhost1.example.comから回答が取得されresponse-policy、解決しようとするとネームサーバーをmail.example.com使用して解決されますexample.com

答え2

ワイルドカードは使用できないため、別のアプローチを使用することにしました。

  1. すべての外部サイトはexample.comドメイン上でホストされます。
  2. すべての内部サイトはint.example.comドメイン上でホストされます。

example.com変更されず、Azure DNS で引き続き利用できます (これまでどおり)。内部 Bind サーバーがドメインをホストするようになりint.example.com、DHCP サーバーもint.example.comローカル ドメインとしてプッシュするように更新されます。

内部サイトを HTTPS 経由で利用できるようにしたいので、ドメインに対して LetsEncrypt を使用して証明書を作成できる必要がありますint.example.com。LetsEncrypt は内部サービスにアクセスできないため、DNS 検証に戻す必要があります。

私は、 Azure DNSint.example.comの子ゾーンとしてゾーンを追加しましたexample.com。このゾーンにはDNSエントリはありません。これは、ローカルサーバーを使用するためです。外部DNSサーバーに内部情報を公開したくありません。その唯一の目的はLetsEncryptのDNS検証であるため、AcmeShにはTXTレコードを作成/削除するための適切な資格情報が必要です。私は次のようにしました。このガイド適切な資格情報を作成します。私のセットアップでは Azure DNS を使用していますが、サブゾーンをサポートするどの DNS でも機能するはずです。

関連情報