Магия DHCP и mDNS - я хочу автоматические ответы $hostname.mydomain на моем DNS-сервере
Я видел чудеса обнаружения сервисов на основе mDNS, но у меня не было много времени, чтобы разобраться в этом. Я также имел ссылки на это в конфигурационных файлах DHCP или что-то.
Как я могу использовать mDNS для автоматического заполнения зон?
Либо с помощью DHCPd что-то делает
Или каждая машина рекламирует себя
Я хочу, чтобы запросы к локальному DNS-серверу (только для внутреннего использования) могли отвечать на вопросы. Как я могу это сделать?
1 ответ
Обнаружение службы 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/. Вы можете спросить, как клиент с поддержкой 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", это немного хлопотно.