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

14

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个回答

8
很遗憾,需要重新配置两个子网之间路由设备。mDNS使用IPv4的多播地址224.0.0.251和IPv6的ff02::fb。这些是本地链路地址,发送到它们的数据通常不会路由到当前子网之外。
有各种选项,具体取决于您的路由设备。
多播代理。mdns-repeater是一个简单的解决方案,可以在接口之间重复mDNS请求。
广域DNS。广域DNS-SD可以在为这些子网提供服务的DNS解析器上启用。然后可以将Avahi配置为发布不是.local域,而是针对这些子网的域。
多播路由。配置在这两个子网之间路由的设备可以路由多播组。

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


我在想这个答案是否不再完整了?我发现这些信息非常有用,但是现在似乎有第五个选项,就是像@kristopolous最近的回答建议的那样简单修改avahi-daemon.conf - Michael Krebs

5

当然可以。这被称为反射器(reflector),它是Linux avahi守护程序的一部分。

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


1
这假设 Avahi 守护进程正在网关上运行,对吗? - Petr
1
不,你可以在任何主机上运行avahi,只要它在你想要反射之间的子网中具有接口。 - Ross Tajvar
1
我一开始看了smcroute和其他东西来帮助我转发mDNS数据包,但只需更改这个单行命令:enable-reflector=yes,就解决了我的问题。感谢!我特地评论了“谢谢”,以防其他人来到这里并不确定已接受的答案是否仍然正确,并且想知道是否可以完成此操作。 - Michael Krebs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接