Chuỗi CNAME đến CNAME có được phép không?


68

Được phép trong DNS có bản ghi CNAME trỏ đến bản ghi CNAME khác không?

Lý do chúng tôi cần điều này là vì chúng tôi có một tên máy chủ mà chúng tôi muốn tìm kiếm theo địa chỉ IP của máy tính máy chủ web của chúng tôi. Chúng tôi cũng có một máy tính máy chủ web khác có thể được kích hoạt trong trường hợp cái đầu tiên sẽ chết. Trong trường hợp như vậy, chúng tôi sẽ nhanh chóng cần trỏ tên máy chủ đến địa chỉ IP của máy chủ web.

Thật không may, tên máy chủ lưu trữ trong một miền DNS, nơi mọi thay đổi sẽ mất nhiều thời gian do hoạt động thủ công phụ thuộc vào các hệ thống khác. Nhưng chúng tôi có một miền DNS khác, nơi chúng tôi có thể tự thực hiện các thay đổi một cách nhanh chóng. Có chuỗi CNAME để CNAME dường như là một giải pháp khả thi. Nhưng nó có được phép không? Trình duyệt web sẽ hiểu nó?

Câu trả lời:


81

Từ RFC 1034 - Tên miền - khái niệm và phương tiện :

Tên miền trong RR mà trỏ vào tên khác phải luôn luôn chỉ vào tên chính chứ không phải bí danh. Điều này tránh được sự thiếu sót trong việc truy cập thông tin. Ví dụ: địa chỉ để đặt tên RR cho máy chủ lưu trữ ở trên phải là:

52.0.0.10.IN-ADDR.ARPA  IN      PTR     C.ISI.EDU

thay vì chỉ vào USC-ISIC.ARPA. Tất nhiên, theo nguyên tắc mạnh mẽ, phần mềm miền không nên thất bại khi được trình bày với các chuỗi hoặc vòng lặp CNAME; Các chuỗi CNAME phải được theo dõi và các vòng lặp CNAME báo hiệu là một lỗi.

Vì vậy, có, nó được cho phép và phần mềm được viết đúng sẽ xử lý nó tốt. Tuy nhiên, chuỗi CNAME không được coi là thông lệ tốt và áp đặt chi phí cho cơ sở hạ tầng.


3
+1 cho tham chiếu RFC
Alnitak

16
Mặc dù tôi làm điều này mọi lúc, trích dẫn ở trên là ra khỏi bối cảnh. Ngay phía trên đoạn này, nó đọc ..Domain names in RRs which point at another name should always point at the primary name and not the alias. This avoids extra indirections in accessing information.
Molomby

3
Được đề cập bởi anh chàng mạng Microsoft Azure , chuỗi CNAME rất quan trọng để thực hiện cân bằng tải AnyCast cho họ.
Paul Lan

26

Chắc chắn, nó là có thể.

Mặc dù vậy, nó thường không được khuyến khích , vì lý do rõ ràng là nó sử dụng nhiều tài nguyên DNS hơn. Ví dụ:

foo   IN      CNAME  someserver.somehost.com.
bar   IN      CNAME  foo

Truy vấn 'thanh' sẽ dẫn đến việc CNAME foobị truy vấn, sau đó someserver.somehost.com.được truy vấn, dẫn đến một truy vấn bổ sung.

Đối với mỗi phần tử trong chuỗi bạn sẽ thêm, một truy vấn khác sẽ được yêu cầu.

Một lý do khác khiến điều này không được khuyến khích là, bằng cách tạo các chuỗi như thế này, cơ hội bạn sẽ tạo ra các vòng lặp CNAME bằng cách nào đó được tăng lên; những máy chủ DNS hiện tại sẽ được phát hiện tự động, nhưng vẫn sẽ gây ra một tải trọng lớn cho các máy chủ.


5

Vâng, nó được cho phép và sẽ hoạt động, nhưng nó không được coi là thực hành tốt. Nhiều tra cứu sử dụng nhiều tài nguyên hơn và có nguy cơ vô tình tạo ra một vòng lặp.

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.