Назад | Перейти на главную страницу

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

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

~: uname -a
Darwin california-example-com.local 10.0.0 Darwin Kernel Version 10.0.0: Fri Jul 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 Mar 2009

~: ls -l ~/.ssh

~: nslookup nevada
Server:     10.94.62.3
Address:    10.94.62.3#53

Name:   nevada.example.com
Address: 10.94.62.3

~: ssh nevada
ssh: Could not resolve hostname nevada: nodename nor servname provided, or not known

Я столкнулся с той же проблемой и нашел ветку о 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-file=resolv.conf
user=nobody
group=nobody
interface=lo0
cache-size=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: reading resolv.conf
dnsmasq: using nameserver 4.2.2.1#53
dnsmasq: using nameserver 4.2.2.2#53
dnsmasq: using nameserver 8.8.8.8#53
dnsmasq: read /etc/hosts - 6 addresses
  • Откройте настройки сети и убедитесь, что 127.0.0.1 единственный DNS-сервер (сетевые настройки -> расширенный -> DNS -> добавить 127.0.0.1)

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

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

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

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

Думаю, у нас есть аналогичная проблема, как я описал здесь: 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.

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

dscacheutil -flushcache

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

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

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

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

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

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

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