DNS, Ký tự đại diện có được ưu tiên hơn các CNAME cụ thể hơn không?


18

Chúng tôi có một ký tự đại diện được thiết lập để xử lý tất cả các tên miền phụ cho "example.com"

HỒ SƠ: * .example.com trỏ đến 10.10.10.10

Chúng tôi có một bản ghi A cụ thể hơn để xử lý một tên miền phụ đặc biệt (điều này hoạt động tốt):

Bản ghi: staging.example.com điểm 10.10.10.9

Vấn đề chúng tôi gặp phải là chúng tôi đang di chuyển sang một môi trường lưu trữ mới và chúng tôi đã được hướng dẫn sử dụng CNAME:

CNAME: new-staging.example.com trỏ đến proxy.heroku.com

Chúng tôi nghĩ rằng điều này sẽ làm việc. Tuy nhiên, new-staging.example.com phân giải thành ký tự đại diện cấp cao nhất 10.10.10.10 và không trỏ đến proxy.heroku.com.

Tôi đang thiếu gì? Điều này là không thể? Hay đây là thực hành xấu? Cảm ơn,


1
Bạn đang thiết lập trực tiếp thông qua giao diện web của ISP hay bạn đang chạy BIND hoặc djbdns chẳng hạn?
Jonathan Ross

Khi bạn nói "giải quyết ký tự đại diện cấp cao nhất", bạn sẽ thực hiện độ phân giải này như thế nào? dig -t ANY new-staging.example.com?
nickgrim

@Jonathan, chúng tôi hiện đang sử dụng Slicehost để quản lý DNS, do đó, thông qua giao diện web.
zdennis

@nickgrim khi chạy dig -t MỌI new-staging.example.com chúng tôi nhận được: new-staging.example.com. 82880 IN CNAME proxy.heroku.com.example.com. proxy.heroku.com. 86400 VÀO 10.10.10.10
zdennis

Câu trả lời:


15

Câu trả lời thường là "Không" - hồ sơ cụ thể hơn sẽ giành chiến thắng, vì vậy điều này sẽ hoạt động như bạn mô tả / dự kiến. Tôi đoán là bạn có ký tự đại diện Một bản ghi được lưu trong bộ nhớ cache ở đâu đó và cần đợi bộ đệm đó hết hạn.

thử nghiệm nhanh với BIND 9.6.2-P2 / FreeBSD 8.1:
Vùng chứa các bản ghi:

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.

Giải quyết như sau:

% 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

(Trả về CNAME)

% 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

(Trả về bản ghi ký tự đại diện A)


Đây có phải là trong các tiêu chuẩn DNS, hoặc đây là cụ thể thực hiện?
Bigbio2002

@ Bigbio2002 Tôi tin rằng đó là một phần của tiêu chuẩn - RFC 4592 là nơi thích hợp để xem xét - bộ não của tôi hơi khó chịu khi viết tài liệu cả ngày để đọc RFC mặc dù vậy nếu tôi sai hãy tát tôi với phần có liên quan :-)
voretaq7

7

Theo nhận xét của bạn về câu hỏi:

khi chạy dig -t MỌI new-staging.example.com chúng tôi nhận được: new-staging.example.com. 82880 IN CNAME proxy.heroku.com.example.com. proxy.heroku.com. 86400 VÀO 10.10.10.10

... Bạn đã cấu hình sai DNS. Bạn cần đặt mục tiêu của CNAME thành proxy.heroku.com.- giai đoạn cuối cùng rất quan trọng! Không có nó, máy chủ DNS của bạn cho rằng bạn đang đề cập đến một máy chủ trong example.comkhu vực của bạn - proxy.heroku.com.example.com- và điều đó đang bị bắt bởi bản ghi ký tự đại diện.


Chúng tôi đã có bản ghi CNAME được đặt thành "proxy.heroku.com." Khi chúng tôi đào trực tiếp máy chủ tên slhost (dig @ ns1.slicehost.com), câu trả lời duy nhất đã cung cấp điểm cho CNAME cho proxy.heroku.com. Khi chúng tôi đào mà không chỉ định nó sẽ cho chúng tôi hai câu trả lời (những câu tôi đã đăng ở trên mà câu trả lời của bạn ở đây phản ánh). Điều này khiến tôi nghĩ rằng có lẽ @ voretaq7 có thể nghĩ đúng là có vấn đề về bộ đệm? Điều đó có phù hợp với những gì tôi thấy khi đào không?
zdennis

Vâng, điều đó dường như ngụ ý rằng một bộ đệm DNS-ngược dòng của bạn đã lưu bộ đệm phiên bản không chính xác (không theo chu kỳ). Bạn sẽ phải đợi cho đến khi hết hạn và / hoặc thiết lập một tên khác trong thời gian này ( new-new-staging?).
nickgrim

Dấu chấm còn thiếu là điều làm tôi vấp ngã.
loevborg

0

Tôi đã xem qua bài đăng này để nghiên cứu cách thực hiện một máy chủ Plesk Linux được chia sẻ. Trong ví dụ của họ, họ đề cập đến một giải pháp kết hợp DNS / vhost.conf nơi bạn phải thêm vào cả vhost.conf và cập nhật DNS.

Trích dẫn: "Nó phải là cái cuối cùng trong danh sách tên miền phụ, được sắp xếp theo thứ tự abc, vì vậy hãy bắt đầu tên của nó bằng" zz. " Http://kb.parallels.com/2239

Tôi đoán là điều này khác với lý thuyết DNS 'bình thường', theo đó bản ghi cụ thể hơn sẽ được trả về.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.