Ubuntu 22.04.3服务器配置指定应用/端口绕过OpenVPN以恢复Plex远程访问
Ubuntu 22.04.3服务器配置指定应用/端口绕过OpenVPN以恢复Plex远程访问
嘿,这个问题我之前帮不少朋友解决过,核心思路就是让Plex的流量不经过VPN隧道,直接走服务器的公网接口就行。下面给你几个实操性强的方案,你可以根据自己的需求选:
方案一:基于端口的策略路由(最常用)
Plex默认的远程访问端口是32400,我们可以给这个端口的流量单独设置路由规则,让它绕开VPN:
先确认你的公网接口(比如
eth0或ens33)和默认网关:- 查看接口:运行
ip addr,找到带有公网IP的网卡名称 - 查看网关:运行
ip route show default,记下类似via 192.168.1.1 dev eth0里的网关地址
- 查看接口:运行
创建专用路由表:
echo "200 plex" >> /etc/iproute2/rt_tables给这个路由表添加公网网关:
ip route add default via 你的网关地址 dev 公网接口名称 table plex比如:
ip route add default via 192.168.1.1 dev eth0 table plex设置规则,标记Plex端口的流量并指定路由表:
ip rule add fwmark 1 table plex iptables -t mangle -A OUTPUT -p tcp --dport 32400 -j MARK --set-mark 1保存配置避免重启失效:
- 保存iptables规则:
iptables-save > /etc/iptables/rules.v4 apt install iptables-persistent -y - 保存路由规则:把步骤2-4的命令添加到
/etc/rc.local文件中(如果文件不存在,先执行touch /etc/rc.local && chmod +x /etc/rc.local),或者创建一个systemd服务来自动加载。
- 保存iptables规则:
方案二:基于应用进程的路由(精准指定Plex)
如果你不想用端口,想直接让Plex整个进程的流量绕开VPN,可以这么做:
确认Plex的进程名称:
ps aux | grep plex一般进程名是
Plex Media Server用iptables标记Plex进程的流量:
iptables -t mangle -A OUTPUT -m owner --cmd-owner "Plex Media Server" -j MARK --set-mark 1重复方案一中的步骤2-5,把标记为1的流量导向公网接口的路由表即可。
方案三:修改OpenVPN配置排除特定流量
如果你想从VPN层面直接排除Plex的流量,可以修改OpenVPN配置文件:
打开你的OpenVPN配置文件(通常在
/etc/openvpn/client/或/etc/openvpn/server/目录下)添加以下配置,让OpenVPN不覆盖默认路由,同时指定哪些流量走VPN:
route-noexec # 禁止OpenVPN自动设置默认路由 route 下载工具需要访问的IP段 子网掩码 vpn_gateway # 比如下载的 tracker 地址 route 0.0.0.0 128.0.0.0 net_gateway # 让一半的公网流量走本地网关(可选,按需调整)这种方式适合你只想让下载工具走VPN,其他应用(包括Plex)走公网的场景。
测试验证
配置完成后,重启OpenVPN和Plex服务:
systemctl restart openvpn systemctl restart plexmediaserver
然后用Plex客户端的远程访问检测功能,或者从外部网络访问http://你的公网IP:32400/web,确认远程访问是否恢复。
备注:内容来源于stack exchange,提问作者Adam Heller




