web-dev-qa-db-ja.com

1つのプロバイダーの特定のADNSレコードをオーバーライドするワイルドカードCNAMEDNSレコード

ワイルドカードCNAMEレコード(つまり* .example.com)が特定のAレコード(つまりHost1.example.com、Host2.example.com)を上書きしていたという奇妙な問題に遭遇しました。これは、VerizonWirelessのネームサーバーにのみ影響しました。信頼できるネームサーバーは、Network Solutions(ns1.dnsbycomodo.netおよびns2.dnsbycomodo.net)によって制御されます。

他のプロバイダーのネームサーバーは正しい結果(OpenDNSとmxtoolbox.com)を返しましたが、返された誤ったIP(CNAMEルックアップを介して)が以前に使用されたことがないため、キャッシュの問題になることはありません。 12時間前に作成され、レコードのTTLはわずか7200でした。

ワイルドカードCNAMEレコードを削除すると、問題が解決したようです。何が起こったのかについて何か考えはありますか?他の誰かがこれに遭遇しましたか?これは、VerizonのDNSサーバーがNetwork Solutionsと通信する際のバグですか?おそらく、ワイルドカードCNAMEレコードはしばらくの間有効でした( ワイルドカードCNAME DNSレコードは有効ですか? )。

編集:

これが物事が起こった順序です

元の構成:
A * .example.com-> 1.1.1.1
Host1.example.com-> 2.2.2.2
Host2.example.com-> 3.3.3.3

変更:
「A」を削除* .example.com
4.4.4.4に解決されるCNAME * .example.com-> hostalias.example.netを追加しました

結果:
Host1.example.comとHost2.example.comへのVerizonクエリでは、4.4.4.4が返され始めましたが、OpenDNSとmxtoolbox.comでは、それぞれ2.2.2.2と3.3.3.3が正しく返されました。

2
sa289

質問を更新していただきありがとうございます。これにより、イベントの順序がより明確になります。残念ながら、あなたが説明している振る舞いは、再帰的なDNSリゾルバーの観点からは非常に不可解なままです。これは、例を通して最もよく説明されています。


クエリがキャッシュにない場合、再帰DNSサーバーは次のクエリを権限のあるネームサーバーに送信します。

質問:Host1.example.com. IN A

明示的なAレコードが定義されている場合、リモートの権限のあるサーバーはそのように応答します。

回答:Host1.example.com. IN A 2.2.2.2

または、CNAMEレコードにヒットしている場合は、次のようにします。

回答:Host1.example.com. IN CNAME hostalias.example.net.


どちらの場合も、AレコードとCNAMEレコードのどちらを提供するかの選択は、authoritativeサーバーによって決定されます。 、再帰サーバーではありません。再帰サーバーは、その名前が示すように、再帰的です。 Host.example.com. IN Aに対するアップストリームクライアントの要求は、回答に到達するために追加のクエリが必要でない限り、変更されずに渡されます。 (この場合、権限のあるネームサーバーが同じ応答内でその回答を提供できない限り、それはhostalias.example.netの追加のルックアップになります)

このよく理解された振る舞いを考えると、最初の仮定は疑わしいものとして扱われる必要があります。これらの事実の1つは、100%正確ではありません。

  • それらのレコードが定義された順序。
  • ベライゾンは4.4.4.4の応答を返します。 (つまり、応答はネットワークに近い場所、またはホストファイルからのものです)
  • すべての権限のあるサーバーがその要求に対して同じ応答を返していたこと。
  • オペレーターエラー。
  • 人間の記憶。

これは一種の無回答であることを私は知っていますが、イベント中に何が起こっていたかについてのより良い文書がなければ、より良いものを提供できるとは思いません。

1
Andrew B