Как заставить 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.

В своих тестах я просто удалил последнюю строку. В новой сборке он успешно разрешил имена с несколькими метками. До сих пор я не сталкивался с какими-либо побочными эффектами.

Кто-нибудь имеет представление о намерении не разрешать мульти-лейбл имена?

Другие вопросы по тегам