avahi从一个多宿主主机中隔离mDNS域

时间:2013-07-15 16:08:50

标签: avahi

我们正尝试在校园内启用多项mDNS广告服务 广泛的无线网络,最着名的是airplay。在我们的例子中,airServers会 坐在我们的有线网络上,所以我们需要手动宣传服务 在无线端使用DNS-SD或mDNS。我们已经开始使用它了 avahi中的静态服务广告,它很漂亮,但我们有一个 缩放问题。

我们可能有150台AirServer主机位于各个教室周围 校园。如果我们要启用所有这些,可以在iPad上选择列表 会非常大(更不用说学生彻底享受了) 当教员忘记时,从校园内接管AirServer 更改密码)。

我们想要做的是将我们的无线网络隔离在单个vlan上 建立基础,形成27个mDNS段,然后运行avahi广告 每个段中的服务,最好是在具有访问权限的单个多宿主主机上 所有细分市场。

我希望avahi-daemon能在avahi-daemon.conf中获取参数 这指向一个独特的服务目录,这样我就可以有多个 配置文件,每个文件都有不同的allow-interfaces子句和指向a的指针 不同的服务目录,但似乎不是可配置的 选项。

我正在考虑chroot监禁avahi的多个副本,但似乎 非常kludgy。

我错过了一些更明显的策略来处理这个问题而不创造27 分开的主人?

非常感谢!

JD

1 个答案:

答案 0 :(得分:0)

如果您构建自己的应用程序以在所需的接口中发布服务,则可以实现您的目标。此方法调用来自GNUStep“base”框架,类GSAvahiNetServices(可在Linux上使用),该方法基于Avahi API。

- (id) initWithDomain: (NSString*)domain
                 type: (NSString*)type
                 name: (NSString*)name
                 port: (NSInteger)port
         avahiIfIndex: (AvahiIfIndex)anIfIndex
        avahiProtocol: (AvahiProtocol)aProtocol

如您所见,可以指定要在其上发布服务的网络接口索引。您还可以限制协议(IPv4或IPv6)。如果您希望一个服务在多个界面中可用,只需在每个界面中发布它。