私は 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 に以下を追加すると、上記の 2 つの例で、私が望む動作として空の A レコードが返されます。
@ A
* A
私は、anything.example.com が、local.example.com サブドメイン内の指定しない限り応答しない anything を除くワイルドカードを使用するようにしたいと考えています。基本的に、1 つの除外を含むワイルドカードが必要です。
これは許可されていますか? これはベストプラクティスですか、それとも私がひどく間違っているのでしょうか? 私は BIND バックエンドで PowerDNS を使用しています。
ご意見ありがとうございます!
答え1
まず、上記の Chris S さんへのコメントにより、元の質問がかなり明確化 (実際、修正) されましたので、元の質問に編集して反映させたことをお許しください。
第二に、他の人が指摘しているように、null レコードは許可されません。
3 番目に、必要なことを実現するには、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 のワイルドカード)「いいえ、そのようなレコードはありません」。
答え2
どのような応答を求めているかを正確に把握しておくと便利です。質問で引用されている最初の 2 行は、ドメインのデフォルトの応答と、一致しないレコードの応答も設定します。したがって、example.com は "@" レコードによって処理され、anything-that-doesnt-exist.exmaple.com は "*" レコードによって処理されます。これらは不要です。両方とも削除できます。これらを空白の値に設定すると、無効な構成になります (ほとんどのシステムで)。
答え3
エントリを「null」にする方法が思いつきません。空の A レコードは許可されません。
おそらく、*.example.com A 1.2.3.4
.local.example.com エントリの上書きを防ぐことができるでしょうか? PowerDNS は仕様から外れているようです。local.example.com ドメインを定義しておけば、ワイルドカードがそのドメイン内の何かを踏みつけるのを防ぐことができます。完全なゾーン ファイルを投稿していただけますか? そうすれば、いくつかの小さな疑問が解決されるでしょう。
答え4
この機能は一貫して実装されていないため、実行しているサーバーの特定の動作を確認する必要があります。
RFC 4592 から引用すると、多くの DNS 実装は、さまざまな方法で、ワイルドカードの元の定義から逸脱しています。
ワイルドカード エントリで実行したい操作は正しいです。ワイルドカードの使用法の定義を理解しています (最後の手段としてのデフォルト値として考えた方がよいでしょう)。時間を見つけて、説明を記載した RFC を読んで、ここで更新するようにします...