私はドメインを持っており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
ワイルドカードは使用できないため、別のアプローチを使用することにしました。
- すべての外部サイトは
example.com
ドメイン上でホストされます。 - すべての内部サイトは
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 でも機能するはずです。