Назад | Перейти на главную страницу

Магия DHCP и mDNS - мне нужны автоматические ответы $ hostname.mydomain на моем DNS-сервере

Я видел чудеса обнаружения сервисов на основе mDNS, но у меня не было много времени, чтобы изучить это подробнее. У меня также есть ссылки на это в файлах конфигурации DHCP или что-то в этом роде.

Как я могу использовать mDNS для автоматического заполнения зон?

Я хочу, чтобы запросы к локальному DNS-серверу (только для внутреннего использования) могли отвечать на вопросы. Как я могу это сделать?

Обнаружение служб DNS - это просто соглашение для поиска служб путем первого поиска записи PTR, например:

$ dig +short ptr _http._tcp.dns-sd.org
;; Truncated, retrying in TCP mode.
\032*\032Zeroconf._http._tcp.dns-sd.org.
\032*\032Multicast\032DNS._http._tcp.dns-sd.org.
\032*\032DNS\032Service\032Discovery._http._tcp.dns-sd.org.
<< snipped >>

Затем запись SRV, например:

$ dig +short srv \ *\ Multicast\ DNS._http._tcp.dns-sd.org
0 0 80 multicastdns.org.

И, наконец, запись TXT для всего, что не инкапсулировано записью SRV:

$ dig +short txt \ *\ Multicast\ DNS._http._tcp.dns-sd.org
"path=/"

Конечным результатом вышеизложенного будет запись под названием «* Multicast DNS», которая будет ссылаться на http://multicastdns.org:80/. Вы можете спросить, как клиент, поддерживающий DNS-SD, узнает, как искать эти записи на dns-sd.org? Что ж, это либо должно быть явно указано (настроено вручную), либо нужно будет смотреть на системные поисковые домены, которые можно настроить через DHCP.

Демоны DHCP могут поддерживать записи об аренде, которую они выдают, либо будучи тесно связанными с демоном DNS (например, dnsmasq), либо отправляя запросы обновления на DNS-сервер. Как правило, последнее выполняется с использованием запросов обновления DNS TSIG, но метод зависит от используемых серверов DNS / DHCP - это довольно распространено для ISC BIND + DHCP и стека Microsoft, который использует аналогичный метод.

Многоадресный DNS устраняет большую часть хлопот, связанных с настройкой среды, подобной описанной выше, за счет того, что клиенты несут ответственность за рекламу своих записей. Однако у него есть свои причуды - хотя в его имени есть DNS, (одноадресные) DNS и mDNS не взаимодействуют, они существуют параллельно, что приводит к конфликтам в средах, которые используют пространство имен ".local" (по умолчанию для стеков mDNS. ) с их локальным одноадресным DNS. Вы также можете получить неожиданные имена хостов - например, если два клиента соперничают за одно и то же имя хоста, один проиграет и попытается повторить попытку с добавленным номером (это поведение можно изменить). Тем не менее, в небольшой среде это вряд ли станет проблемой.

Настройка mDNS - это установка Bonjour в Windows или Avahi в UNIX-подобных системах. В OS X есть Bonjour из коробки. После установки вы сможете получить доступ к другому компьютеру через его имя хоста с добавленным ".local". Хотя можно изменить пространство имен по умолчанию ".local", это немного хлопотно.