DNS, Do A Record wildcard memiliki prioritas di atas CNAME yang lebih spesifik?

18

Kami telah menyiapkan wildcard untuk menangani semua subdomain untuk "example.com"

A RECORD: * .example.com menunjuk ke 10.10.10.10

Kami memiliki catatan A yang lebih spesifik untuk menangani subdomain khusus (ini berfungsi dengan baik):

A Record: staging.example.com poin 10.10.10.9

Masalah yang kami alami adalah kami memigrasi pementasan ke lingkungan hosting baru dan kami telah diperintahkan untuk menggunakan CNAME:

CNAME: new-staging.example.com menunjuk ke proxy.heroku.com

Kami pikir ini akan berhasil. Namun, new-staging.example.com memutuskan untuk wildcard tingkat atas 10.10.10.10 dan tidak menunjuk ke proxy.heroku.com.

Apa yang saya lewatkan? Apakah ini tidak mungkin? Atau apakah ini praktik buruk? Terima kasih,

zdennis
sumber
1
Apakah Anda mengatur ini langsung melalui antarmuka web ISP atau apakah Anda menjalankan BIND atau djbdns misalnya?
Jonathan Ross
Ketika Anda mengatakan "menyelesaikan ke wildcard tingkat atas", bagaimana Anda melakukan resolusi ini? dig -t ANY new-staging.example.com?
jemaah
@ Jonathan, kami saat ini menggunakan Slicehost untuk mengelola DNS, jadi itu melalui antarmuka web.
zdennis
@nickgrim ketika menjalankan menggali -t APA PUN baru-staging.example.com kita dapatkan: new-staging.example.com. 82880 DALAM CNAME proxy.heroku.com.example.com. proxy.heroku.com.example.com. 86400 DALAM A 10.10.10.10
zdennis

Jawaban:

15

Jawabannya umumnya "Tidak" - catatan yang lebih spesifik harus menang, jadi ini harus bekerja seperti yang Anda gambarkan / harapkan. Dugaan saya adalah Anda memiliki catatan wildcard A di-cache di suatu tempat, dan perlu menunggu cache itu berakhir.

tes cepat dengan BIND 9.6.2-P2 / FreeBSD 8.1:
Zona yang berisi catatan:

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.

Dipecahkan sebagai berikut:

% 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

(Mengembalikan CNAME)
dan

% 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

(Mengembalikan catatan wildcard A)

voretaq7
sumber
Apakah ini dalam standar DNS, atau ini khusus implementasi?
Bigbio2002
@ Bigbio2002 Saya percaya ini adalah bagian dari standar - RFC 4592 adalah tempat yang relevan untuk melihat - otak saya agak terlalu pekat dari menulis dokumentasi sepanjang hari sampai perut membaca RFC meskipun jadi jika saya salah tolong tampar saya dengan bagian yang relevan :-)
voretaq7
7

Menurut komentar Anda pada pertanyaan:

saat menjalankan dig -t APA PUN baru-staging.example.com kita mendapatkan: new-staging.example.com. 82880 DALAM CNAME proxy.heroku.com.example.com. proxy.heroku.com.example.com. 86400 DALAM A 10.10.10.10

... Anda telah salah mengonfigurasi DNS. Anda perlu mengatur target CNAME proxy.heroku.com.- periode terakhir itu penting! Tanpa itu, server DNS Anda menganggap Anda merujuk ke host di dalam example.comzona Anda - proxy.heroku.com.example.com- dan itu ditangkap oleh wildcard-record.

pendatang
sumber
Data CNAME kami atur ke "proxy.heroku.com." Ketika kami menggali langsung server nama slicehost (dig @ ns1.slicehost.com), satu-satunya jawaban yang diberikan poin ke CNAME untuk proxy.heroku.com. Ketika kami menggali tanpa menyebutkannya, kami memberikan dua jawaban (yang saya posting di atas yang mencerminkan jawaban Anda di sini). Ini membuat saya berpikir bahwa mungkin @ voretaq7 mungkin benar berpikir ada masalah cache? Apakah itu sejalan dengan apa yang saya lihat saat menggali?
zdennis
Ya, itu sepertinya menyiratkan bahwa cache DNS-upstream Anda telah men-cache versi yang salah (non-periode). Anda harus menunggu TTL kedaluwarsa dan / atau mengatur nama yang berbeda untuk sementara waktu ( new-new-staging?).
jemaah
Titik yang hilang adalah yang membuat saya tersandung juga.
loevborg
0

Saya menemukan posting ini meneliti bagaimana ini dilakukan server Linux Plesk bersama. Dalam contoh mereka, mereka merujuk ke solusi kombinasi DNS / vhost.conf di mana Anda harus menambahkan vhost.conf dan memperbarui DNS.

Quote: "Itu harus menjadi yang terakhir dalam daftar subdomain, yang dipesan secara alfabet, jadi mulailah namanya dengan" zz. " Http://kb.parallels.com/2239

Dugaan saya adalah ini berbeda dari teori DNS 'normal' di mana catatan yang lebih spesifik akan dikembalikan.

Eugene van der Merwe
sumber