Неможливо вирішити .foo.local доменні імена


15

На моєму робочому місці є інтранета з доменними іменами, наприклад server01.foo.local, server02.foo.localі т. Д. Я нещодавно запустив живу середу Fedora 16, щоб перевірити це і виявив, що ці доменні імена не вирішуються.

Наприклад:

$ ping server01.foo.local
ping: невідомий сервер хоста01.foo.local
$ ping server01
PING сервер01.foo.local (XXXX) ...

Чому server01вирішуватимуть (і друкувати ім'я як server01.foo.local), але server01.foo.localне будуть?


Була точно така ж проблема з Ubuntu, що працює у VMBox. @ рішення adam820 працювало і для мене.
jimbo

Відповіді:


22

Хоча я не на 100% переконаний, чому він не працює, як очікувалося, мабуть, дуже великий конфлікт зі службою mDNS (Avahi в Linux, Bonjour / Zeroconf в Mac / Windows) та мережами Windows, які використовувати .local як внутрішню назву маршрутизації для доменів. Що, здається, трапляється так, що під час пінг-сервера01 він пропускає через використання mDNS для вирішення, а потім додає до запиту пошуковий домен (foo.local), успішно запитуючи DNS-сервер для сервера server01.foo.local. Однак при використанні mDNS (який використовує .local як розширення імені машини за замовчуванням), коли ви намагаєтеся ping server01.foo.local, він фактично транслює через mDNS, шукаючи машину з назвою "server01.foo"; коли це не вдалося, з будь-якої причини він не переходить на прямий DNS. Велике вирішення цього питання - це не називання вашого домену .local, що, ймовірно, суперечить навчанню більшості адміністраторів Windows щодо структуризації домену. Це сумно:

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

Це можна знайти в /etc/nsswitch.conf. У розділі для хостів буде вказано порядок, який для Fedora 16 є типовим:

hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname

Якщо ви зміните це на:

hosts:      files dns mdns4_minimal [NOTFOUND=return] myhostname

куди ви рухаєтесь dns вперед у порядку пошуку, це повинно зараз виправити речі. Крім того, якщо ви знаєте, що вам взагалі не знадобиться mDNS, просто видаліть "mdns4_minimal [NOTFOUND = return]" частина.

Дивлячись на цю помилку на трекер Red Hat , здається, що це давня проблема, яка на даний момент не має очевидного виправлення. Хоча, якщо хтось може дати більше розуміння того, чому це відбувається таким чином, це буде вдячно.


видалення розділу mdns вирішило проблему
rhollencamp

Дякую soooooooo за те, що додали це. Мав точно таку ж проблему і переміщення запису dns спочатку вирішило її. У моєму випадку я використовую останню Ubuntu, а не Fedora, але рішення було точно таким же.
jimbo

нічого не варто, я просто спробував це і виявив, що використання VPN Cisco vpncне може підключитися після видалення цих записів у hosts: .*рядку в /etc/nsswitch.conf. Заміна цих налаштувань виправила проблему.
доббс

"коли це не вдалося, з будь-якої причини він не переходить до прямого DNS." . Причина досить очевидна. [NOTFOUND=return]означає "якщо mDNS повідомляє вам, що ім'я .local не знайдено, то це авторський характер, і далі запитувати далі немає сенсу". Переміщення DNS перед mDNS є вирішувальним завданням, але просто зробити збої mDNS неавторними вже достатньо.
MSalters

Так, це вагомий коментар; це було 7 років тому, і я того часу не знав. Але так, видалення, вилучення пакету, як зазначено нижче, або зміна порядку - всі дійсні способи вирішення.
adam820

2

Я б запропонував інше рішення, якщо ви використовуєте .localдомен. По-перше, це не дуже гарна ідея, оскільки, здається, стандарт / умова використовувати .localдля деякого динамічного відкриття для багатоадресної передачі.

Але якщо ви наполягаєте, також простіше просто видалити nss-mdnsпакет або libnss-mdnsпакет залежно від вашого дистрибутива, і ви вирішите проблему. Якщо ця функція вам не потрібна, то навіщо вона там затримуватися?

Ось yum info nss-mdns:

Summary     : glibc plugin for .local name resolution
URL         : http://0pointer.de/lennart/projects/nss-mdns/
License     : LGPLv2+
Description : nss-mdns is a plugin for the GNU Name Service Switch (NSS)
            : functionality of the GNU C Library (glibc) providing host name
            : resolution via Multicast DNS (aka Zeroconf, aka Apple Rendezvous,
            : aka Apple Bonjour), effectively allowing name resolution by common
            : Unix/Linux programs in the ad-hoc mDNS domain .local.
            : 
            : nss-mdns provides client functionality only, which means that you
            : have to run a mDNS responder daemon separately from nss-mdns if
            : you want to register the local host name via mDNS (e.g. Avahi).

1

Деякі речі, які ви можете перевірити:

  • чи є замовлення в /etc/host.conf, яке вказує перевірити / etc / hosts перед запитом DNS?

  • є server01 в / etc / hosts?

  • чи є search foo.localв / etc / resolutionv, conf? Це додасть foo.local до будь-якого імені хоста, яке ви шукаєте

Цікаво, чи правильно встановлено ваш сервер імен. Якщо у вас все ще є nslookup, для чого він повертається server01, server01.foo.localі ip-адреса (зворотний пошук)?


* host.conf не має нічого про замовлення * server01 не в / etc / hosts * пошук foo.local знаходиться в /etc/resolv.conf (NetworkManager поставив його там), але видалити його не допоможе. Я спробував захистити від захисту /etc/resolv.conf після її редагування, щоб NM не міг перезаписати та перезавантажити; немає кісток
rhollencamp

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