minidlna + OpenVPN = 在 VPN 上看不到 DLNA 服务器

minidlna + OpenVPN = 在 VPN 上看不到 DLNA 服务器

我的 Ubuntu 14.04 PC 上运行着 OpenVPN(隧道,非桥接)和 minidlna 服务器。每个服务器都单独工作(因为 VPN 工作正常,我可以连接和浏览 Samba 共享,互联网流量通过 VPN;minidlna 服务器与连接到我的 LAN 的客户端一起工作),但是当我的客户端(android)通过 3G/4G 连接到 VPN 时,它看不到 minidlna 服务器。我编辑了文件的接口行,/etc/minidlna.confnetwork_interface=eth0,tun0没有奏效。我读到过某处说这可能与广播有关,需要添加到iptables规则中,但没有任何具体内容。我必须做什么才能让它工作?

允许 IPv4 转发,/etc/sysctl.conf并且我已经按照以下要求将以下内容添加到 iptables 中本 OpenVPN 指南可帮助您通过公共 Wi-Fi 安全浏览网页

sudo iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -t nat -I POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE

iptables并且我使用以下方法确保更改在重启后仍然有效iptables-持久性(它可以从默认存储库中为 Ubuntu 14.04 提供,尽管我在撰写本文时没有在链接的网页上看到它列出)。

编辑 我尝试从 转到,dev tundev tapOpenVPN 应用不支持。我还读到过 GRE。OpenVPN 能支持吗?

答案1

我遇到了和你同样的问题,这是我的解决方案:

在 minidlna 的 conf 文件中,您有一个注释掉的参数“listen_ip”。取消注释,并在接口 tun0 上写入您的 vpn 服务器的地址。就您而言,它似乎是 10.8.0.1。重新启动 minidlna 服务器,当您在网络外通过 vpn 连接时,它应该可以工作。

警告:如果这样做,您的 minidlna 将无法在您的本地网络中看到。我在这里寻找解决方案:MiniDLNa 本地和通过 openvpn

答案2

看这里10 分钟内实现 openvpn 支持 upnp关于如何为 UPnP 设置它。(我不确定 DLNA 如何适用于此)。我设法让它与 Android 客户端和 OpenVPN 配合使用。

关键点似乎是upnpd由 linux-igd 包提供。它以某种方式连接 VPN 和“本地”网络。

答案3

我决定不通过 OpenVPN 使用 UPnP/DLNA。我安装了 apache2、h.264,并链接了包含我想要流式传输的媒体的文件夹,如下所示

cd /var/html/www
ln -s /path/to/media myfoldername

因此,现在当我将客户端连接到 VPN 时(删除默认文件后index.html),我可以将 Web 浏览器指向服务器的本地 IP,它会弹出一个名为的目录,myfoldername我可以浏览要流式传输的媒体。单击文件会打开 h.264 播放器并流式传输视频。

编辑

然后我发现了 Plex Media Server。这似乎是最好的解决方案。我所要做的就是在 Plex 中允许我的 VPN 子网,现在我可以在手机上远程使用 Web 界面来传输我的所有媒体,当然是在将媒体添加到 Plex 库之后。

答案4

这是一个老话题,但我发布了我的解决方案,希望它能帮助到别人。

如果你在机器的终端中运行minidlna以下命令:

sudo netstat -tuwanp | grep "Proto\|dlna"

你会得到类似以下的结果:

Proto Recv-Q Send-Q Local Address                               Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8200                                0.0.0.0:*               LISTEN      your-pid/minidlnad
udp        0      0 239.255.255.250:1900                        0.0.0.0:*                           your-pid/minidlnad
udp        0      0 your-vpn-server-ip:your-random-port         0.0.0.0:*                           your-pid/minidlnad
udp        0      0 your-minidlna-server-ip:your-random-port    0.0.0.0:*                           your-pid/minidlnad

根据https://extremeportal.force.com/ExtrArticleDetail?an=000091058该地址239.255.255.250用于 UPnP(通用即插即用)/SSDP(简单服务发现协议)。因此,我们必须将此地址添加到 VPN 路由配置中,以便 VPN 客户端能够发现 DLNA 服务。

  • 为此OpenVPN,可以通过服务器配置将配置推送到所有客户端来实现:

    push "route 239.255.255.250 255.255.255.255 vpn_gateway"
    

    或者您可以为每个客户端单独添加相应的路由配置。

  • 为此WireGuard,可以通过在每个对等点的配置文件中添加 IP 来实现:

    AllowedIPs = your-existing-allowed-ip-list, 239.255.255.250/32
    

更改 VPN 配置后:

  • 重新启动 VPN 服务
  • 重新启动运行服务的机器minidlna(仅重新启动minidlna服务对我来说不起作用。)
  • 连接你的 VPN 客户端并等待一段时间来发现 DLNA 服务

相关内容