Поиск DNS-имени (был SSH) не работает после обновления Snow Leopard

Я думаю, что это началось с обновления Snow Leopard. Вычистил каталог.ssh, но проблема остается.

~: uname -a
Darwin california-example-com.local 10.0.0 Darwin Kernel Версия 10.0.0: Пт, 31 июля 22:47:34 PDT 2009; root: xnu-1456.1.25 ~ 1 / RELEASE_I386 i386

~: ssh -V
OpenSSH_5.2p1, OpenSSL 0.9.8k 25 марта 2009 г.

~: ls -l ~ /.ssh

~: nslookup Невада
Сервер: 10.94.62.3
Адрес:    10.94.62.3#53

Имя:   nevada.example.com
Адрес: 10.94.62.3

~: SSH Невада
ssh: не удалось разрешить имя хоста. nevada: имя узла или имя сервера не предоставлены или не известны.

10 ответов

Решение

Я столкнулся с точно такой же проблемой и обнаружил, что тема Mac mini, в которой проблемы с DNS в обсуждениях Apple чрезвычайно полезны.

Суть проблемы: mDNSResponder, кажется, иногда меняет порядок DNS-серверов, которые он запрашивает, и поэтому, если он сначала запрашивает DNS-серверы вашего провайдера, он не получит правильную запись (или, если вы используете раздельный DNS, вы получите ваш публичный IP).

Лучшее решение для этого - убедиться (как вы сделали), что в настройках DNS указаны только необходимые DNS-серверы. Это может потребовать удаления DNS-серверов ISP из вашего DHCP (как я должен был это сделать - все запросы перенаправляются через локальный DNS-сервер в любом случае).

Причина утилиты как dig а также nslookup будет успешным, как обычно, если они используют BIND и /etc/resolv.conf прямо в отличие от остальной операционной системы.

Для справки в Snow Leopard кэш DNS теперь хранится в mDNSResponder, и для его очистки необходимо перезапустить процесс, используя sudo killall -HUP mDNSResponder, Вы можете получить больше информации (ведение журнала, внутреннее состояние дампа и т. Д.), Используя различные флаги для killall команда.

"sudo killall -USR1 mDNSResponder" to enable operation logging.
"sudo killall -USR2 mDNSResponder" to enable packet logging.
"sudo killall -HUP mDNSResponder" to clear the DNS cache.
"sudo killall -INFO mDNSResponder" to dump mDNSRepsonder's internal state.

Источник: Снуп Догг в той же теме.

У нас были такие проблемы:

host example.com     <<< WORKED
ping example.com     <<< FAILED

Решено примерно так:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Приложения в Mac OS X не используют тот же механизм для DNS, что и "host/dig/nslookup".

Использование "host / dig / nslookup" было полезно для определения того, что это не проблема сети. Это была проблема с локальной системой, решенная с помощью приведенных выше команд.

Я столкнулся с той же проблемой... И хотя перезапуск mDNSResponder, похоже, "работает", перезапускать его пару раз в час - отстой.

Итак, на данный момент я "решил" проблему, запустив dnsmasq локально. Для этого:

  • Постройте dnsmasq (скачайте tgz и make или же brew install dnsmasq)
  • Поместите это в dnsmasq.conf файл:
Резо-файл =resolv.conf
не пользователь = никто
не группа = никто
Интерфейс =lo0
кэш-размер =1024
  • Поместите это в resolv.conf файл, который находится в том же каталоге, что и dnsmasq.conf файл (nb: нет /etc/resolv.conf):
nameserver 8.8.8.8
nameserver 4.2.2.1
nameserver 4.2.2.2
  • Бежать dnsmasq с sudo dnsmasq --no-daemon --log-queries -C dnsmasq.conf, Вывод должен выглядеть примерно так:
...
dnsmasq: чтение resolv.conf
dnsmasq: использование сервера имен 4.2.2.1#53
dnsmasq: использование сервера имен 4.2.2.2#53
dnsmasq: использование сервера имен 8.8.8.8#53
dnsmasq: чтение /etc/hosts - 6 адресов
  • Откройте "Сетевые настройки" и убедитесь, что 127.0.0.1 является единственным DNS-сервером (сетевые настройки -> расширенный -> DNS -> добавить 127.0.0.1)

Все должно начать работать снова хорошо.

Когда все работает, вы можете запустить dnsmasq без --no-daemon а также --log-queries опций, поэтому он будет запускаться в фоновом режиме, и вам не нужно держать окно терминала открытым.

Я думаю, у нас есть похожая проблема, как я описал здесь: https://apple.stackexchange.com/questions/50457/nslookup-works-ping-and-ssh-dont-os-x-lion-10-7-3

Я считаю, что проблема заключается в конфигурации searchdomains: ping/ssh пытается использовать gethostbyname2() что не удается, так как named больше не работает (по крайней мере, в Lion) и /etc/resolv.conf с настроенным поиском доменов при этом игнорируется. /etc/hosts это последнее средство для gethostbyname2() и, таким образом, SSH снова работает с правильными записями в /etc/hosts, Должно быть исправлено Apple imho.

Я заметил, что у меня было 10.94.62.3 в списке DNS-серверов (панель сетевых настроек), за которым следовало 2 от моего провайдера. Я удалил два других, принудительно выполнив поиск по всем именам через 10.94.62.3 для этого местоположения, и теперь я могу разрешать имена в своей сети, а также за ее пределами.

Понятия не имею, почему это сработало.

Похоже, что поиск по порядку DNS работает по-другому в Snow Leopard. Если вы не можете найти домен, проверьте, есть ли в ваших сетевых настройках недопустимые DNS-серверы. Если вы используете стандартную настройку DHCP, у вас не должно быть ни одного DNS-сервера в списке. До моего обновления у меня был старый DNS-сервер, и это ни на что не влияло. Как только я обновился, я полностью потерял днс.

Откройте "Настройки сети"> "Выбрать аэропорт"> "Дополнительно". Выберите вкладку DNS и удалите все недействительные DNS-серверы.

dscacheutil -flushcache

Эта команда обновляет ваш кэш DNS.

Является ли 10.94.62.3 DNS-сервером, которому вы доверяете? Если так, то почему только один? У вас должно быть как минимум 2 DNS-сервера, на которые можно ссылаться при сбое. Если тот упадет, ты - сидячая утка.

Вы смотрели на консоль? (Приложения -> Утилиты -> Консоль) Вы можете обнаружить, что mDNSResponder отображается в разделе: Информация о диагностике и использовании -> Отчеты о диагностике системы.

Если происходит сбой из-за другой программы, которая загружает модули (например, Little Snitch или Hands Off), вы можете увидеть ее там.

Вы пробовали nevada-example-com.local?

У меня была та же проблема с nslookup при разрешении окна Windows, но ping дал мне "неизвестный хост". Я попробовал то, что предложил Navdeep, и попытался очистить серверы имен на вкладке "Настройки сети" -> "Дополнительно" ->DNS. Это не позволило бы мне вычесть их, они были серыми. Я наконец нажал + и они исчезли. Я отменил добавление нового и применил изменения, когда DNS-серверы не показывались. Пинг начал работать после этого. Странно то, что мой локальный маршрутизатор /DHCP-сервер был первым в списке и отвечает за разрешение окна Windows. Это должно быть что-то странное с заказом. Другой перечисленный сервер имен является рабочим NS и не сможет разрешить хост Windows. СПАСИБО Навдип!

Другие вопросы по тегам