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

从服务器本地网络访问VPN子网内的设备

从服务器本地网络访问VPN子网内的设备

我完全懂你的需求——就是想让家里192.168.1.x网段的所有设备,不用自己连WireGuard,就能直接SSH、远程桌面或者Ping到那些已经连到你Pi上的VPN客户端(10.0.0.x网段)对吧?这个需求太实用了,不用每台设备都折腾VPN连接确实省心很多。

咱们一步步来解决这个问题,先理清楚核心的几个关键点:IP转发、双向防火墙规则、客户端路由配置,还有本地网络的路由指向。

1. 先确保Pi的IP转发功能开启

这是所有转发的基础,必须先搞定:

  • 临时生效(重启后失效):执行 echo 1 > /proc/sys/net/ipv4/ip_forward
  • 永久生效:编辑 /etc/sysctl.conf,找到 net.ipv4.ip_forward=1 这一行,把前面的注释符号#去掉,然后执行 sysctl -p 让配置立刻生效。

2. 修改Pi上的WireGuard配置(wg0.conf)

你原来的PostUp/PostDown只处理了wg0到eth0的单向转发,现在要改成双向转发,同时兼顾eth0和wlan0(不管Pi用有线还是无线连家里网都能生效):

[Interface]
# 保留你原来的PrivateKey、ListenPort等配置
PostUp = iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT; iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; iptables -A FORWARD -i wg0 -o wlan0 -j ACCEPT; iptables -A FORWARD -i wlan0 -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT; iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; iptables -D FORWARD -i wg0 -o wlan0 -j ACCEPT; iptables -D FORWARD -i wlan0 -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o wlan0 -j MASQUERADE

这个配置的作用是:

  • 允许wg0和eth0/wlan0之间的双向流量转发
  • 对从wg0出去到eth0/wlan0的流量做NAT,让VPN客户端能正确回包到本地网络

3. 配置VPN客户端的WireGuard规则

每个连到Pi的VPN客户端,必须在它们的配置文件里添加你的本地网段,这样客户端才知道要把发往192.168.1.x的流量通过VPN发给Pi:
比如客户端的[Peer]部分应该是这样:

[Peer]
PublicKey = 你的Pi的公钥
Endpoint = 你的Pi的公网IP:51820(或者内网IP,如果是远程连的话用公网)
AllowedIPs = 10.0.0.0/24, 192.168.1.0/24
# 如果客户端需要通过VPN访问互联网,就把AllowedIPs改成0.0.0.0/0, ::/0,但如果只需要访问本地网和VPN子网,上面两个网段就够了

⚠️ 注意:你之前在Pi的[Peer]里加AllowedIPs = 10.0.0.8/32, 192.168.1.0是错误的,这也是wg0重启失败的原因!Pi的Peer配置里的AllowedIPs是用来识别来自该客户端的流量,你把本地网段加进去,等于告诉Pi“所有来自192.168.1.x的流量都属于这个客户端”,但Pi本身就在192.168.1.x网段,这就冲突了,所以WireGuard启动会崩溃。Pi这边的Peer只需要写客户端的VPN IP就行,比如AllowedIPs = 10.0.0.8/32。

4. 给本地网络添加静态路由

这一步是让家里的设备知道“要访问10.0.0.x网段,就把流量发给Pi”:

  • 最优方案:在你的家用路由器上配置静态路由,目标网段填10.0.0.0/24,下一跳填Pi的本地IP(比如192.168.1.xx)。这样所有本地设备都会自动走这条路由,不用单独配置。
  • 如果路由器没法配置,就在每台本地设备上手动加:
    • Windows:打开命令提示符(管理员),执行 route add 10.0.0.0 mask 255.255.255.0 192.168.1.xx
    • Linux/macOS:执行 ip route add 10.0.0.0/24 via 192.168.1.xx dev eth0(把eth0换成你的网卡名)

测试验证

做完以上配置后:

  1. 重启Pi上的WireGuard:wg-quick down wg0 && wg-quick up wg0
  2. 让远程客户端连到VPN
  3. 用家里的任意设备(比如192.168.1.laptop)直接Ping客户端的VPN IP(比如10.0.0.8),或者尝试SSH、远程桌面,应该就能直接通了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 12:58:04