似乎可以说,AirPlay只能在局域网内直接使用。我尚不清楚确切的原因,但看起来至少发现依赖广播。维基百科指出,Airplay是专有协议,这也许可以解释为什么我找到的唯一文档是非官方的,例如github上的此规范。
因此,我的问题是:
- 是否可以配置网络使Airplay跨VLAN工作?
- 如果是这样,则必须允许什么在VLAN之间传递,以使其正常工作?
- 鉴于没有官方协议文档,这在生产环境中是个坏主意吗?
似乎可以说,AirPlay只能在局域网内直接使用。我尚不清楚确切的原因,但看起来至少发现依赖广播。维基百科指出,Airplay是专有协议,这也许可以解释为什么我找到的唯一文档是非官方的,例如github上的此规范。
因此,我的问题是:
Answers:
“ Airplay”一词有两种不同的说法。
第一个是关于服务发现的,它是能够接收Airplay流的设备如何向网络宣告“嘿!我可以接收Airplay!”的方式。通常是通过称为Bonjour的服务(至少苹果这样称呼)或DNS-SD来完成的。它使用多播,这就是有人告诉您“ Airplay仅用于本地LAN”或其他内容的意思。流本身是“常规” UDP单播。
现在的主要问题是如何将有关Airplay接收器的信息发送给另一个网络中的潜在发送者。有两种理论选择:
您可以转发多播。虽然这可能很棘手,但是有路由器/防火墙可以做到这一点。RTFM的精确度如何,但其思想是必须将目标地址为224.0.0.251的多播流量转发到另一个网络,并且必须在不减少TTL的情况下进行操作。
另一种选择是使用单播DNS-SD。您可以使用普通DNS来宣布通常通过多播DNS-SD自动分发的完全相同的信息,还可以使用MacOSX上dns-sd(1)实用程序的一些帮助来获取确切写入DNS区域文件的信息。 。在具有Airplay接收器的LAN中执行此命令,这将为您提供所需的所有信息:
$ dns-sd -Z _airplay._tcp
Browsing for _airplay._tcp
...
还有DNS-SD代理(例如avahi可以这样使用)。
现在,我说“从理论上讲”,因为我还没有测试它,无论您对协议,转发等进行什么操作,都有可能会遇到一些您无法控制的障碍-毕竟是苹果。您可以将所有信息正确地发送给潜在的发件人,但是iOS / MacOSX可能仍会拒绝它,因为由于某种原因它不喜欢它,依此类推。
还有一个(虽然还是理论上的;)蛮力选项-为您的路由器地址创建一个DNS-SD条目,作为带有Airplay发送器的网络的Airplay接收器,并将UDP流转发(NAT)到实际的Airplay接收器。但是即使这样,(对于苹果工程师来说)还是有可能打破它的。
继续进行测试,让我们知道您的结果。
这是教育环境中的常见问题。苹果公司在向学生/职员销售iPad和Mac方面做得非常出色,他们想利用Airplay / Airprint /其他Bonjour功能。但是,正如您所指出的那样,这些功能依赖于单个广播域进行服务发现。企业/教育网络不是那样构成的。
这个问题非常普遍,以至于几年前许多教育机构的IT员工聚集在一起,并请Apple修复Bonjour,使其在这些环境中可以更好地工作。
为了直接解决您的问题,通常需要非常专业的配置来完成整个网络上Airplay服务的扩展。而且具体的配置将在很大程度上取决于您当前的无线解决方案(Cisco,Aerohive,Ubiquity等)。通常,如果您搜索无线供应商和Bonjour,则应找到说明文件,至少可以为您指明正确的方向。
我在部署思科Avahi Bonjour网关解决方案方面取得了不同的成功,除非绝对需要,否则不建议您进行研究。
正如您在第三个问题中所指出的那样,对我来说,最重要的是,您始终会受苹果的支配,因为这是针对家庭网络环境的封闭的,专有的,未记录的服务*。因此,除非Apple决定做出更改,否则我将尽可能避免在企业网络中实施它。
* mDNSResponder的基础代码是开放的,非专有的,并且在Apache许可下可用。但是,Apple对其iDevices和MacOS内部的实现不在您的控制范围内,并且可能随时更改。
Avahi可以在这里为您提供帮助。有很多选项,但这应该可以跨子网进行通信。您应该能够在ddwrt盒上获得它,或者使用Raspberry Pi和dot1q接口。
enable-reflector= Takes a boolean value ("yes" or "no"). If set to
"yes" avahi-daemon will reflect incoming mDNS requests to all local
network interfaces, effectively allowing clients to browse mDNS/DNS-SD
services on all networks connected to the gateway. The gateway is
somewhat intelligent and should work with all kinds of mDNS traffic,
though some functionality is lost (specifically the unicast reply bit,
which is used rarely anyway). Make sure to not run multiple reflectors
between the same networks, this might cause them to play Ping Pong with
mDNS packets. Defaults to "no".
reflect-ipv= Takes a boolean value ("yes" or "no"). If set to "yes" and
enable-reflector is enabled, avahi-daemon will forward mDNS traffic
between IPv4 and IPv6, which is usually not recommended. Defaults to
"no".
它不起作用,因为它是广播(多播)技术。(另请参见:Bonjour)跨广播域(即VLAN)需要代理。我不是Mac人士,但是我之前见过这样的代理设置-因此iDevices可以连接到无线和有线是不同局域网的打印机。我不记得所使用的程序,但它不是免费的。
Airplay通过IP传输,因此适用常规路由。您需要一台路由器将流量从一个VLAN路由到另一个VLAN。但是,除非您开始混乱多播,否则Bonjour将保留在本地VLAN上。
这是一个坏主意吗?这取决于 ;-)。您必须告诉我们更多有关您的生产环境的信息才能做出有根据的猜测。
正如其他人指出的那样,有一个名为Avahi(http://www.avahi.org)的免费开放源代码解决方案,可以用作mDNS / Bonjour代理。运行此软件的计算机必须具有与每个VLAN /子网之间的网络接口,您希望将mDNS服务发布到该VLAN /子网。但是,要使实际服务正常运行,必须在访问列表或防火墙中启用VLAN间路由,或允许TCP / UDP连接到启用了mDNS的设备。其他选项包括Cisco或Ubiquiti wifi控制器,它们也可以用作mDNS代理;如果使用Mac,您可以为每种服务创建代理(https://kb.acronis.com/sites/default/files/content/2013/ 01/39490 / wanbonjour_1.pdf)。最后一个解决方案的问题是,您必须为每个服务创建一个代理,并且每次计算机重新启动时都必须重做一次。