如何使Windows'Bonjour解析由Avahi创建的foo.bar.local子域

时间:2017-12-06 14:08:46

标签: bonjour zeroconf mdns avahi

为什么Windows'Bonjour(Apple one)不能自动解析foo.bar.local,当Ubuntu和macOS可以?

而不是每个操作系统都会解决foo.local的问题。

这是我的avahi-daemon.conf:

[server]
host-name=foo
domain-name=bar.local
...

This discussion提到Windows的Bonjour实现不支持别名,这是罪魁祸首吗?

this tool与我的解决方案有何不同?

编辑:我不想设置别名。 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 个答案:

答案 0 :(得分:0)

根据我目前的发现,这似乎是故意的。摘录自source code(mdnsNSP.c中的mDNSResponder-878.30.4,功能NSPLookupServiceBegin):

    // <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。

在测试中,我只是删除了最后一行。使用新版本,它可以成功解析带有多个标签的名称。到目前为止,我还没有遇到任何副作用。

有人知道不解析多标签名称的意图吗?