外网访问OpenWrt
1. 检查环境:
你的外网设备和 PVE 是否在同一个 ZeroTier 网络?
ping ZTip
- 不通 → ZeroTier 本身没通,先解决 ZT 连接问题
- 确认 ZeroTier 授权, 登录 ZeroTier 后台,找到你的网络,确认:
- PVE 这台设备的前面已经打勾
- IP 分配正常(就是看到的 ZTip)
- 确认 ZeroTier 授权, 登录 ZeroTier 后台,找到你的网络,确认:
- PVE上检查ZeroTier 连接问题,检查 PVE 上的 ZT 服务
- zerotier-cli status
- 状态应该是
ONLINE
2. 转发规则:
1. 开启内核转发(必须第一条)
echo 1 > /proc/sys/net/ipv4/ip_forward
告诉 PVE 系统:
“你要允许数据包从一个网卡转发到另一个网卡”
“你要允许数据包从一个网卡转发到另一个网卡”
不执行这条,下面所有转发都无效。
2. 端口转发核心(最关键)
iptables -t nat -A PREROUTING -p tcp --dport 8888 -j DNAT --to-destination istoreOS-ip:80
逐段翻译:
-
iptables:Linux 防火墙工具-t nat:操作 NAT 转发规则-A PREROUTING:在数据包进入时修改-p tcp:只针对 TCP 协议--dport 8888:目标端口是 8888, 可自定义-j DNAT:修改目标地址--to-destination istoreOS-ip:80:转发到 iStoreOS 的 80 端口
总结:
谁访问 PVE 的 8888 端口 → 自动转给 iStoreOS-IP
3. 源地址伪装(必须加,否则访问不到)
iptables -t nat -A POSTROUTING -d istoreOS-ip -p tcp --dport 80 -j MASQUERADE
意思:让返回的数据包正常走 PVE 回去,不然 iStoreOS 不知道把数据还给谁。
总结:
让 iStoreOS 以为是 PVE 在访问它,从而正常返回数据。
4. 持久化保存
上面的命令重启 PVE 就消失,要永久生效执行:
apt install iptables-persistent
netfilter-persistent save
清空规则:
# 清空旧规则
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING
浙公网安备 33010602011771号