让 Chromecast 跨子网工作

让 Chromecast 跨子网工作

我知道谷歌说它不支持。有人用 Chromecast 与不同子网上的客户端通信吗?我有一个 OpenWRT 路由器连接到我的互联网提供商路由器(父路由器)。OpenWRT 网络是一个不同的子网,处理 DHCP 等。OpenWRT 网络(192.168.1.0/24)和父网络(192.168.11.0/24)

chromecast 在父网络上,我希望 OpenWRT 网络上的客户端使用 Chromecast。

我已启用 igmp_snooping,并在反射器模式下运行 igmpproxy 和 avahi-daemon。我可以在 bonjour explorer 中看到 Chromecast(来自 OpenWRT 网络上的一台机器),但 Chromecast 应用无法连接。

我也尝试过增加 OpenWRT 路由器上的 TTL

iptables -t mangle -A PREROUTING -i eth0 -d 239.255.255.250 -j TTL --ttl-inc 1
iptables -t mangle -A PREROUTING -i wlan0 -d 239.255.255.250 -j TTL --ttl-inc 1

使用 wireshark 我可以看到,chromecast 和计算机正在通过子网进行通信......但它仍然无法连接。

我还可以从子网络 ping chromecast。

有人做过这个吗?有什么指点吗?

答案1

据我所知,唯一阻止 Chromecast 在其他子网中使用的问题是发现问题,该问题由多播 UPNP 数据包处理,不幸的是,该数据包的 TTL 为 1。我没有按照你的建议让路由器执行所有常见的多播操作并调整 TTL,而是编写了一个 python 脚本来在另一个子网上宣传我的 Chromecast。它可在github

答案2

我发现有两个潜在问题。

1) Chromecast 可能使用非路由协议。想想 NetBIOS 或 IPX。仅仅因为它和它连接的设备使用 IP 进行管理,并不意味着视频数据包可以穿越该网络设备

2) 您也可能遇到此路由问题。我曾见过廉价网络连接设备在 192.168 专用网络之间路由时遇到的几个问题。该网络空间不是为大型企业路由而设计的。当我们尝试通过调整网络掩码合并两个相邻范围时,我们在一个站点遇到了问题。这应该不是问题,但路由器无法可靠地做到这一点。

如果您尝试使用 10.x.64.0/23,可能会更幸运。我建议使用这个范围,因为它属于偶数位模式。切换所有设备并重新链接它们确实很麻烦,但它是作为网络重新设计的一部分实施的。

相关内容