Многие пользователи и администраторы с выходом последних версией iOS и Mac OS заметили очень неприятную особенность: в этих ОС перестал резолвиться домен .local. Как известно, Apple использует этот домен для своей службы Bonjour. Но в предыдущих версиях ОС сначала делалась попытка резолва хоста через DNS, а уже потом через Bonjour. В Yosemite и iOS 8 это, увы, происходит в обратном порядке.
Я обнаружил особенность, которая заставляет ОС использовать DNS для резолвинга доменов .local. Это поле "Search domains" в настройках сети. Допустим, у нас в сети есть домен office.local. Самый простой способ заставить Mac OS или iOS резолвить этот домен — это прописать строчку "office.local" в поле "Search domains".
Теперь разберемся, как нам заставить систему получать эту настройку по DHCP. Сначала предположим, что у нас один домен .local, который нам нужно резолвить.
Time Capsule. Internet -> Domain Name. В это поле вписываем имя домена.
Практически у любого роутера в настройках DHCP сервера есть поле "Domain" или "Domain name". Устройства Apple читают это поле. В стандарте DHCP это опция 015 — DNS Domain.
Windows Server DHCP: добавляем в Scope опцию 015.
OpenVPN: в файле конфигурации команда push "dhcp-option DOMAIN office.local"
Интереснее, когда у нас таких доменов много. Поле 015 позволяет ввести лишь один домен. Стандарт DHCP позволяет указать также "Search domains", это опция 119. Какой идиот придумал сделать ее бинарной, я не знаю. Но это так, причем в сложном нечитаемом формате. К счастью, вот здесь люди уже написали программку, которая из нужных на доменов сформирует команду на вставку бинарных данных. Это только для Windows DHCP сервера. Простые роутеры и Time Capsule, увы, этого сделать не позволяют. В этом случае на клиентах придется прописать Search domains вручную.
Может быть кому-то вдруг пригодится.
Спасибо! В англоязычном интернете такое решение найти не удалось)
Ура, помогло! Спасибо!
Привет. В настройках вай-фай ведь надо вписывать? Поле "Домены поиска" вставляем нужный адрес? Я так попробовал, но все равно на сайт не получается зайти. Локальный торрент трекер… Также вписывал в настройках роутера, не работает, в чем дело?
Same here. Search Domains don't seem to change anything. I'm using pfSense and set in DHCP Server for LAN
Domain name: MyDomain.local
Domain search list: MyDomain.Local;Local
Dynamic DNS: MyDomain.local (the dynamic DNS domain which will be used to register client names in the DNS server.)
F*** iOS still tries to search via mDNS. Also OSx's host(1) works while ping(8) won't resolve the requested domain. This is a frustrating mystery to me. I don't know what Apple thought when making this stupid desiccion to just claim .local for mDNS?!?