WireGuard 分流教程:wg-easy 配置国内直连、国外走 VPN(Windows/macOS/Linux)
WireGuard 默认开启全局代理,国内网站变慢、VPS 流量消耗快怎么办?这篇教程教你基于 wg-easy 配置国内直连、国外走 VPN 的分流方案,通过修改 WireGuard 配置和 chnroute 路由脚本,实现 Windows、macOS、Linux 三平台智能分流。包含配置方法、验证步骤、自动更新和常见问题,新手也能轻松完成设置。

前言:为什么要做分流?
WireGuard 默认全局代理——连上 VPN 后所有流量都走 VPS。这有两个问题:
- 国内网站变慢。访问百度、B站、淘宝,流量绕到海外 VPS 再回来,延迟爆炸。
- 浪费带宽。VPS 流量通常有限,全量转发很快就用完了。
分流的意思是:国内 IP 直连,国外 IP 走 VPN。速度飞快,流量也省了一大截。
本文基于上一篇 wg-easy 搭建的环境,只需要改几处配置。
原理(30 秒看懂)
本质上是路由表控制。WireGuard 客户端有一个 AllowedIPs 参数,默认写 0.0.0.0/0 表示全部流量进隧道。我们把它改成「只把国外 IP 网段路由到隧道,国内 IP 走本地网卡」。
核心工具是一个叫 chnroute 的脚本,它维护了一份中国 IP 地址列表(来自 APNIC),自动帮你生成路由规则。
第一步:客户端环境准备
以下操作在你的客户端电脑上进行,不是在 VPS 上。
Windows
下载 chnroute 的 Windows 脚本(保存为 wg-china.bat,放在桌面即可)。内容如下:
@echo off
setlocal enabledelayedexpansion
:: 下载中国 IP 段
curl -sL https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt -o china_ip_list.txt
:: 清空旧路由(WireGuard 接口相关)
route DELETE 0.0.0.0 MASK 0.0.0.0 2>nul
:: 添加国内直连路由
for /f "tokens=*" %%i in (china_ip_list.txt) do (
route ADD %%i MASK 255.255.255.0 你的本地网关 METRIC 1
)
echo 分流规则已更新。
pause
把「你的本地网关」换成你网卡的默认网关地址。打开 cmd 输入
ipconfig,找到你正在用的网卡,看「默认网关」那行。
macOS / Linux
macOS 和 Linux 用下面这个脚本(保存为 wg-china.sh):
#!/bin/bash
# 下载中国 IP 段
curl -sL https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt -o /tmp/china_ip_list.txt
# 获取默认网关
GATEWAY=$(netstat -rn | grep default | awk '{print $2}' | head -1)
# 获取物理网卡接口名
IFACE=$(route get default 2>/dev/null | grep interface | awk '{print $2}')
if [ -z "$IFACE" ]; then
IFACE=$(ip route | grep default | awk '{print $5}')
fi
# 逐条添加路由
while IFS= read -r cidr; do
[ -z "$cidr" ] && continue
sudo route add -net "$cidr" "$GATEWAY"
done < /tmp/china_ip_list.txt
echo "分流规则已更新,网关: $GATEWAY,网卡: $IFACE"
赋予执行权限:chmod +x wg-china.sh,然后每次需要分流时运行 sudo ./wg-china.sh。
第二步:修改 WireGuard 客户端配置
打开你的 WireGuard 客户端配置文件(.conf),找到 AllowedIPs 这一行:
原来的配置(全局代理):
[Peer]
AllowedIPs = 0.0.0.0/0
改成(不走全局):
[Peer]
AllowedIPs = 10.8.0.0/24
这样 WireGuard 本身不再接管所有流量,只路由 VPN 内网地址。实际分流由上面的路由脚本控制。
保存配置,重新连接 WireGuard。此时你的上网流量走的是本地网络,VPN 隧道只在访问 10.8.0.x(VPN 内网)时生效。
第三步:运行分流脚本
连接 WireGuard 后,运行对应系统的分流脚本:
- Windows:右键
wg-china.bat→ 以管理员身份运行 - macOS / Linux:
sudo ./wg-china.sh
脚本会自动下载最新中国 IP 列表,并把国内 IP 的路由指向本地网关。
第四步:验证分流效果
打开命令行,做两个测试:
测试国内访问
# Windows
tracert www.baidu.com
# macOS / Linux
traceroute www.baidu.com
跳数应该很少(1-3 跳),不会出现你的 VPS IP。说明百度直连走了本地。
测试国外访问
tracert www.google.com # Windows
traceroute www.google.com # macOS / Linux
路由应该经过你的 VPS IP,说明 Google 走了 VPN 隧道。
更直观的验证:打开浏览器访问 ipleak.net,国内 IP 检测网站应该显示你的真实国内 IP,而 ipleak 显示的 DNS 应该是 1.1.1.1(你在 wg-easy 里设的 DNS)。
进阶:方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| 路由脚本法(本文) | 免费、可控 | 需要手动运行脚本更新 IP 列表 |
| Clash / V2Ray 分流 | 规则丰富、社区维护 | 额外装一个软件 |
| 路由器端分流(OpenWrt) | 全家设备受益、一次配置 | 需要刷路由器、门槛较高 |
如果觉得每次手动跑脚本麻烦,可以把脚本加到开机自启。Windows 用任务计划程序,macOS 用 LaunchAgent,Linux 用 systemd timer。
常见问题
跑了脚本但国内网站还是慢?
查一下路由表:route print(Windows)或 netstat -rn(macOS/Linux),确认国内 IP 段指向的是本地网关而不是 VPN 接口。如果没生效,很可能是没有以管理员/root 权限运行脚本。
中国 IP 列表怎么更新?
重新跑一次脚本就行。每个月更新一次够了——中国 IP 段变动很慢。
能不能自动更新?
可以。Linux 下加一条 cron:0 3 1 * * /path/to/wg-china.sh,每月 1 号凌晨 3 点自动更新。
小结
分流方案让 WireGuard 从「能用」变「好用」。下篇教程讲怎么用 WireGuard 把两处住所或办公室网络打通——Site-to-Site 组网。


