有没有办法设置Avahi在局域网上实现“任播名称parsing”?

首先是一些背景知识:我们有一个实验室,它包含一些在独立局域网上运行的专用Linux服务器。 所有服务器运行相同的操作系统(Debian Linux)和相同的专有服务器软件,服务器进程相互通信以保持其数据同步。 这意味着就客户而言,客户端连接哪台服务器并不重要 – 任何服务器都将返回与其他服务器相同的数据。

这些Linux服务器都运行avahi-daemon来为自己发布mDNS主机名,这意味着客户端可以input例如“ http://linux-server-1.local” 。 进入他的networking浏览器并连接到Linux服务器#1等等。

这一切都很好,除了这意味着坐在客户机(通常是安装了Bonjour的Mac或Windows笔记本电脑)的用户必须知道(或弄清楚)哪个Linux服务器当前在线,并且他必须确保他连接到其中的一个。 例如,如果服务器#2今天离线,并且客户端input“ http://linux-server-2.local” 。 进入他的url栏,他不会得到回应。 当然,这并不是世界的尽头,但是对于那些希望所有东西都能“正常工作”的新手用户来说,这是令人讨厌的,同时也使得健壮的客户端脚本的开发变得更加复杂(因为客户端脚本需要知道如何明确地处理离线服务器)。

考虑到这一点,我的问题是:是否可以configurationAvahi发布一个任播式mDNS主机名别名? 目标是任何人都可以用他的笔记本电脑坐下来,input“ http://any-linux-server.local” 。 (或类似的),并连接到当前在线的服务器之一(再次,哪一个并不重要)。

请注意,这需要工作,没有任何客户端笔记本电脑的特殊configuration,因为我们无法控制它们(除了要求安装Bonjour)。

另外请注意,我们不能依赖单独的名称服务器或代理服务器的存在,也不能依赖任何特定的Linux服务器,因为这会引入单点故障,这是我们试图避免的。

特伦特·劳埃德在这里是Avahi项目的作者之一。

这在理论上是可行的,但这并不容易。 不幸的是,在Avahi中发布主机名的默认机制也发布了一个被列为独占的反向DNSlogging。 因此,如果您尝试发布指向相同IP的两个主机名,则会在反向DNSlogging上发生冲突。

如果您使用Avahi API手动发布Alogging,并将其标记为非独占,则可以这样做。 你将不得不为Python,C或类似的每个服务器编写一个小的后台进程。

要使用的API调用是avahi_entry_group_add_record,并且您需要将AVAHI_PUBLISH_ALLOW_MULTIPLE传递到flags字段。 这应该工作。

另一种方法是按照预期的方式使用服务发现,并让每个客户端发布一个HTTP服务,并使用Firefox插件或类似的浏览器发布Web服务。 或者其他一些服务浏览器。

Bonjour曾经为Internet Explorer包含一个插件,像书签栏一样,我不确定它是否仍然有效。