Tôi có thể sử dụng CNAME với địa chỉ IP không? Tại sao nếu làm việc (đôi khi)?


13

Tôi tin rằng câu trả lời dễ nhất cho câu hỏi đầu tiên là "Không, bạn có" A "cho điều này", nhưng tôi đã vô tình thiết lập một số tên miền phụ bằng cách sử dụng CNAME trỏ đến địa chỉ IP và nó hoạt động trên một số máy tính trong văn phòng của tôi. Tôi tự hỏi làm thế nào nó có thể?

Bây giờ, khi tôi kiểm tra nó ở nhà, tôi gặp lỗi sau:

beast:~ viroos$ host somesubdomain.somedomain.com
Host somesubdomain.somedomain.com not found: 3(NXDOMAIN)

Tôi 100% nó từng làm việc tại văn phòng của tôi (hiện tại có vẻ như không, nhưng tôi đang kiểm tra nó trên máy khác). Do đó, tôi không 100% nếu nó hoạt động do một số thiết lập mạng đặc biệt hoặc do tôi đã kiểm tra nó ngay sau khi thêm mục nhập DNS.

Tôi biết câu chuyện này nghe có vẻ hơi điên rồ / khó tin, nhưng ai đó có thể giúp tôi giải câu đố này không.

// chỉnh sửa: Tôi đang thêm đầu ra đào

; <<>> DiG 9.6-ESV-R4-P3 <<>> somesubdomain.somedomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60224
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;somesubdomain.somedomain.com.      IN  A

;; ANSWER SECTION:
somesubdomain.somedomain.com.   67  IN  CNAME   xxx.xxx.xxx.xx1.

;; AUTHORITY SECTION:
.           1800    IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2012040901 1800 900 604800 86400

;; Query time: 72 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Apr 10 00:11:01 2012
;; MSG SIZE  rcvd: 136

2
Bạn có chắc chắn đó không phải là thứ gì đó làm cho máy văn phòng hoạt động? Các mục lưu trữ? Máy chủ có thẩm quyền cho tên miền đó trên mạng cục bộ ghi đè độ phân giải công khai? Lưu trữ tập tin?
Shane Madden

Nói chính xác thì nó hoạt động trên hai máy, cả hai đều là OSX Nó không hoạt động trên máy Ubuntu. Vì nó đang hoạt động trên hai máy nên tôi đã bỏ qua vấn đề "ubfox" (đó là một lỗi) vì tôi tin rằng đó là vấn đề lan truyền dns hoặc bộ nhớ cache dns. Tôi chỉ kiểm tra thiết lập DNS trên mỗi máy khách và nó giống nhau (điều này không chắc chắn về lý thuyết lan truyền DNS). Một trong những máy đó là MacBook của tôi và tôi hiện đang sử dụng nó ở nhà và trang web tôi thiết lập không hoạt động chính xác nữa: "Không thể tìm thấy máy chủ tại somesubdomain.somedomain.com, vì DNS tra cứu thất bại. "
Maciek Sawicki

Điều gì trả về khi bạn truy vấn tên bằng cách sử dụng dig?
Shane Madden

Tôi đã thêm đầu ra đào, để câu hỏi.
Maciek Sawicki

Tôi hoàn toàn nghi ngờ các máy tính OSX đang sử dụng thứ gì đó không phải DNS để thực hiện tra cứu, như mDNS (hoàn toàn không giống nhau).
Chris S

Câu trả lời:


16

Dữ liệu trên một CNAMEbản ghi phải luôn là một tên DNS khác - đó là toàn bộ điểm của a CNAME.

Như được đặt ngắn gọn bởi RFC 1034, dữ liệu trong CNAMEphải là:

            CNAME           a domain name.

Trong khi, nếu bạn đang muốn trỏ đến một địa chỉ IP, thì vé của bạn là:

            A               For the IN class, a 32 bit IP address

CNAMEđược thiết kế và triển khai để trở thành bí danh DNS; nó không có khái niệm về việc có một địa chỉ IP trong trường dữ liệu đó. Như vậy, nó được hiểu là bí danh của một tên DNS khác, như được thiết kế; Rốt cuộc, một địa chỉ IP phù hợp với cú pháp của tên DNS.

Vì vậy, ví dụ như, hãy giả sử dữ liệu DNS của bạn là:

somesubdomain.somedomain.com.   60  IN  CNAME   192.0.2.1.

Máy chủ DNS đệ quy mà bạn đang truy vấn thấy rằng bản ghi là một CNAMEvà số liệu bạn sẽ muốn dữ liệu thực mà nó chứa. Không có hồ sơ nào khác ngoài việc CNAMEđã được tìm thấy, vì vậy không có câu trả lời nào cho khách hàng.

Nó cố gắng truy vấn một bản ghi cho một tên máy chủ 192, trong miền 0.2.1. Nó không có bất cứ thứ gì được lưu trong bộ nhớ cache cho tên đó, vì vậy nó yêu cầu các máy chủ gốc. Họ phục vụ các yêu cầu cho các TLD như .com.net, nhưng yêu cầu này là một yêu cầu cho .1. Họ nhanh chóng trả lời rằng không có như vậy, và đó là những gì người đệ quy gửi cho bạn.

Câu trả lời mà bạn đang thấy diglà máy chủ tên đệ quy của bạn nói rằng "ừm, cái tên bạn tìm kiếm được chỉ ra ở một nơi khác và nơi nào đó không tồn tại - hãy hỏi máy chủ gốc nếu bạn không tin tôi".


Vì vậy, vâng, việc đặt địa chỉ IP trong CNAMEhồ sơ là không bao giờ hợp lệ và tôi nghi ngờ rằng các hệ thống đang hoạt động chính xác thông qua một số cơ chế khác, như tệp máy chủ hoặc phân giải tên cục bộ - điều tra hành vi phân giải tên của chúng.


2

cname là tên chính tắc, chỉ là bí danh của một tên khác, thường là bản ghi A hoặc tên khác, v.v. Nếu bạn thiết lập cname để trỏ đến một IP, thì đó chỉ là bí danh của IP đó. Tôi không nghĩ rằng máy chủ DNS của bạn kiểm tra xem mục tiêu có hợp pháp hay không, bởi vì RFC tiêu chuẩn không thực sự nói định dạng / xác thực dữ liệu cho mục tiêu của cname là gì. Đây không phải là cách sử dụng thông thường, nhưng nếu nó hoạt động cho bạn thì nó đang hoạt động. Thực tế là đôi khi nó không hoạt động nên đủ để bạn sử dụng những gì nó được sử dụng theo quy ước, tôi nghĩ vậy.


0

Bạn có thể có:

example IN CNAME 1.2.3.4.

Trong đó 1.2.3.4 là một địa chỉ IP hoạt động. Lưu ý dấu chấm trong CNAME mặc dù. Thực tế là một số máy trong văn phòng của bạn hoạt động với điều này, trong khi những máy khác không khiến tôi tin rằng những máy nào có tên miền phụ được đặt trong lmhostshoặc /etc/hoststệp.


1
Mặc dù đó là dữ liệu hợp lệ cho CNAME, tôi khá chắc chắn rằng điều đó sẽ không gây ra sự tra cứu bổ sung .. ngoại trừ các máy chủ gốc, đối với một TLD không tồn tại có tên 4?
Shane Madden

Một tra cứu bổ sung sẽ được thực hiện với một host -atruy vấn BẤT K ((ví dụ ).
adamo

@ShaneMadden BTW, nhận xét của bạn làm tôi nhớ đến các TLD địa phương
adamo
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.