DNS、Aレコードのワイルドカードは、より具体的なCNAMEよりも優先されますか?


18

「example.com」のすべてのサブドメインを処理するためにワイルドカードが設定されています

レコード:* .example.comは10.10.10.10を指します

特別なサブドメインを処理する、より具体的なAレコードがあります(これは正常に機能します)。

Aレコード:staging.example.comは10.10.10.9を指します

私たちが抱えている問題は、ステージングを新しいホスティング環境に移行しており、CNAMEを使用するように指示されていることです。

CNAME:new-staging.example.comはproxy.heroku.comを指します

これでうまくいくと思いました。ただし、new-staging.example.comはトップレベルのワイルドカード10.10.10.10に解決され、proxy.heroku.comを指していません。

私は何が欠けていますか?これは不可能ですか?それともこれは悪い習慣ですか?おかげで、


1
これをISPのWebインターフェースでライブに設定していますか、それともBINDやdjbdnsを実行していますか?
ジョナサンロス

「トップレベルのワイルドカードに解決する」と言うとき、この解決方法はどうですか?dig -t ANY new-staging.example.com
ニックグリム

@Jonathan、現在Slicehostを使用してDNSを管理しているため、Webインターフェースを使用しています。
-zdennis

dig -t ANY new-staging.example.comを実行すると、@ nickgrimが取得されます:new-staging.example.com。82880 IN CNAME proxy.heroku.com.example.com proxy.heroku.com.example.com。86400 IN A 10.10.10.10
zdennis

回答:


15

答えは一般に「いいえ」です。より具体的なレコードが勝つはずです。したがって、これは説明した/期待したとおりに機能するはずです。私の推測では、どこかにキャッシュされたワイルドカードAレコードがあり、そのキャッシュの有効期限が切れるのを待つ必要があります。

BIND 9.6.2-P2 / FreeBSD 8.1を使用した簡単なテスト:
レコードを含むゾーン:

example.net.                IN      A      127.0.0.2
*.test.example.net.         IN      A      127.0.0.1
specific.test.example.net.  IN      CNAME  example.net.

次のように解決します。

% dig specific.test.example.net

; <<>> DiG 9.6.2-P2 <<>> specific.test.example.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17222
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;specific.test.example.net. IN  A

;; ANSWER SECTION:
specific.test.example.net. 3600 IN  CNAME   example.net.
example.net.               3600 IN  A   127.0.0.2

;; AUTHORITY SECTION:
example.net.        3600    IN  NS  ns1.example.net.

;; ADDITIONAL SECTION:
ns1.example.net.    3600    IN  A   127.0.0.1

(CNAMEを返します)
および

% dig nonspecific.test.example.net

; <<>> DiG 9.6.2-P2 <<>> nonspecific.test.example.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26980
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;nonspecific.test.example.net.  IN  A

;; ANSWER SECTION:
nonspecific.test.example.net. 3600 IN   A   127.0.0.1

;; AUTHORITY SECTION:
example.net.        3600    IN  NS  ns1.example.net.


;; ADDITIONAL SECTION:
ns1.example.net.    3600    IN  A   127.0.0.1

(ワイルドカードAレコードを返します)


これはDNS標準ですか、それとも実装固有ですか?
Bigbio2002

@ Bigbio2002 それは標準の一部であると信じています-RFC 4592は見るべき関連する場所です-私の脳はRFCを読んで一日中ドキュメントを書くことから少しあまりにもスープです:-)
voretaq7

7

質問に対するあなたのコメントによると:

dig -t ANY new-staging.example.comを実行すると、new-staging.example.comが取得されます。82880 IN CNAME proxy.heroku.com.example.com proxy.heroku.com.example.com。86400 IN A 10.10.10.10

... DNSを誤って設定しました。CNAMEのターゲットを設定する必要がありますproxy.heroku.com.-最終期間は重要です!これがないと、DNSサーバーは、example.comゾーン内のホストを参照していると想定しますproxy.heroku.com.example.com--そして、それはワイルドカードレコードによってキャッチされています。


CNAMEレコードが「proxy.heroku.com」に設定されています。slicehostネームサーバーを直接掘る(@ ns1.slicehost.comを掘る)場合、提供される唯一の回答はproxy.heroku.comのCNAMEを指します。指定せずに掘り下げると、2つの答えが得られます(上に投稿した答えは、ここでの答えが反映されるものです)。これはおそらく、@ voretaq7がキャッシュの問題があると考えているのではないかと思わせますか?それは掘ったときに見ているものと並んでいますか?
-zdennis

ええ、それはあなたの上流のDNSキャッシュが間違った(非周期)バージョンをキャッシュしたことを暗示しているようです。TTLが期限切れになるのを待つか、またはその間に別の名前を設定する必要がありnew-new-stagingます(?)。
ニックグリム

欠けている点も私をつまずかせた。
-loevborg

0

共有Plesk Linuxサーバーでこれがどのように行われるかを調査しているこの投稿に出会いました。それらの例では、vhost.confに追加してDNSを更新する必要があるDNS / vhost.confの組み合わせソリューションを参照しています。

引用:「アルファベット順に並べられたサブドメインリストの最後である必要があるため、名前を「zz」で始めてください。http ://kb.parallels.com/2239

私の推測では、これはより通常のDNS理論とは異なり、より具体的なレコードが返されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.