DNS, A Record joker karakterlerinin daha spesifik CNAME'lere göre önceliği var mı?


18

"Example.com" için tüm alt alan adlarını işleyecek bir joker karakter ayarladık

Bir KAYIT: * .example.com 10.10.10.10'u gösterir

Özel bir alt alan adını işlemek için daha spesifik bir A kaydımız var (bu iyi çalışıyor):

Bir Kayıt: staging.example.com 10.10.10.9'u gösteriyor

Yaşadığımız sorun, sahnelemeyi yeni bir barındırma ortamına geçirmemiz ve bize bir CNAME kullanmamız talimatı verildi:

CNAME: new-staging.example.com, proxy.heroku.com'u gösteriyor

Bunun işe yarayacağını düşündük. Ancak, new-staging.example.com üst düzey joker karakter 10.10.10.10'a gider ve proxy.heroku.com'u göstermez.

Neyi kaçırıyorum? Bu mümkün değil mi? Yoksa bu kötü bir uygulama mı? Teşekkürler,


1
Bunu bir ISS'nin web arayüzü üzerinden canlı olarak mı ayarlıyorsunuz, örneğin BIND veya djbdns mi çalıştırıyorsunuz?
Jonathan Ross

"En üst düzey joker karaktere gider" dediğinizde, bu çözümü nasıl yapıyorsunuz? dig -t ANY new-staging.example.com?
nickgrim

@Jonathan, DNS'yi yönetmek için şu anda Slicehost kullanıyoruz, bu yüzden bir web arayüzü üzerinden.
zdennis

@ nickprim dig -t ANY new-staging.example.com çalıştırırken: new-staging.example.com alırız. 82880 IN CNAME proxy.heroku.com.example.com. proxy.heroku.com.example.com. 86400 IN A 10.10.10.10
zdennis

Yanıtlar:


15

Cevap genellikle "Hayır" dır - daha spesifik kayıt kazanmalıdır, bu yüzden bu sizin tanımladığınız / beklediğiniz gibi çalışmalıdır. Benim tahminim, joker karakter A kaydının bir yerde önbelleğe alınması ve bu önbelleğin süresinin dolmasını beklemeniz.

BIND 9.6.2-P2 / FreeBSD 8.1 ile hızlı bir test:
Kayıtları içeren bir bölge:

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.

Aşağıdaki gibi çözümlenir:

% 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'yi döndürür)
ve

% 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

(Joker karakter A kaydını döndürür)


Bu DNS standartlarında mı yoksa uygulamaya özel mi?
Bigbio2002

@ Bigbio2002 Bu standardın bir parçası olduğuna inanıyorum - RFC 4592 bakmak için uygun bir yer - beynim bütün gün RFC okumak için mideye dokümantasyon yazmaktan biraz fazla çorba ama bu yüzden yanılıyorsam lütfen ilgili bölümle tokatlayın :-)
voretaq7

7

Soru hakkındaki yorumunuza göre:

dig -t ANY new-staging.example.com komutunu çalıştırdığımızda şunu elde ederiz: 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'yi yanlış yapılandırdınız. CNAME hedefini ayarlamanız gerekir proxy.heroku.com.- son dönem önemlidir! Bu olmadan, DNS sunucunuz bölgenizdeki bir ana makineye başvurduğunuzu varsayar example.com- proxy.heroku.com.example.com- ve bu joker kayıt tarafından yakalanır.


CNAME kaydını "proxy.heroku.com" olarak ayarladık. Slicehost ad sunucusunu doğrudan kazdığımızda (dig @ ns1.slicehost.com), verilen tek yanıt proxy.heroku.com için CNAME'ye işaret eder. Belirtmeden kazdığımızda bize iki cevap verir (cevabınızı yansıtan yukarıda yazdığım cevaplar). Bu, belki de @ voretaq7'nin önbellek sorunu olduğunu düşünebileceğini düşündürüyor? Bu, kazarken gördüğüm şeye uyuyor mu?
zdennis

Evet, bu, önünüzdeki bir DNS önbelleğinin yanlış (dönem dışı) sürümü önbelleğe aldığı anlamına geliyor. Bu süre zarfında TTL'nin süresinin dolmasını ve / veya farklı bir ad ayarlamasını beklemeniz gerekir ( new-new-staging?).
nickgrim

Eksik nokta beni de harekete geçirdi.
loevborg

0

Paylaşılan bir Plesk Linux sunucusunun nasıl yapıldığını araştıran bu yazıyla karşılaştım. Örneklerinde, hem vhost.conf dosyasına eklemeniz hem de DNS'yi güncellemeniz gereken bir kombinasyon DNS / vhost.conf çözümüne başvuruyorlar.

Alıntı: "Alfabetik sıraya göre alt alan listesinde sonuncu olmalıdır, bu yüzden adını" zz "ile başlatın. Http://kb.parallels.com/2239

Tahminimce bu daha normal kayıtların döndürüleceği 'normal' DNS teorisinden farklıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.