15

На моем рабочем месте есть интрасеть с доменными именами, такими как server01.foo.local , server02.foo.local и т.д. Недавно я загрузил живую среду Fedora 16, чтобы проверить ее, и обнаружил, что эти доменные имена не разрешаются.

Например:

$ ping server01.foo.local
ping: неизвестный хост server01.foo.local
$ ping server01
PING server01.foo.local (XXXX) ...

Почему server01 разрешит (и напечатает имя как server01.foo.local), а server01.foo.local - нет?

3 ответа3

22

Хотя я не на 100% уверен в том, что он не работает должным образом, похоже, существует очень большой конфликт со службой mDNS (Avahi в Linux, Bonjour/Zeroconf в Mac/Windows) и сетями Windows, которые используйте .local в качестве имени внутренней маршрутизации для доменов. Кажется, что происходит, что при пинге server01 он пропускает использование mDNS для разрешения, а затем добавляет поисковый домен (foo.local) к запросу, успешно запрашивая DNS-сервер для server01.foo.local. Однако при использовании mDNS (который использует .local в качестве расширения имени компьютера по умолчанию), когда вы пытаетесь пропинговать 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, кажется, что это давняя проблема, которая пока не решена. Хотя, если кто-то может дать больше информации о том, почему это происходит таким образом, это будет оценено.

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 /resolv, conf? Это добавит foo.local к любому имени хоста, который вы ищете

Интересно, правильно ли настроен ваш сервер имен? Если у вас все еще есть nslookup, что он возвращает для server01 , server01.foo.local и IP-адреса (обратный поиск)?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .