我的 Ubuntu 14.04 PC 上运行着 OpenVPN(隧道,非桥接)和 minidlna 服务器。每个服务器都单独工作(因为 VPN 工作正常,我可以连接和浏览 Samba 共享,互联网流量通过 VPN;minidlna 服务器与连接到我的 LAN 的客户端一起工作),但是当我的客户端(android)通过 3G/4G 连接到 VPN 时,它看不到 minidlna 服务器。我编辑了文件的接口行,/etc/minidlna.conf
但network_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 tun
但dev tap
OpenVPN 应用不支持。我还读到过 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 服务