可能的解决方案(或者我应该说是kludge)。
我能看到的唯一方法是将所有 linuxpc 机器的网络掩码扩展到 255.255.0.0(B 类网络掩码)。
但是,您必须在 DHCP 服务器上执行此操作,就像您配置 linuxpc1 eth0 mac 地址将分配 IP 地址 192.168.0.101 一样。
这意味着将所有 C 类私有子网络合并到一个 B 类块中。
详细信息
否则,我认为您无法直接使用 avahi 来做到这一点。这就是为什么。
Avahi 使用 mDNS 公开主机名。
详细来说,事情是这样工作的:
作为其处理逻辑的一部分,您的 linuxpc3 的 avahi 守护程序将在 ip 地址 224.0.0.51 的端口 5353 (?) 上发送 DNS UDP 数据报。
该地址是为 zeroconf 保留的多播地址之一(请参阅iana 多播地址)。
假设 linuxpc3 地址为 192.168.2.103(遵循您的命名约定),并假设标准 C 类网络掩码为 255.255.255.0,那么只有地址在 192.168.2.1 和 192.168.2.254 之间的那些盒子会收到相应的 dns A 更新记录(我的意思是在这些盒子中运行的其他 avahi/bonjour 守护进程)。
因此,linuxpc1 和 linuxpc2 都不会知道 linuxpc3.local 主机名/地址对。
如果所有这些框的网络掩码都扩展为 255.255.0.0,则广播范围将扩展为包括 192.168/16 网络中的所有地址。
RFC1918,专用网络标准明确允许将 192.168.0.0 块配置为单个 B 类子网。
更新
看到您的评论。
第一个结论。Avahi 没有针对您的需求组合的解决方案。
Avahi 依赖于子网广播。
在 avahi 也不适用的类似情况下,我曾经求助于通过检测连接事件更改来自动更新 /etc/hosts 文件和 DNS 记录。
所有 PC 都可以看到互联网并正在检测连接更改(NetworkManager 调度程序挂钩中的 Linux - Windows 通过订阅系统事件通知服务)。
所有机器都通过 www.dropbox.com 中的消息报告其连接状态和 IP 地址,并从各自的本地保管箱文件夹中获取更新。
如果您想改为实现此功能或类似的解决方案,我必须警告您这是一项相当多的工作。