树莓派部署PiVPN后通过VPN无法访问互联网故障求助
故障根因排查与修复方案
第一步:清理无效iptables规则,重建正确NAT规则
你手动修改了VPN子网后,原有PiVPN自动生成的iptables规则仍然匹配旧的10.8.0.0网段,导致新网段流量无法正常转发:
- 先查看现有nat表规则确认冲突:
sudo iptables -t nat -L -n -v - 清空POSTROUTING链旧规则:
sudo iptables -t nat -F POSTROUTING - 重新添加匹配10.3.0.0网段的地址伪装规则:
sudo iptables -t nat -A POSTROUTING -s 10.3.0.0/24 -o eth0 -j MASQUERADE - 配置FORWARD链允许双向转发:
sudo iptables -A FORWARD -i tun0 -o eth0 -s 10.3.0.0/24 -j ACCEPT sudo iptables -A FORWARD -i eth0 -o tun0 -d 10.3.0.0/24 -j ACCEPT
- 安装iptables-persistent保存规则避免重启失效:
sudo apt install iptables-persistent -y sudo iptables-save > /etc/iptables/rules.v4
第二步:同步PiVPN全局配置与实际子网参数
你的debug日志显示/etc/pivpn/openvpn/setupVars.conf里的pivpnNET参数仍然是10.8.0.0,后续执行pivpn相关命令会生成错误规则,直接编辑该文件将参数修改为pivpnNET=10.3.0.0,然后重启OpenVPN服务:sudo systemctl restart openvpn
第三步:修复tun0本地不通问题
你无法通过tun0 ping通127.0.0.1属于反向路径过滤导致的丢包,按以下步骤修复:
- 检查tun0状态:
ip a show tun0,确认IP为10.3.0.1/24且接口状态为UP - 编辑
/etc/sysctl.conf关闭严格反向路径过滤,添加以下配置:
net.ipv4.conf.all.rp_filter=2 net.ipv4.conf.tun0.rp_filter=2 net.ipv4.conf.eth0.rp_filter=2
- 执行
sysctl -p让内核参数生效 - 修正MTU配置避免传输层丢包:把OpenVPN server配置里的
tun-mtu 1400、mssfix 1360修改为tun-mtu 1500、mssfix 1420
第四步:清理错误路由推送
你当前配置里的push "route 192.168.15.1 255.255.255.0"属于配置错误(IP和掩码不匹配),不需要访问该网段直接注释该行,需要的话修改为push "route 192.168.15.0 255.255.255.0",避免客户端路由混乱。
全部修改完成后重启树莓派,先在本地测试ping 10.3.0.1 -I tun0、ping 1.1.1.1 -I tun0正常后,再使用客户端连接测试即可。
内容的提问来源于stack exchange,提问作者OroZoro
相关产品推荐
相关产品推荐

