多个 IP 地址上的 Avahi DNS-SD

Posted

技术标签:

【中文标题】多个 IP 地址上的 Avahi DNS-SD【英文标题】:Avahi DNS-SD on multiple IP addresses 【发布时间】:2014-11-03 18:29:53 【问题描述】:

背景:

我正在尝试在不需要 DHCP 服务器的情况下与 IP 摄像机通信。这是相机获取 IP 地址的方式:

    基本 DHCP 过程(发现等) 如果上述方法失败,则相机的后备地址为 192.168.0.90 然后摄像头启动 avahi-daemon 并成功获取链接本地地址以实现稳健性 IP 别名现已完成,接口有两个 IP。

问题:

现在的问题是,当我 avahi-browse 浏览网络上的服务时,相机会回复两个 IP 地址(使用 Wireshark 检查)。

avahi 只显示一个,它可能是 zeroconf:ed 地址或备用地址。

我只想要链接本地地址,而不是后备。有什么可靠的获取方式吗?

【问题讨论】:

【参考方案1】:

老问题,但以防其他人有同样的问题:

Avahi 将仅返回设备报告的 IP 地址之一。这似乎是一个(有争议的)设计决定,并在 avahi 邮件列表的in this post 中进行了解释。因此,如果您使用的是 avahi-browse,恐怕没有可靠的方法来仅获取链接本地地址。 附带说明,RFC3927 section 1.9 特别建议不要为同一接口同时配置可路由地址和链路本地地址。但我明白这是相机的行为,可能超出您的控制范围。

【讨论】:

是的,关键字是“不应该”,这意味着他们可能有理由以这种方式实现它。无论哪种方式,都应该支持 Avahi:/ 我认为 RFC 在这里使用了“不应该”,因为这样做的结果是不受欢迎的(“导致应用程序的复杂性和用户的混乱”),但没有破坏任何东西(功能,互操作性)。但我同意您的看法,Avahi 最好只报告所有报告的 IP 地址,而不是只报告一个。

以上是关于多个 IP 地址上的 Avahi DNS-SD的主要内容,如果未能解决你的问题,请参考以下文章

适用于 iPhone 的 Avahi DNS 堆栈?

挑战访问容器化 DNS-SD

lwIP是否支持Zeroconf?

如何将多个传出IP地址分配给AWS上的单个实例?

ADO .Net - 如何在具有多个 IP 地址的系统上的 SqlConnection 中指定源 IP 地址

Avahi dns_sd 兼容层无法运行浏览回调