Я установил dnsmasq на сервере ubuntu в небольшой локальной сети с несколькими клиентами, включая некоторые Windows и некоторые OS X. Клиенты Windows работают отлично. У клиентов OS X классическая проблема «копать работает, а пинг - нет». Я провел некоторое исследование, но не могу найти информацию о том, как работает разрешение DNS OS X. Я могу найти только документацию, в которой говорится, что он не использует то же средство, что и dig.
Мой вопрос: почему мои клиенты Windows и OS X могут правильно разрешать локальные имена, настроенные dnsmasq, а система OS X не может? Я подозревал, что это как-то связано с тем, что dnsmasq не предоставляет записи SOA, но я не уверен. Вместо этого я также экспериментировал с bind9, но, похоже, я не могу правильно настроить его.
Вот содержимое моего файла конфигурации dnsmasq:
no-dhcp-interface=en0
address=/neptune.local/neptune/192.168.42.2
no-resolv
server=8.8.8.8
server=8.8.4.4
Если dig
работает без необходимости указывать конкретный сервер имен, тогда и ваш сервер, и клиент Mac OS, вероятно, настроены правильно. Вероятно, ваш Mac кэшировал отрицательный результат DNS. (dig
выполняет DNS-запрос в обход кеша; ping
использует преобразователь имени системы, который использует кеш.) Чтобы очистить кеш, запустите sudo dscacheutil -flushcache
(Mac OS ≤ 10.6) или sudo killall -HUP mDNSResponder
(Mac OS ≥ 10.7).