同じサブドメインに A レコードと CNAME レコードを設定した場合、DNS ルックアップはどのように行われますか?
例えば、
A record:
example.com => xx.xx.xx.xx
www.example.com => xx.xx.xx.xx
CNAME record:
www. => example.com
解決するとき参考文献DNS リゾルバはサブドメイン www の A レコードを直接検索して IP を取得するのでしょうか、それとも www の CNAME を検索してリダイレクト ドメイン (example.com) を取得し、次に example.com の A レコードを検索して最終的に IP を取得するのでしょうか?
答え1
レコードとは何ですかCNAME
?
記録CNAME
は、所有者名CNAME
(レコードが追加される名前)をレコード値の名前の別名(正式名称(レコード タイプの名前に従って)
エイリアスの定義は名前レベルであり、レコード タイプを完全に無視することに注意してください。
所有者名が別名であることの意味の 1 つは、他のレコードも持つことができないということです。これは、別の名前の別名であることと直接競合することになるからです。
リゾルバの観点から見ると、 をクエリする場合A
、応答の有効なオプションは、A
名前がエイリアスでない場合は入力された回答、CNAME
名前がエイリアスの場合は入力された回答です。同じ名前に対して両方を取得することはオプションではありません (標準で許可されておらず、いずれにせよ動作が定義されているものではありません)。
では、DNS サービス プロバイダーはこれをどのように実行できるのでしょうか?
CNAME
レコードを並べて追加できるという主張がA
真実であると仮定すると、彼らのサービスには何か不明なことが起きていることになります。
私はそれを 2 つの主なオプションに分けますが、詳細を知らなければ、どちらがあなたのケースに関連しているかを知ることは実際には不可能です。
- 彼らのシステムはユーザー入力を直接使用するのではなく、何らかの方法でそれを有効なものに変換します。競合するレコードの 1 つを追加し、もう 1 つは追加しない (つまり、UI があまり良くない) か、または、
CNAME
ユーザーが入力したレコードを実際に提供するのではなく、正規名から関連するレコードを解決し、エイリアス名に直接あるかのように提供する、何らかの形式の「CNAME フラット化」機能を備えている可能性があります (これは非標準の機能ですが、一部のサービスでは、このタイプの動的ルックアップを実装して「フラット化」していますCNAME
)。 - 彼らのシステムは壊れており、仕様で許可されていない矛盾したデータをユーザーが追加できるようにしており、何らかの形で奇妙な問題を引き起こすことが予想されます (サービスが壊れるか、サービスが実際に矛盾したデータを提供することでリゾルバー側で問題が発生する場合があります)。ユーザーは、自分のサービスでこの種の破損を利用することで、自ら足を撃つことになります。