You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 22.04.3服务器配置指定应用/端口绕过OpenVPN以恢复Plex远程访问

Ubuntu 22.04.3服务器配置指定应用/端口绕过OpenVPN以恢复Plex远程访问

嘿,这个问题我之前帮不少朋友解决过,核心思路就是让Plex的流量不经过VPN隧道,直接走服务器的公网接口就行。下面给你几个实操性强的方案,你可以根据自己的需求选:

方案一:基于端口的策略路由(最常用)

Plex默认的远程访问端口是32400,我们可以给这个端口的流量单独设置路由规则,让它绕开VPN:

  1. 先确认你的公网接口(比如eth0ens33)和默认网关:

    • 查看接口:运行 ip addr,找到带有公网IP的网卡名称
    • 查看网关:运行 ip route show default,记下类似via 192.168.1.1 dev eth0里的网关地址
  2. 创建专用路由表:

    echo "200 plex" >> /etc/iproute2/rt_tables
    
  3. 给这个路由表添加公网网关:

    ip route add default via 你的网关地址 dev 公网接口名称 table plex
    

    比如:ip route add default via 192.168.1.1 dev eth0 table plex

  4. 设置规则,标记Plex端口的流量并指定路由表:

    ip rule add fwmark 1 table plex
    iptables -t mangle -A OUTPUT -p tcp --dport 32400 -j MARK --set-mark 1
    
  5. 保存配置避免重启失效:

    • 保存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服务来自动加载。

方案二:基于应用进程的路由(精准指定Plex)

如果你不想用端口,想直接让Plex整个进程的流量绕开VPN,可以这么做:

  1. 确认Plex的进程名称:

    ps aux | grep plex
    

    一般进程名是Plex Media Server

  2. 用iptables标记Plex进程的流量:

    iptables -t mangle -A OUTPUT -m owner --cmd-owner "Plex Media Server" -j MARK --set-mark 1
    
  3. 重复方案一中的步骤2-5,把标记为1的流量导向公网接口的路由表即可。

方案三:修改OpenVPN配置排除特定流量

如果你想从VPN层面直接排除Plex的流量,可以修改OpenVPN配置文件:

  1. 打开你的OpenVPN配置文件(通常在/etc/openvpn/client//etc/openvpn/server/目录下)

  2. 添加以下配置,让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

火山引擎 最新活动