You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VPN连接(VPN服务器+树莓派+子网)中NAS无法访问RPi以太网子网摄像头的问题排查

VPN连接(VPN服务器+树莓派+子网)中NAS无法访问RPi以太网子网摄像头的问题排查

看起来你遇到的是典型的跨VPN子网路由双向可达性问题,咱们一步步来拆解排查和解决:

核心问题分析

目前你的网络链路是:NAS(OpenVPN服务器,192.168.1.142)→ VPN隧道(tun0,10.8.0.0/24)→ RPi(10.8.0.10)→ 摄像头子网(10.42.0.0/24)。现在RPi能访问摄像头,但NAS不行,本质是路由缺失+IP转发未开启导致的双向流量不通。


第一步:给NAS添加静态路由,指向RPi的VPN节点

NAS当前的路由表中没有10.42.0.0/24子网的条目,所以它根本不知道该把访问摄像头的数据包发往哪里。你需要告诉NAS:要访问10.42.0.0/24这个子网,所有数据包都通过VPN隧道(tun0)发往RPi的VPN内网IP(10.8.0.10)。

在NAS上执行临时生效的路由添加命令:

ip route add 10.42.0.0/24 via 10.8.0.10 dev tun0

验证路由是否生效:

ip route | grep 10.42.0.0

如果要让这个路由永久生效(NAS重启后不消失),需要根据你的NAS系统操作:比如Synology NAS可以在「控制面板 > 网络 > 静态路由」里手动添加;如果是Linux-based的NAS,把这条命令加到开机启动脚本里。

第二步:确保RPi开启了IP转发功能

RPi作为连接VPN和摄像头子网的中间节点,必须允许IP数据包在不同网络接口之间转发(从tun0到eth0,反之亦然),而Linux系统默认是关闭这个功能的。

  • 临时开启(重启RPi后失效):
sudo sysctl -w net.ipv4.ip_forward=1
  • 永久开启(编辑系统配置文件):
    打开sysctl配置文件:
sudo nano /etc/sysctl.conf

找到net.ipv4.ip_forward=1这一行,去掉前面的注释符号#,保存退出后执行:

sudo sysctl -p

让配置立即生效。

第三步:检查RPi的防火墙(iptables)转发限制

如果你的RPi开启了防火墙,默认的iptables规则可能会阻止跨接口的转发流量,需要手动允许tun0和eth0之间的双向转发:

sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT

如果要让这些iptables规则永久保存(RPi重启后不丢失),可以安装iptables-persistent包:

sudo apt update && sudo apt install iptables-persistent

安装过程中会提示你保存当前的iptables规则,选择「Yes」即可。

第四步:优化回程路由(摄像头到NAS的流量)

摄像头的默认网关是RPi的eth0 IP(10.42.0.1),理论上摄像头发往NAS的数据包会通过RPi的VPN路由转发回NAS,但如果还是出现丢包,你可以在RPi上配置SNAT(源地址转换),让摄像头的数据包看起来是从RPi的VPN IP发出的,这样NAS的回复包能准确回到RPi:

sudo iptables -t nat -A POSTROUTING -s 10.42.0.0/24 -o tun0 -j MASQUERADE

最后:测试连通性

完成上面所有步骤后,回到NAS上执行ping命令测试:

ping 10.42.0.231

如果还是不通,可以在RPi上抓包排查:

  • 查看VPN接口是否收到NAS的ping包:sudo tcpdump -i tun0 icmp
  • 查看以太网接口是否把包转发到摄像头:sudo tcpdump -i eth0 icmp
    通过抓包可以快速定位是哪一段链路的流量出了问题。

备注:内容来源于stack exchange,提问作者pepco2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:58:08