4

У меня есть домашняя сеть, настроенная с использованием mDNS, содержащая разные системы (включая постоянно включенную Raspberry Pi). На моих машинах работают демоны avahi, поэтому текущая ситуация такова:

  • каждый в сети может разрешить имена host.local .

Что я хочу в дополнение:

  • машины, которые я администрирую, также могут разрешать host по тому же адресу, что и host.local .

Я мог бы придумать три способа сделать это:

  1. Поместите search local в /etc/resolv.conf: mDNS это не учитывает, так как это якобы «вызывает проблемы». Я мог бы перекомпилировать с опциями --enable-search-domains на всех моих машинах.

  2. Записывать статические файлы /etc/hosts на всех сетевых машинах. Это то, чем я сейчас занимаюсь. Тем не менее, это делает конфигурацию распределенной, которую я хочу , чтобы избежать (эти файлы в конечном итоге выйти из-синхронизации).

  3. Настройте DNS-сервер в сети. Однако маршрутизатор с доступом к Интернету не поддерживает DNS (это почти веская причина для замены другой компании), поэтому мне нужно настроить его на Raspberry. Это также ставит проблему распределенной конфигурации: статическая информация DNS на Raspberry в конечном итоге не синхронизируется с информацией mDNS, так что host и host.local могут смешанно указывать на два разных IP-адреса ...

Итак, мой вопрос:

  • Какие «проблемы» создает опция --enable-search-domains ? (Единственное, что я вижу, это то, что он позволяет любому в локальной сети установить неквалифицированное имя хоста, но 1. Я не использую неквалифицированные имена хостов, кроме тех, которые я уже контролирую, и 2. В любом случае доступ к локальной сети уже ограничен доверенными узлами).

  • я пропустил любой другой четвертый вариант? (например, настроить DNS-сервер + crontab, периодически передавая ему некоторый вывод команды avahi-browse ?)

2 ответа2

1

Причина, по которой mdns не добавляет .local или поисковые домены, заключается в том, что в mdns нет NXDOMAIN или подобной концепции.

Поэтому, если mdns не может найти разрешение в каком-либо кеше, он должен отправить многоадресный запрос и подождать, если что-нибудь ответит. Этот тайм-аут достаточно продолжителен для "возникновения проблем".

Следующее не отвечает на вопрос, но является предположением о возможных реализациях для решения некоторых проблем.

Я хотел бы явно добавить .local к именам хостов без точек в конце цепочки nss. НАПРИМЕР

hosts: файлы mdns4_minimal [NOTFOUND = return] dns mdns_append

Возможно, можно было бы также указать разрешение mdns "только для кэша". Возможно с таким переключателем

hosts: файлы mdns4_minimal [NOTFOUND = return] mdns_append_cacheonly dns mdns_append

Я предполагаю, что mdns_append пытается и с добавленным .local, и без него.

1

Я подозреваю, что этот вариант «не рекомендуется», потому что он практически бесполезен на практике: почти во всех других реализациях mDNS используется только домен .local , поэтому попытка выполнить поиск для любого домена, который вы получили из DHCP, привела бы только к дополнительным задержкам в большинстве случаев. время. Есть также проблемы безопасности, упомянутые в действующей спецификации mDNS.

Вместо этого nss-mdns может быть исправлен, чтобы специально добавлять .local к именам без точек перед попыткой их поиска, вместо использования доменов resolv.conf.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .