На моем рабочем месте есть интрасеть с такими доменными именами, как 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
не будет?
linux
networking
dhcp
rhollencamp
источник
источник
Ответы:
Хотя я не уверен на 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 по умолчанию:
Если вы измените это на:
где вы двигаете днс вперед в порядке поиска, это должно исправить все на данный момент. В качестве альтернативы, если вы знаете, что вам вообще не понадобится mDNS, просто удалите часть «mdns4_minimal [NOTFOUND = return]».
Глядя на эту ошибку на трекере Red Hat , кажется, что это давняя проблема, которая пока не решена. Хотя, если кто-то может дать больше информации о том, почему это происходит таким образом, это будет оценено.
источник
vpnc
не могут подключиться после удаления этих записей вhosts: .*
строке/etc/nsswitch.conf
. Замена этих настроек устранила проблему.[NOTFOUND=return]
означает «если mDNS сообщает, что имя .local не найдено, то оно является авторским, и нет смысла спрашивать дальше». Перемещение DNS до mDNS - это обходной путь, но достаточно просто сделать ошибки mDNS неавторизованными.Я бы предложил другое решение, если вы используете
.local
домен. Во-первых, это не очень хорошая идея, поскольку кажется, что это стандарт / соглашение, используемое.local
для динамического обнаружения многоадресной рассылки.Но если вы настаиваете, проще также удалить
nss-mdns
пакет илиlibnss-mdns
пакет в зависимости от вашего дистрибутива, и вы получите решение проблемы. Если вам не нужна эта функциональность, то почему она там сохраняется?Вот
yum info nss-mdns
:источник
Некоторые вещи, которые вы можете проверить:
есть ли порядок в /etc/host.conf, который указывает на проверку / etc / hosts перед запросом DNS?
находится server01 в / etc / hosts?
есть ли
search foo.local
в / etc / resolv, conf? Это добавит foo.local к любому имени хоста, который вы ищетеИнтересно, правильно ли настроен ваш сервер имен? Если у вас есть Nslookup, что он возвращает к
server01
,server01.foo.local
и IP-адрес (обратный поиск)?источник