Решаем проблему с доменом .local в Yosemite и iOS 8

 

Многие пользователи и администраторы с выходом последних версией 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 вручную. 

Может быть кому-то вдруг пригодится.

4 комментария Решаем проблему с доменом .local в Yosemite и iOS 8

  • Алексей

    Спасибо! В англоязычном интернете такое решение найти не удалось)

  • Ура, помогло! Спасибо!

  • Ильнур

    Привет. В настройках вай-фай ведь надо вписывать? Поле "Домены поиска" вставляем нужный адрес? Я так попробовал, но все равно на сайт не получается зайти. Локальный торрент трекер… Также вписывал в настройках роутера, не работает, в чем дело?

  • 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?!?

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>