DNS, czy symbole wieloznaczne A Record mają pierwszeństwo przed bardziej szczegółowymi CNAME?


18

Mamy symbol wieloznaczny skonfigurowany do obsługi wszystkich subdomen dla „example.com”

REJESTR: * .example.com wskazuje na 10.10.10.10

Mamy bardziej szczegółowy rekord A do obsługi specjalnej subdomeny (działa to dobrze):

Rekord: staging.example.com punkty 10.10.10.9

Problem, który mamy, polega na tym, że migrujemy staging do nowego środowiska hostingowego i otrzymaliśmy polecenie użycia CNAME:

CNAME: new-staging.example.com wskazuje na proxy.heroku.com

Myśleliśmy, że to zadziała. Jednak new-staging.example.com rozwiązuje problem z symbolem wieloznacznym najwyższego poziomu 10.10.10.10 i nie wskazuje na proxy.heroku.com.

czego mi brakuje? Czy to nie jest możliwe? Czy to zła praktyka? Dzięki,


1
Czy ustawiasz to na żywo za pośrednictwem interfejsu internetowego dostawcy usług internetowych, czy na przykład używasz BIND lub djbdns?
— Jonathan Ross

Kiedy mówisz „rozwiązuje do wieloznacznego najwyższego poziomu”, jak sobie radzisz z tą rozdzielczością? dig -t ANY new-staging.example.com?
— nickgrim

@Jonathan, obecnie używamy Slicehost do zarządzania DNS, więc odbywa się to za pośrednictwem interfejsu internetowego.
— zdennis

@nickgrim przy uruchomieniu dig -t KAŻDY nowy-staging.example.com otrzymujemy: nowy-staging.example.com. 82880 W CNAME proxy.heroku.com.example.com. proxy.heroku.com.example.com. 86400 IN A 10.10.10.10
— zdennis

Odpowiedzi:


15

Odpowiedź brzmi „Nie” - bardziej konkretny rekord powinien wygrać, więc powinien działać zgodnie z opisem / oczekiwaniami. Domyślam się, że masz gdzieś buforowany symbol wieloznaczny i musisz poczekać, aż pamięć podręczna wygaśnie.

szybki test z BIND 9.6.2-P2 / FreeBSD 8.1:
Strefa zawierająca rekordy:

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.

Rozwiązuje się w następujący sposób:

% 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

(Zwraca CNAME)
i

% 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

(Zwraca rekord wieloznaczny A)


Czy jest to zgodne ze standardami DNS, czy jest to specyficzne dla implementacji?
— Bigbio2002

@ Bigbio2002 Wydaje mi się, że jest to część standardu - RFC 4592 jest właściwym miejscem do spojrzenia - mój mózg jest trochę zbyt wybredny z pisania dokumentacji przez cały dzień, aby przeczytać żołądek czytając RFC, ale jeśli się mylę, proszę dać mi odpowiednią sekcję :-)
— voretaq7

7

Zgodnie z komentarzem do pytania:

podczas uruchamiania dig -T KAŻDEGO -staging.example.com otrzymujemy: new-staging.example.com. 82880 W CNAME proxy.heroku.com.example.com. proxy.heroku.com.example.com. 86400 IN A 10.10.10.10

... źle skonfigurowałeś DNS. Musisz ustawić cel CNAME na proxy.heroku.com.- końcowy okres jest ważny! Bez tego twój serwer DNS zakłada, że ​​masz na myśli hosta w twojej example.comstrefie - proxy.heroku.com.example.com- i to jest przechwytywane przez rekord wieloznaczny.


Mamy ustawiony rekord CNAME na „proxy.heroku.com”. Kiedy kopiemy serwer nazw slicehost bezpośrednio (dig @ ns1.slicehost.com), jedyna podana odpowiedź wskazuje na CNAME dla proxy.heroku.com. Kiedy kopiemy bez podania, daje nam dwie odpowiedzi (te, które zamieściłem powyżej, które odzwierciedlają twoją odpowiedź tutaj). To sprawia, że ​​myślę, że być może @ voretaq7 może słusznie myśleć, że występuje problem z pamięcią podręczną? Czy to zgadza się z tym, co widzę podczas kopania?
— zdennis

Tak, wydaje się to sugerować, że pamięć podręczna DNS powyżej ciebie buforowała niepoprawną (nieokresową) wersję. W międzyczasie musisz poczekać na wygaśnięcie TTL i / lub ustawić inną nazwę ( new-new-staging?).
— nickgrim

Brakująca kropka mnie też potknęła.
— loevborg

0

Zetknąłem się z tym postem, badając, jak to się robi w przypadku udostępnionego serwera Plesk Linux. W ich przykładzie odnoszą się do kombinacji rozwiązania DNS / vhost.conf, w której należy dodać zarówno plik vhost.conf, jak i zaktualizować DNS.

Cytat: „Musi to być ostatni na liście subdomen uporządkowanej alfabetycznie, więc zacznij jego nazwę od„ zz ”. Http://kb.parallels.com/2239

Sądzę, że różni się to od „normalnej” teorii DNS, zgodnie z którą zwracany byłby bardziej szczegółowy rekord.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.