Bisakah saya menggunakan CNAME dengan alamat ip? Mengapa Jika berhasil (kadang-kadang)?

13

Saya percaya bahwa jawaban termudah untuk pertanyaan pertama adalah "Tidak, Anda memiliki" A "untuk ini", tetapi saya tidak sengaja mengatur beberapa subdomain menggunakan CNAME yang menunjuk ke alamat ip dan itu berfungsi pada beberapa komputer di kantor saya. Saya bertanya-tanya bagaimana itu mungkin?

Sekarang, ketika saya memeriksanya dari rumah saya memiliki kesalahan berikut:

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

Saya 100% dulu bekerja di kantor saya (saat ini sepertinya tidak, tapi saya memeriksanya di mesin yang berbeda). Oleh karena itu saya tidak 100% jika berhasil karena beberapa pengaturan jaringan khusus atau karena saya mengujinya setelah menambahkan entri DNS.

Saya tahu cerita ini terdengar, sedikit gila / luar biasa, tetapi dapatkah seseorang membantu saya memecahkan teka-teki ini.

// edit: Saya menambahkan gali keluaran

; <<>> 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
Maciek Sawicki
sumber
2
Apakah Anda yakin itu bukan sesuatu yang lain yang membuat mesin kantor bekerja? Entri dalam cache? Server resmi untuk domain itu di jaringan lokal mengesampingkan resolusi publik? Host file?
Shane Madden
Tepatnya itu bekerja pada dua mesin, keduanya OSX. Itu tidak bekerja pada mesin Ubuntu. Karena itu bekerja pada dua mesin saya mengabaikan masalah "ubuntu" (itu adalah kesalahan) karena saya percaya itu adalah masalah propagasi dns atau dns cache. Saya hanya memeriksa pengaturan DNS pada setiap klien dan itu sama (ini meninggalkan beberapa ketidakpastian mengenai teori propagasi DNS). Salah satu mesin itu adalah MacBook saya dan saya saat ini menggunakannya dari rumah dan situs web yang saya setup tidak berfungsi dengan benar lagi: "Server di somesubdomain.somedomain.com tidak dapat ditemukan, karena DNS pencarian gagal. "
Maciek Sawicki
Apa yang dikembalikan saat Anda meminta nama menggunakan dig?
Shane Madden
Saya menambahkan gali keluaran, ke pertanyaan.
Maciek Sawicki
Saya sangat curiga komputer OSX menggunakan sesuatu selain DNS untuk melakukan pencarian, seperti mDNS (yang sama sekali tidak sama).
Chris S

Jawaban:

16

Data pada CNAMEcatatan harus selalu berupa nama DNS lain - itulah inti dari suatu CNAME.

Seperti yang dijelaskan secara ringkas oleh RFC 1034, data dalam a CNAMEharus:

            CNAME           a domain name.

Sementara, jika Anda ingin menunjuk ke alamat IP, maka tiket Anda adalah:

            A               For the IN class, a 32 bit IP address

CNAMEdirancang dan diimplementasikan menjadi alias DNS; tidak memiliki konsep memiliki alamat IP di bidang data itu. Dengan demikian, itu ditafsirkan sebagai alias ke nama DNS lain, seperti yang dirancang; setelah semua, alamat IP sesuai dengan sintaks nama DNS.

Jadi, misalnya, katakanlah data DNS Anda adalah:

somesubdomain.somedomain.com.   60  IN  CNAME   192.0.2.1.

Server DNS rekursif yang Anda query melihat bahwa catatan itu adalah CNAME, dan angka yang Anda inginkan dari data aktual yang dikandungnya. Tidak ada catatan selain yang CNAMEtelah ditemukan, jadi tidak ada jawaban untuk diberikan kepada klien.

Mencoba untuk meminta catatan nama host 192, dalam domain 0.2.1. Tidak ada sesuatu yang di-cache untuk nama itu, jadi ia meminta server root. Mereka melayani permintaan untuk TLD seperti .comdan .net, tetapi permintaan ini adalah permintaan untuk .1. Mereka segera menjawab bahwa tidak ada yang seperti itu, dan itulah yang dikirim oleh perulang kepada Anda.

Respons yang Anda lihat digadalah server nama rekursif Anda mengatakan, "baiklah, nama yang Anda cari tunjukkan di tempat lain, dan di suatu tempat tidak ada - tanyakan server root jika Anda tidak percaya padaku".


Jadi, ya, memasukkan alamat IP ke dalam CNAMEcatatan tidak pernah valid, dan saya menduga bahwa sistem yang berfungsi berfungsi dengan benar melalui beberapa mekanisme lain, seperti file host atau resolusi nama lokal - selidiki perilaku resolusi nama mereka.

Shane Madden
sumber
2

cname adalah nama kanonik, yang hanya merupakan alias dari nama lain, yang biasanya merupakan catatan A atau cname lain, dll. Jika Anda mengatur cname untuk menunjuk ke IP, maka itu hanyalah alias dari IP itu. Saya tidak berpikir server DNS Anda memeriksa apakah target itu sah atau tidak, karena RFC standar tidak benar-benar mengatakan apa format data / validasi untuk target cname. Ini bukan penggunaan yang biasa, tetapi jika itu berfungsi untuk Anda maka itu berfungsi. Fakta bahwa itu tidak berfungsi terkadang harus cukup bagi Anda untuk menggunakan apa yang digunakan secara konvensional, saya pikir.

johnshen64
sumber
0

Kamu bisa memiliki:

example IN CNAME 1.2.3.4.

di mana 1.2.3.4 adalah alamat IP yang berfungsi. Perhatikan titik trailing di CNAME. Fakta bahwa beberapa mesin di kantor Anda bekerja dengan ini, sementara yang lain tidak membuat saya percaya bahwa yang memiliki subdomain diatur dalam file lmhostsatau /etc/hosts.

adamo
sumber
1
Meskipun itu data yang valid untuk CNAME, saya cukup yakin itu tidak akan memicu pencarian tambahan .. kecuali terhadap server root, untuk TLD yang tidak ada bernama 4?
Shane Madden
Pencarian tambahan akan dilakukan dengan host -akueri APAPUN (mis. ).
adamo
@ShaneMadden BTW, komentar Anda mengingatkan saya pada TLD lokal
adamo