我有一台 MacBook Pro(运行 El Captain 10.11.6)(本地 IP 地址:192.168.0.13),我想使用“dlnast”流式传输一些电影(https://github.com/iovis9/dlnast) 我通过“npm”(HomeBrew 安装的 node 7.0.0) 安装到 DLNA/Airplay 接收器上,该接收器是“Freebox Player”(本地 ip 地址:192.168.0.19)。两者都通过用作调制解调器/路由器的“Freebox Server”(本地 ip 地址:192.168.0.254) 连接到同一个 Wifi 网络。
到目前为止,我让它工作了,但是当我仍然在家里连接到 OpenVPN 客户端(HomeBrew 安装的 openvpn 2.3.13)时(因此,它给我“utun1”接口 10.14.0.210 作为本地 ip),它不起作用。所以当我想流式传输时,“dlnast”似乎找不到我的“Freebox Player”。我可以 ping“Freebox Player 和服务器”,它们正在响应...我可以访问里面的文件,并输入路由器配置...如果我使用其他软件,例如“Beamer”,那是可以工作的,但我需要并且想要使用“dlnast”。
在使用“Wireshark”进行几次调查后,当我开始流式传输时,没有使用 VPN,我的笔记本电脑使用 192.168.0.13 和端口 8888(我可以更改它)通过接口“en1”(Wifi)与“Freebox Player”通信,即 192.168.0.19 和端口 53512;否则,当我开始使用 VPN 流式传输时,我的笔记本电脑使用 10.14.0.210 和端口 3333(似乎我无法更改它)通过接口“utun1”(VPN 隧道)与 239.255.255.250 和端口 1900 通信;奇怪的是,在这两种情况下,“dlnast”都告诉我它在 192.168.0.13 的端口 8888 上启动了一个服务器,即使连接到 VPN 也是如此。
那么,有没有办法通过 VPN 隧道“utun1”正确路由我的本地网络,或者在执行此类工作时强制我的笔记本电脑使用“en1”接口(Wifi)?
由于我对这个问题的了解很少,无法正确理解路由表,如果有人能花时间向我解释哪里出了问题,那就太好了,任何帮助都会受到欢迎……
谢谢...
答案1
当您的 OpenVPN 客户端运行时,您的媒体软件会尝试使用 VPN 接口 (utun1) 地址来收听 DLNA 广播,除非广播来自 OpenVPN 服务器,否则此操作将无法正常工作。我不太熟悉您的媒体软件,但配置中可能有一些内容可以告诉它始终使用无线接口 (en1)。
我有丰富的使用 OpenVPN 的经验,当这种事情发生时,真的很麻烦。
答案2
好的,最后,我找到了让它工作的方法,对于大多数像这样的情况应该是相同的解决方案,而不取决于你使用的软件,而是正确路由 DLNA 投射的问题:
首先,您需要使用 Wireshark 进行调查,当 DLNA 流式传输开始时,它会通过“SSDP”协议发现网络以查找接收器(在我的情况下使用 239.255.255.250,可能不同,我不确定),它会尝试几次,如果没有响应,它就会停止。
我确信我的“Freebox Player”在 192.168.0.19 下已知,并且我的路由器“Freebox Server”在我的本地网络上的已知地址为 192.168.0.254。
因此,我们需要确保笔记本电脑知道这一点,例如:
sudo route add -net 192.168.0.19 -netmask 255.255.255.0 192.168.0.254
现在,我们需要将 DLNA 设备发现工具尝试的 IP 地址直接链接到“Freebox Player”,以确保它能够找到它,这是有意义的:
sudo route add -host 239.255.255.250 192.168.0.19
完成,对我有用,希望它对其他人也有用......