有没有办法设置Avahi在LAN上实现“任意播名称解析”?


9

首先,有一些背景知识:我们有一个实验室,其中包含一些在隔离的LAN上运行的专用Linux服务器。所有服务器都运行相同的OS(Debian Linux)和相同的专有服务器软件,并且服务器进程相互通信以保持其数据同步。这意味着就任何客户端而言,客户端连接到哪个服务器都没有关系-任何服务器都将返回与其他服务器相同的数据。

这些Linux服务器都运行avahi-daemon为其自身发布mDNS主机名,这意味着客户端可以输入“ http://linux-server-1.local”。进入他的Web浏览器并连接到Linux服务器1,依此类推。

一切都很好,除了这意味着坐在客户端计算机(通常是安装了Bonjour的Mac或Windows笔记本电脑)上的用户必须知道(或弄清楚)哪些Linux服务器当前在线,并且他必须确保他连接到其中之一。例如,如果服务器#2今天离线,并且客户端输入“ http://linux-server-2.local”。进入他的网址栏,他不会得到回应。当然,这还不是世界末日,但对于希望一切都能“正常运行”的新手用户而言,这很烦人,而且这会使健壮的客户端脚本的开发变得更加复杂(因为客户端脚本将需要知道如何明确处理离线服务器)。

考虑到这一点,我的问题是:是否可以将Avahi配置为发布任意播样式mDNS主机名别名?目标是任何人都可以坐在笔记本电脑上,输入“ http://any-linux-server.local”。(或类似),并连接到当前在线的一台服务器(再次,哪一台都没有关系)。

请注意,这需要在不对客户端便携式计算机进行任何特殊配置的情况下进行,因为我们无法控制它们(除了要求他们安装Bonjour之外)。

还要注意,我们不能依赖于单独的名称服务器或代理服务器,也不可以依赖于任何特定的Linux服务器,因为那样会引入单点故障,我们试图避免这种情况。

Answers:


13

特伦特·劳埃德(Trent Lloyd)是Avahi项目的作者之一。

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

如果您使用Avahi API手动发布A记录并将其标记为非排他性记录,则可以执行此操作。您将必须使用Python,C或类似语言为每个服务器编写一个小的后台进程。

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

一种替代方法是按预期的方式使用服务发现,并让每个客户端发布HTTP服务,并使用firefox插件或类似工具浏览公告的Web服务。或其他某种服务浏览器。

Bonjour曾经包括一个Internet Explorer插件,就像书签栏一样,我不确定它是否还会这样做。


2
我知道了,谢谢!如果有人感兴趣,我将C源代码发布在这里: public.msli.com/lcs/jaf/publish_cnames.c
Jeremy Friesner 2011年

嗯。这似乎并不与较新版本的的avahi :(该程序打印工作,它已成功发布的名称,但是从另一台主机在网络上浏览时,他们不露面。
弗雷德里克·诺德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.