DNSのすばらしい世界に頭を悩ませようとしています。
以下を含むexample.comのゾーンファイルを作成しました。
@ A 1.2.3.4
* A 1.2.3.4
ただし、次の内容を含むために別のゾーンファイルを作成したローカルDNS local.example.comもセットアップしています。
machine1 A 192.168.0.1
machine2 A 192.168.0.2
Machine1.local.example.comを掘ると、Aレコード192.168.0.1が返されます。
悲しいことに、badmachine.local.example.comは、local.example.comと同様に、1.2.3.4を返します。
これを防ぐ最善の方法はわかりません。 local.example.comに以下を追加すると、空のAレコードが上記の2つの例で返されます。これは、私が望む動作です。
@ A
* A
私はanything.example.comに、特に指定されない限り応答を与えたくないlocal.example.comサブドメイン内のものを除いてワイルドカードを使用させたいです。基本的に、1つの除外を含むワイルドカードが必要です。
これは許可されていますか?これはベストプラクティスですか、それとも私はひどく間違ったことをしていますか? BINDバックエンドでPowerDNSを使用しています。
あなたの考えをありがとう!
まず、上記のChris Sへのコメントは、元の質問をかなり明確にします(実際、変更します)。元の質問に編集することをお許しください。
第二に、他の人が指摘しているように、nullレコードは許可されていません。
第三に、あなたが望むことをする方法は、local.example.com
を適切なサブドメインとして宣言することだと思います。
local IN NS ns1.example.com
local IN NS ns2.example.com
現在example.comで実行しているのと同じ2つのネームサーバーを一覧表示します(注:PowerDNSがわからないため、上記のエントリはBIND形式です) 。次に、これらのネームサーバー(私はこのネームサーバーだと思います)で、解決したいホストのみを含み、ワイルドカードレコードを含まないlocal.example.comのゾーンファイルを宣言します。
したがって、人々がfoo.example.com
を検索すると、それがリストにない場合は、既存のワイルドカードレコードと一致し、1.2.3.4
(または何でも)を返します。しかし、人々がfoo.local.example.com
を検索すると、local.example.com
のネームサーバーレコードが返され、さらに再帰が実行されます。ネームサーバーはlocal.example.com
のゾーンファイルを調べて、( fooの特定のレコードがないおよび local.example.comにワイルドカード)「いいえ、そのようなレコードはありません」。
この機能は一貫して実装されていないため、実行しているサーバーの特定の動作を確認する必要があります。
RFC 4592から引用すると、多くのDNS実装は、ワイルドカードの元の定義とはさまざまな方法で異なります。
ワイルドカードの使用法の定義を理解しているので、ワイルドカードエントリに実行させたいことは正しいです(最後の手段のデフォルト値と考える方がよいでしょう)。明確なRFCを読み、ここで更新する時間を見つけようとします...
あなたが求めている反応を正確に知ることは有用でしょう。質問で引用されている最初の2行は、ドメインのデフォルトの応答と、一致しないレコード応答も設定しています。したがって、example.comは「@」レコードによって処理され、what-that-doesnt-exist.exmaple.comは「*」レコードによって処理されます。それらは必要ありません、両方とも取り除くことができます。それらを空白値に設定することは無効な構成です(ほとんどのシステムで)。
エントリを「無効にする」方法を考えることはできません。空のAレコードは許可されていません。
おそらく*.example.com A 1.2.3.4
.local.example.comエントリの上書きを防ぎますか? PowerDNSが仕様どおりに動作していないようです。 local.example.comドメインを定義しておくと、ワイルドカードがそのドメイン内の何かを踏みつけるのを防ぐことができます。フルゾーンファイルを投稿できますか?それはいくつかの小さな質問を解決します。