LAN与VLAN间Plex Web服务器的定向访问路由配置方案咨询
LAN与VLAN间Plex Web服务器的定向访问路由配置方案咨询
Hey Bill, 刚好折腾过类似的场景,你要的就是定向端口转发(用iptables的DNAT规则实现),完全不用桥接两个网络,只放行Plex需要的32400端口流量,完美匹配你的需求。下面一步步给你讲怎么操作:
前提确认
先搞清楚你的Ubuntu机器的两个接口信息:
- LAN以太网接口:假设是
eth0,IP为10.0.0.2 - Zerotier VLAN虚拟接口:通常是
zt0,IP为10.147.18.x(比如10.147.18.2) - Plex服务器的VLAN IP:比如
10.147.18.10,端口默认32400
可以用ip addr命令查看真实的接口名和IP,别搞混了。
步骤1:开启Ubuntu的IP转发功能
Ubuntu默认关闭IP转发,得先打开它,不然机器没法帮你转发数据包:
# 临时生效(重启后失效) echo 1 > /proc/sys/net/ipv4/ip_forward # 永久生效(重启后也能保留) sudo nano /etc/sysctl.conf # 找到这一行:#net.ipv4.ip_forward=1,把前面的#去掉,保存退出 sudo sysctl -p # 让配置立即生效
步骤2:配置iptables转发规则
需要两条核心规则:DNAT(把LAN来的请求转到Plex服务器)和SNAT(让Plex的返回流量能正确回到LAN设备)
2.1 添加DNAT规则
把LAN接口上收到的32400端口请求,转发到Plex服务器的IP和端口:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 32400 -j DNAT --to-destination 10.147.18.10:32400
2.2 添加SNAT规则
这条规则是让Plex服务器返回的数据包,通过Ubuntu的VLAN接口发回,不然返回的流量会找不到路:
sudo iptables -t nat -A POSTROUTING -o zt0 -p tcp --dport 32400 -d 10.147.18.10 -j SNAT --to-source 10.147.18.2
这里的10.147.18.2要换成你的Ubuntu机器的Zerotier接口IP。
步骤3:保存iptables规则(防止重启丢失)
Ubuntu 22.04默认用iptables-nft,直接用下面的命令保存规则:
sudo iptables-save | sudo tee /etc/iptables/rules.v4
这样重启机器后,规则会自动加载。
验证测试
- 先在Ubuntu机器上测试能不能访问Plex:
如果能返回Plex的页面内容,说明Ubuntu和Plex是通的。curl 10.147.18.10:32400 - 再在LAN里的其他设备上打开浏览器,访问
10.0.0.2:32400,应该就能看到Plex的登录界面了。
可能遇到的坑
- 如果你开了Ubuntu的ufw防火墙,记得放行32400端口:
sudo ufw allow 32400/tcp - 检查Zerotier的网络ACL规则,确保允许你的Ubuntu机器访问Plex服务器的IP和端口;
- 如果接口名不是
eth0或zt0,一定要换成你实际的接口名,用ip addr能查到。
备注:内容来源于stack exchange,提问作者Bill
相关产品推荐
相关产品推荐

