Как DNS используется отдельными процессами?

При разрешении FQDNs или названий машины к IP-адресам в моей локальной сети (mycompany.internal) я могу использовать, роют на командной строке (linux/mac) или nslookup (окна), чтобы запросить настроенный сервер и получить ответ. Но пытаясь ввести FQDN или даже просто название машины в команде ping или в веб-браузере приводит к 'Неизвестному Хосту' или ошибкам DNS. Вот образец, этот от Mac:

mac:~ atroon$ dig server.mycompany.internal


; <<>> DiG 9.6.0-APPLE-P2 <<>>
server.mycompany.internal ;; global
options: +cmd ;; Got answer: ;;
->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5219 ;; flags: qr aa rd
ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0,
ADDITIONAL: 0

;; QUESTION SECTION:
;server.mycompany.internal.  IN A

;; ANSWER SECTION:
server.mycompany.internal. 1200 IN A 172.16.254.36

;; Query time: 0 msec ;; SERVER:
172.16.254.8#53(172.16.254.8) ;; WHEN: Wed Dec 16 11:39:15 2009 ;; MSG SIZE 
rcvd: 55

mac:~ atroon$ ping server.mycompany.internal<br>
ping: cannot resolve server.mycompany.internal: Unknown host

Я не могу ни за что в жизни понять этого. Сервер DNS является полем SBS 2003, которое обрабатывает AD, некоторый файл/печать, и т.д. для сети небольшой компании. Эта проблема происходит со мной приблизительно три раза в неделю, и когда я подключен к локальной сети непосредственно, тот же переключатель как сервер даже. Я могу установить любую связь, которую я хочу с IP-адресами, я просто не могу заставить DNS работать. Кроме того, одновременно я испытываю это, другие пользователи в порядке, который заставляет меня думать, что это - проблема на моем Mac. Но какой проблема? Как может вырыть, отправляют запрос и получают ответ, и ping говорит 'неизвестный хост'?

Я отправляю здесь по сравнению с serverfault, потому что я думаю, что это - локальная проблема не проблема с сервером..., но если кто-либо может указать на меня на сервер, я предполагаю, что мы возглавим вниз улицу домен или два.

6
задан 16.12.2009, 19:31

4 ответа

В зависимости от то, какая версия Mac OS X Вы используете способ, которым DNS обрабатывается системой, изменилось.

По существу в Mac OS X существует два механизма разрешения DNS. Стандартный подход UNIX (/etc/resolv.conf) который используется dig и затем подход, используемый остальной частью системы.

В Mac OS X 10.4 и 10.5 были намного более плотно связаны два подхода; обновление один имело тенденцию обновлять их обоих. Однако в 10,6 и до большой меньшей степени 10.5 возможно иметь dig дайте Вам правильное значение, в то время как системный механизм разрешения все еще имеет плохое значение.

Сбросить кэш DNS для каждой из версий Mac OS X:

  • 10.4: lookupd -flushcache
  • 10.5: dscacheutil -flushcache
  • 10.6: sudo dscacheutil -flushcache или sudo killall -HUP mDNSResponder (Первая команда должна выполнить вторую команду для Вас теперь, но в более ранних версиях 10,6 это не появилось к),

ping если я вспоминаю, использует системный поиск - так другой механизм разрешения. /etc/resolv.conf будет всегда использовать серверы DNS в порядке, тогда как mDNSResponder попытки быть 'умным', который может укусить Вас сзади в зависимости от Вашей установки.

Кроме того, у Вас есть несколько серверов DNS указанными на Вашем Mac и/или через DHCP? Snow Leopard представил другое поведение (ошибка?), где порядок серверов DNS изменится. Это играет опустошение на разделении DNS (внутренне, Вы используете один IP, но внешне другой), поскольку существуют времена, это прекратит спрашивать внутренний сервер DNS сначала прежде, чем спросить второй сервер (внешний на этот раз) в строке. Это - предположительно, метод для контакта с самым быстрым сервером DNS для предотвращения связанных с DNS задержек. Самая легкая фиксация до 10.6.3 должна только служить внутреннему серверу DNS через DHCP и удостовериться, что Ваши установки переадресации на сервере DNS установлены соответственно.

Теперь с 10.6.3 возможно сказать mDNSResponder всегда использовать надлежащий порядок и не пытаться оптимизировать времена запроса DNS. Можно сделать это путем добавления ключа StrictUnicastOrdering и установка его к истинному для Демона Запуска mDNSResponder plist (и перезагрузка он по мере необходимости).

В Mac OS X v10.6, поведение поиска сервера DNS по умолчанию состоит в том, что, когда сервер не возвращается, результат (возвращающий SERV_FAIL для запроса), и другие серверы доступен запросу, сервер временно недоступен в поисковом порядке в течение приблизительно тридцати секунд. Если будет больше чем один сервер для запроса, и все они возвратили SERV_FAIL, то серверы будут запрошены в порядке, что они были отключены (то есть, сервер, который был отключен, самое длинное будет использоваться сначала).

(Источник: support.apple.com и благодаря Yar, который поднял это, прежде чем я сделал.)

Можно автоматизировать это (немного быстрее и легче, чем команды Apple) путем выполнения следующих команд:

sudo /usr/libexec/PlistBuddy -c "Add :StrictUnicastOrdering bool true" /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

и инвертируйте его путем выполнения:

sudo /usr/libexec/PlistBuddy -c "Delete :StrictUnicastOrdering" com.apple.mDNSResponder.plist

После или или необходимо будет перезагрузить задание в launchd для перезапуска mDNSResponder путем выполнения:

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
и затем
sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

12
ответ дан 07.12.2019, 15:32

Посмотрите на то, что находится в /etc/resolv.conf видеть, который используют серверы имен Ваш Mac. Можно также добавить, что серверы имен в сетевых предпочтениях - выбирают адаптер, Вы используете, нажимаете кнопку "Advanced..." и затем нажимаете на вкладку "DNS".

На Mac инструмент командной строки для сбрасывания кэша DNS:

dscacheutil -flushcache

Обновление:

Я нашел много хорошего материала в этом потоке на discussions.apple.com. Например:

выройте (1) (и разместите (1) и nslookup (1)), все непосредственно используют сопоставитель DNS и как таковой сервер DNS, заказывая как существующие в/etc/resolv.conf.

Однако ping (8) использование, внутренняя система определения имен Mac OS X, которая использует "супер DNS, ищет клиент", который использует результаты, которые listable через scutil - DNS для упорядочивания запросов.

Вы видите в то, что кэшировалось путем выполнения sudo killall -INFO mDNSResponder и затем заглядывание /var/log/system.log

1
ответ дан 07.12.2019, 15:32

Большинство приложений будет полагаться на Клиентскую службу DNS (хорошо, они полагаются на ОС, которая использует сервис...) - я проверил бы это дважды, это все еще работает. Возможно, даже перезапустите сервис при испытании проблем.

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

ipconfig /flushdns

Наконец, существует шанс вредоносного программного обеспечения, вызывающего вещи выйти из строя. Много вредоносного программного обеспечения угонит DNS или определенные хосты. Вероятно, стоит проверить это также.

0
ответ дан 07.12.2019, 15:32

Наконец, фиксация благодаря 10.6.3 и немного игры. В основном Вы изменяете com.apple.mDNSResponder.plist и затем перезапустите dnsresponder.

Я мог быть неправым, но я думаю, что инструкции выключены, и должны говориться sudo cp где они говорят sudo mv вначале.

3
ответ дан 07.12.2019, 15:32

Теги

Похожие вопросы