Чи можна використовувати CNAME з ip-адресою? Чому якщо працює (іноді)?


13

Я вважаю, що найпростіша відповідь на перше питання - "Ні, у вас є" A "для цього", але я випадково налаштував якийсь піддомен, використовуючи CNAME, що вказує на ip адресу, і він працював на кількох комп'ютерах у моєму кабінеті. Цікаво, як це було можливо?

Тепер, коли я перевіряю це вдома, у мене є така помилка:

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

Я на 100% працював у своєму офісі (зараз схоже, що це не так, але я перевіряю це на іншій машині). Тому я не на 100%, якщо це спрацювало через якісь спеціальні налаштування мережі або тому, що я перевірив це лише після додавання запису DNS.

Я знаю, що ця історія звучить, трохи шалено / неймовірно, але чи може хтось допомогти мені вирішити цю загадку.

// редагувати: я додаю висновок копати

; <<>> 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
Ви впевнені, що офісні машини не працювали щось інше? Кешовані записи? Авторитетний сервер для цього домену в локальній мережі, що перевищує загальну роздільну здатність? Хости файли?
Шейн Мадден

Якщо бути точним, він працював на двох машинах, обидва є OSX. Він не працював на машині Ubuntu. Оскільки він працював на двох машинах, я ігнорував проблему "ubuntu" (це була помилка), оскільки я вважав, що це проблема поширення dns або кеш-пам'ять dns. Я перевіряв налаштування DNS на кожному клієнті, і це було однаково (це залишало певну невизначеність щодо теорії поширення DNS). Однією з цих машин є мій MacBook, і я зараз використовую його на дому, і веб-сайт, який я налаштовую, більше не працює на ньому: "Сервер на somesubdomain.somedomain.com не може бути знайдений, оскільки DNS пошук не вдалося. "
Maciek Sawicki

Що повертається при запиті на ім’я за допомогою dig?
Шейн Мадден

Я додав висновок копати до питання.
Maciek Sawicki

Я дуже підозрюю, що комп'ютери OSX використовують щось інше, ніж DNS, щоб здійснити пошук, як-от mDNS (що зовсім не те саме).
Кріс С

Відповіді:


16

Дані CNAMEзапису завжди мають бути іншим іменем DNS - ось у чому вся суть CNAME.

Як CNAMEчітко сказано в RFC 1034, дані в а повинні бути:

            CNAME           a domain name.

Якщо ви хочете вказати на IP-адресу, ваш квиток:

            A               For the IN class, a 32 bit IP address

CNAMEрозроблений і реалізований як псевдонім DNS; він не має ідеї мати IP-адресу в цьому полі даних. Таким чином, він інтерпретується як псевдонім до іншого імені DNS, як було розроблено; врешті-решт, IP-адреса відповідає синтаксису імені DNS.

Так, для прикладу, скажімо, ваші дані DNS:

somesubdomain.somedomain.com.   60  IN  CNAME   192.0.2.1.

Рекурсивний DNS-сервер, який ви запитуєте, бачить, що запис є a CNAME, і цифри, які вам потрібні фактичних даних, які вони містять. Не CNAMEбуло знайдено жодного запису, окрім записів , тому відповіді надати клієнту немає.

Він намагається запитувати запис на ім’я хоста 192в межах домену 0.2.1. У ньому немає нічого кешованого цього імені, тому він запитує кореневі сервери. Вони обслуговують запити для TLD, як .comі .net, але цей запит є запитом .1. Вони негайно відповідають, що такого немає, і саме це рекурсор надсилає вам.

Відповідь, яку ви бачите, dig- це ваш рекурсивний сервер імен, який говорить: "ну, ім'я, на яке ви шукали, вказувало десь інше, і яке десь не існувало - запитайте кореневий сервер, якщо ви мені не вірите".


Так, так, введення IP-адреси до CNAMEзапису ніколи не є дійсним, і я підозрюю, що системи, які працюють, функціонують правильно через якийсь інший механізм, наприклад, файл хостів або дозвіл локального імені, - досліджують поведінку їх роздільної здатності.


2

cname - це канонічне ім'я, яке є лише псевдонімом іншого імені, яке зазвичай є записом A або іншим ім'ям і т. д. Якщо ви встановите cname для вказівки на IP, то це просто псевдонім цього IP. Я не думаю, що ваш DNS-сервер перевіряє, чи є ціль законною чи ні, оскільки стандарт RFC насправді не говорить про те, що таке формат даних / перевірка для цілі імені. Це не звичайне використання, але якщо воно працює для вас, то воно працює. Я вважаю, що іноді це не працює, тобі достатньо, щоб ти використовував те, що це звичайно.


0

Ти можеш мати:

example IN CNAME 1.2.3.4.

де 1.2.3.4 - робоча IP-адреса. Зауважте, що в CNAME вказується крапка. Те, що деякі машини у вашому офісі працюють з цим, а інші не змушують мене вважати, що ті, у кого є субдомен, встановлені у файлі lmhostsабо /etc/hostsфайлі.


1
Хоча це дійсні дані для CNAME, я цілком впевнений, що це не спровокує додатковий пошук .. окрім кореневих серверів для неіснуючого імені TLD 4?
Шейн Медден

Додатковий пошук буде здійснено за допомогою будь-якого (наприклад host -a) запиту.
adamo

@ShaneMadden BTW, ваш коментар нагадав мені місцеві TLD-
adamo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.