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.