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.