如果我指示 avahi 使用网络中已存在的主机名,那么 avahi 会通过-2
在我的主机名中添加 a 自动解决此冲突。
Changing host name to 'foo'.
[...]
Host name conflict, retrying with foo-2
[...]
Server startup complete. Host name is foo-2.local.
有没有办法禁用这种自动冲突解决?
背景:我有一组设备,它们可能随时加入和离开网络,并且随时hostname.local
应该解析到我的任何一台设备(假设至少有一台仍在网络上)。如果我正确理解了 RFC 6762,那么mDNS明确支持此用例:
在一般情况下,强制主机名的唯一性可能是可取的,但本文档并不强制要求这样做。协调主机集合可以同意维护具有相同名称的多个 DNS 地址记录,这可能是出于负载平衡或容错的原因。本文档不对这种做法是否合理持任何立场。重要的是,两种操作模式都应得到支持。
不幸的是,avahi 的自动冲突解决破坏了此功能:如果我向网络添加两个设备,然后关闭首先添加的设备,则hostname.local
不再正确解决。(hostname-2.local
可以解决,但尝试不同的-X
方法直到找到一个有效的方法会非常烦人。)
当然,我可以让我的设备进行监控hostname.local
并在可用时让它们回收hostname.local
,但这是一个比仅拥有具有相同主机名的多个设备更复杂且容易出错的解决方案。