1

为什么 Windows 的 Bonjour(苹果版)不能自动解析 foo.bar.local,而 Ubuntu 和 macOS 可以?

相反,每个操作系统都可以毫无问题地解决 foo.local。

这是我的 avahi-daemon.conf:

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

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

此工具与我的解决方案有何不同?

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

4

1 回答 1

0

从我目前的发现来看,这似乎是故意的。摘自源代码(mDNSResponder-878.30.4,mdnsNSP.c中的函数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。

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

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

于 2018-08-23T15:28:55.837 回答