LetsEncryptを有効にしたときに明らかになったサブドメイン名のDNS名前解決における特定の効果を理解するのに苦労しています。
私の質問の文脈:
ドメイン(basjes.nl)があり、そのドメイン内のすべてのホスト名を同じIPアドレスに解決するように設定しました。
DNSプロバイダー(Transip)のUIに、次のようなものが表示されます。
@ A x.x.x.x
* CNAME @
これで、指定したIPアドレスを取得できます。
Dig blurp.basjes.nl
最近、 ACME-DNSツール を展開し、適切なDNSエントリを設定して(つまり、auth.basjes.nlを自分のACME-DNSサーバーに委任して)、LetsEncryptがDNS経由で指定されたホスト名を所有していることを確認できるようにしました。
この特定のホスト名に対して、「フルネーム」のHTTPS証明書(ワイルドカードではない)が必要なので、次のようなものを追加しました。
_acme-challenge.blurp CNAME something.auth.basjes.nl.
このエントリを追加した後、Dig blurp.basjes.nl
を実行しても機能しなくなったことがわかりました。奇妙なことに、エラーが発生しない(つまり、NXDOMAINが発生しない)ので、何も表示されないか、単に表示されます。
;; AUTHORITY SECTION:
basjes.nl. 300 IN SOA ns0.transip.net. hostmaster.transip.nl. 2018041107 14400 1800 2419200 300
したがって、現時点では、次のようなものがあります。
@ A x.x.x.x
* CNAME @
_acme-challenge.blurp CNAME something.auth.basjes.nl.
このホスト名に明示的なDNSレコードを追加すると、突然再び機能することがわかりました。
@ A x.x.x.x
* CNAME @
blurp CNAME @
_acme-challenge.blurp CNAME something.auth.basjes.nl.
私が理解したい効果:
通常のDNSサーバーに問い合わせても解決しないのはなぜですか?
'*'レコードはまだ存在しています!
Dig blurp.basjes.nl @1.1.1.1
TransipのSOA DNSサーバー)に直接問い合わせると、なぜ解決するのですか?
Dig blurp.basjes.nl @ns0.transip.net
明示的なレコードを追加するときに解決されるのはなぜですか?
これは、私が現在それを機能させるための回避策として使用しているものです。
P.S.この質問を投稿する前に、Transipサポートに連絡しました。彼らはここで何がうまくいかなかったのか、そして/またはなぜこれが起こるのかを知りませんでした。
DNSは階層的です。 _acme-challenge.blurp.basjes.nl
という名前を追加した場合、それはblurp.basjes.nl
も暗黙的に追加されたことを意味します。ここで驚くべきことは、名前はコンテンツがなくても存在できるということです。 Dig
を使用してblurp.basjes.nl
を要求すると、完全に正確で正確な答えが得られました。名前は存在しますが、レコードは含まれていません。 DNSツリーでその下に他の名前があるという理由だけで名前が存在するこのケースは、空の非終端記号と呼ばれます。詳細を知りたい場合は、その用語をグーグルで検索できます。
それはあなたの紛らわしい行動の最初の部分です。 2番目の部分はこれです:要求された名前がまだ存在しない場合にのみ、ワイルドカードレコードを使用して回答を生成します。したがって、最初にblurp.basjes.nl
を要求し、ワイルドカードから生成された回答を取得しました。次に、_acme-challenge.blurp.basjes.nl
を追加しました。その後、もう一度質問したところ、(上記のように)blurp.basjes.nl
という名前が存在していたため、ワイルドカードは使用されませんでした。しかし、blurp.basjes.nl
にはレコードが含まれていなかったため、返されるのは空の応答だけでした。その後、blurp.basjes.nl
のCNAME
レコードを追加したので、もう一度尋ねると、それが返されます。
それは物事をクリアしますか?