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