我可以使用avahi跨子网发布服务吗?

时间:2014-01-08 03:48:55

标签: linux networking service-discovery mdns avahi

Avahi通常用于服务发现。我想从不同的子网中发现一个服务,我可以使用avahi来实现这个目标吗?

例如,服务主机ip为“192.168.1.100”,掩码为“255.255.255.0”,因此它位于192.168.1.X子网中。另一个主机IP是“192.168.2.100”,掩码为“255.255.255.0”。我可以使用avahi让这个主机发现以前的服务主机吗?

2 个答案:

答案 0 :(得分:8)

不幸的是,不,它需要重新配置在这两个子网之间路由的任何设备。 mDNS使用IPv4的多播地址224.0.0.251和IPv6的ff02 :: fb。这些是链路本地地址,发送给它们的数据通常不会在当前子网之外路由。

有多种选择,有些可能比其他选项更容易,具体取决于您的路由设备。

多播代理mdns-repeater是一个简单的解决方案,可以跨接口重复mDNS请求。

广域DNS 。可以在为这些子网中的主机提供服务的DNS解析器上启用广域DNS-SD。然后可以将Avahi配置为不发布.local域,而是发布到这些子网的域。

多播路由。可以将这些子网之间的设备路由配置为在这两个子网之间路由组播组。

mDNS网关。有一个draft RFC用于实现位于网段(通常是路由器)边缘的mDNS网关。这不是一个简单的转发器/反射器,而是一个缓存服务条目并响应来自其他连接网段的查询的网关。

答案 1 :(得分:0)

可以。它被称为反射器,它是Linux avahi守护程序的一部分。

在您的发行版上查看man avahi-daemon.conf中的“ [SECTION [REFLECTOR]]”。