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

14

Я думаю, что это началось с обновления 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: имя узла или имя сервера не предоставлены или не известны.
Питер Кардона
источник
Можете ли вы подключиться к (a) nevada.example.com и (b) 10.94.62.3?
Свен
2
Вы можете пинговать Неваду? Что показывает "ssh -v nevada"?
Маркдрайтон
Странный вопрос; Вы используете Split DNS и / или можете пинговать Неваду?
Chealion
Спасибо за продолжение ... ответы: ssh nevada.example.com = нет ssh 10.94.62.3 = да (и пришлось подтвердить ключ хоста, потому что я очистил известные хосты) ping nevada = проблема разрешения имен telnet nevada (tho он не запускается telnetd) = проблема с разрешением имени. Разделить DNS = не намеренно, не знаю, что это такое :-) Из панели сетевых настроек OS X у меня есть 10.94.62.3 в качестве DNS-сервера, перечисленного перед двумя предоставленными моим провайдером и example.com в списке поисковых доменов. Другие системы в моей сети могут нормально использовать DNS для ssh в Неваду (и другие).
Питер Кардона
извините за отсутствие разрывов строк в приведенном выше комментарии ...
Питер Кардона

Ответы:

16

Я столкнулся с точно такой же проблемой и обнаружил, что тема 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.

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

Chealion
источник
Спасибо, гугл привел меня сюда, это исправило. «arp» сообщил о неправильном IP, dig сообщил о правильном «ip». Никакое количество смывания dns не исправило это прежде, чем я попробовал это. Я отмечаю, что мне также пришлось выполнить dscacheutil -flushcache. Я также хотел бы отметить, что локальные маршрутизаторы могут вести себя странно, и интернет-провайдеры также иногда не работают честно с точки зрения TTL.
Aitch
9

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

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» было полезно для определения того, что это не проблема сети. Это была проблема с локальной системой, решенная с помощью приведенных выше команд.

Стив Харрис
источник
вау что сработало !!! Я везде искал решение проблемы !!!! я собирался отформатировать и восстановить свой ноутбук, вы сэкономили мне кучу времени! Благодарность! извините, но я не смог проголосовать :-( Примечание: мой DNS перестал работать после того, как я запустил Util OnyX, не знаю почему. Я смог использовать dig / nslookup, но больше ничего.
2

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

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

  • Сборка dnsmasq (скачать тгз и makeили brew install dnsmasq)
  • Поместите это в dnsmasq.confфайл:
Резо-файл = resolv.conf
не пользователь = никто
не группа = никто
Интерфейс = lo0
кэш-размер = 1024
  • Поместите это в resolv.confфайл, который находится в том же каталоге, что и dnsmasq.confфайл (nb: not /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, поэтому он будет запускаться в фоновом режиме, и вам не нужно держать окно терминала открытым.

Дэвид Волевер
источник
1

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

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

Питер Кардона
источник
1

Я думаю, у нас есть похожая проблема, как я описал здесь: /apple/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.

tholu
источник
0

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

Джереми Л
источник
Не пробовал это, но получил ту же проблему разрешения. Начинает казаться, что НИЧТО (ssh, telnet, ping, http) не разрешает сервер, на котором по умолчанию работает nslookup. Как это может быть? Возможно конфликт между настройками уровня OS X и некоторым файлом / etc / what, который заботится о базовой реализации BSD?
Питер Кардона
Нет, OS X не использует уровни инициализации - даже подсистемы BSD.
Джереми Л
0
dscacheutil -flushcache

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

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

churnd
источник
0

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

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


источник
0

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

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

jwilkins
источник
-1

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

Крис
источник