Как заставить Windows Bonjour разрешать субдомены foo.bar.local, созданные Avahi
Почему Windows Bonjour (Apple) не может автоматически разрешить foo.bar.local, когда это могут сделать Ubuntu и macOS?
Вместо этого foo.local разрешается без проблем в каждой ОС.
Вот мой avahi-daemon.conf:
[server]
host-name=foo
domain-name=bar.local
...
В этом обсуждении упоминается, что реализация Bonjour в Windows не поддерживает псевдонимы. Является ли это виновником?
Чем этот инструмент отличается от моего решения?
РЕДАКТИРОВАТЬ: я не хочу устанавливать псевдоним. foo.bar.local отличается от bar.local. Я просто хочу иметь разные имена хостов под одним и тем же "доменом". Например, foo.bar.local равен 192.168.0.8, а foo1.bar.local - 192.168.0.9. У меня не будет foo.local, bar.local и foo.bar.local в одной сети. Я буду использовать foo.bar.local, меняя только foo (*.bar.local)
1 ответ
Исходя из моих текущих результатов, это кажется преднамеренным. Выдержка из исходного кода (mDNSResponder-878.30.4, функция NSPLookupServiceBegin в mdnsNSP.c):
// <rdar://problem/4050633>
// Don't resolve multi-label name
// <rdar://problem/5914160> Eliminate use of GetNextLabel in mdnsNSP
// Add checks for GetNextLabel returning NULL, individual labels being greater than
// 64 bytes, and the number of labels being greater than MAX_LABELS
replyDomain = translated;
while (replyDomain && *replyDomain && labels < MAX_LABELS)
{
label[labels++] = replyDomain;
replyDomain = GetNextLabel(replyDomain, text);
}
require_action( labels == 2, exit, err = WSASERVICE_NOT_FOUND );
Он возвращает ошибку, если имя имеет более двух меток, как в случае foo.bar.local.
В своих тестах я просто удалил последнюю строку. В новой сборке он успешно разрешил имена с несколькими метками. До сих пор я не сталкивался с какими-либо побочными эффектами.
Кто-нибудь имеет представление о намерении не разрешать мульти-лейбл имена?