dig получает правильный результат от DNS-сервера, но имя все равно не может быть разрешено

dig получает правильный результат от DNS-сервера, но имя все равно не может быть разрешено

При каких условиях может произойти следующее? С данной машины OSX во внутренней сети:

$~ cat /etc/resolv.conf
nameserver 10.102.120.7
nameserver 10.102.120.2

С той же машины:

$~ dig @10.102.120.7 in.local
<snip> ...
;; QUESTION SECTION:
;in.local.                      IN      A

;; ANSWER SECTION:
in.local.               43200   IN      A       10.102.123.30
<snip> ...

И все же эта рабочая станция не может пинговать in.local и загружать страницы, размещенные Apache на этой машине. 10.102.123.30 определенно работает (две машины OSX, которые я знаю, не могут разрешить in.local, но другие машины в сети могут). Я также проверил их /etc/hosts, чтобы увидеть, не мешает ли что-нибудь... Не знаю, что еще проверить...

решение1

Tld .localсначала разрешается на MacOS X с помощью Multicast DNS Bonjour/Rendezvous. Это означает, что если вы пытаетесь использовать DNS-сервер с tld .local, он не будет разрешен с помощью DNS-сервера.

Некоторые частные сети также используют домены ".local" для хостов, зарегистрированных на их внутреннем DNS-сервере, даже если это не допустимый домен верхнего уровня в публичном Интернете. Если ваш Mac подключен к такой сети, вы можете захотеть, чтобы он искал имена хостов, которые заканчиваются на ".local", используя Unicast DNS для связи с DNS-сервером, таким же образом, как он ищет имена хостов, такие как "www.apple.com" в Интернете.

Видеть:http://support.apple.com/kb/HT3473 и:http://support.apple.com/kb/TA20999

решение2

В OS X есть кэш DNS на уровне ОС, который вам может потребоваться очистить, например nscd в Solaris/Linux/BSD.

Попробуйте dscacheutil -flushcache(на Leopard) или lookupd -flushcache(на 10.5.1 и более ранних версиях).

решение3

Вы только что узнали, почемуиспользование .LOCAL — плохая идея.

решение4

Единственное, что приходит мне в голову, это то, что вы не используете DNS для службы имен, или имя кэшируется.

Я больше знаком с Linux, но вы, возможно, ищете файл nsswitch.conf (или эквивалентный) в эквиваленте /etc/ для OSX или конфигурацию (nscd.conf) или состояние демона кэширования (nscd в Linux).

nsswitch.conf управляет тем, как разрешаются имена. DNS — это только один из механизмов. Другие включают файлы (/etc/host), LDAP и (я думаю) NIS.

nscd — это кэш имен, который помогает быстрее разрешать имена при получении повторных запросов на одно и то же имя (например, при загрузке 300 страниц с веб-сервера) путем кэширования ответа на соответствующий промежуток времени (например, 43200 секунд из вашего примера выходных данных dig)

Связанный контент