You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

配置WireGuard客户端服务器:仅将VPN用于VPN网络通信,其余流量走eth0接口

配置WireGuard客户端服务器:仅将VPN用于VPN网络通信,其余流量走eth0接口

嘿,我来帮你搞定这个问题!你现在的核心问题出在客户端WireGuard配置里的AllowedIPs参数设置——之前设成了0.0.0.0/0,::/0,这会强制所有流量都走VPN接口(wg0)。只需要调整这个参数,就能实现「仅VPN内网通信走wg0,其余流量走eth0」的需求,具体步骤如下:

1. 修改客户端WireGuard配置

打开你的本地服务器(客户端)的WireGuard配置文件,找到[Peer]段落里的AllowedIPs,把原来的0.0.0.0/0,::/0替换成VPN的私有网段,也就是服务器配置里的10.66.66.0/24(IPv4)和fd42:42:42::/64(IPv6)。

修改后的完整客户端配置如下:

[Interface]
PrivateKey = privatekey
Address = 10.66.66.3/32,fd42:42:42::3/128

[Peer]
PublicKey = pubkey
PresharedKey = preshardkey
Endpoint = endpoint:60207
AllowedIPs = 10.66.66.0/24,fd42:42:42::/64

为什么要这么改?

AllowedIPs的作用是告诉WireGuard:只有目标IP属于这些网段的流量,才会通过wg0接口发送。改成VPN私有网段后,只有和VPN内其他成员(比如10.66.66.1、其他客户端的10.66.66.x地址)的通信才会走VPN,其余所有公网、本地非VPN流量都会自动走原来的eth0接口,不需要额外添加复杂的路由规则。

2. 重启WireGuard客户端服务

修改完配置后,重启客户端的WireGuard服务让新配置生效:

# 假设你的WireGuard接口名称是wg0
wg-quick down wg0
wg-quick up wg0

3. 验证配置是否生效

你可以通过以下方式确认配置效果:

  • 查看路由表,确认只有VPN网段指向wg0:
    ip route | grep wg0
    
    正常输出应该只有10.66.66.0/24 dev wg0 scope link这类条目,不会出现默认路由(default)指向wg0。
  • 实际测试流量走向:
    • ping VPN内的服务器(比如10.66.66.1),用tcpdump -i wg0 icmp抓包,能看到流量走wg0;
    • ping公网IP(比如8.8.8.8),用tcpdump -i eth0 icmp抓包,能看到流量走eth0。

关于服务器端配置的说明

你的服务器端WireGuard配置是正常的,不需要修改——它的规则是允许VPN与eth0之间的转发,同时做NAT让VPN客户端能访问公网。现在客户端已经限制了只有VPN网段流量走wg0,所以服务器端的NAT规则不会影响客户端的公网流量(因为客户端根本不会把公网流量发往wg0)。

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

火山引擎 最新活动