一台 nas 两台公网主机
nas配置参考;大陆内网配置wg0,香港主机配置wg1
root@nas:/usr/local/etc/wireguard # cat wg0.conf
[Interface]
# NAS 的私钥(FreeBSD 生成的 privatekey 内容)
PrivateKey = ***
# NAS 的 WireGuard 虚拟 IP(和服务端同网段,如 10.0.0.2/24)
Address = 10.0.0.2/24
PostUp = ifconfig lo0 up
# FreeBSD 开启 IP 转发(可选,若 NAS 需转发其他设备流量)
PostUp = sysctl net.inet.ip.forwarding=1
# 原有 Peer:公网服务器 A mpoes.com
[Peer]
# 公网服务器的公钥
PublicKey = **
# 公网服务器的公网 IP + WireGuard 端口
Endpoint = 123.57.225.213:51820
# 所有流量(0.0.0.0/0)都走 WireGuard 隧道(若仅转发 NAS 服务,可改为 10.0.0.0/24)
AllowedIPs = 0.0.0.0/0, ::/0
# 保持连接(防止隧道断开)
# 【关键】如果 NAS 在路由器/NAT 后面,必须开启心跳保活,否则回程流量进不来
PersistentKeepalive = 25
root@nas:/usr/local/etc/wireguard # cat wg1.conf
[Interface]
# NAS 的私钥(FreeBSD 生成的 privatekey 内容)
PrivateKey = **
# NAS 的 WireGuard 虚拟 IP(和服务端同网段,如 10.0.0.2/24)
Address = 10.0.1.2/24
ListenPort = 21821 #自定义端口,避免冲突
# 【关键】关闭 wg-quick 自动管理路由的功能 (如果版本支持),或者依靠 PostUp 强制覆盖
# FreeBSD wg-quick 没有 Table=off 选项,所以我们用 PostUp 暴力修正
# 【修正后的 PostUp】
# 1. 开启转发
# 2. 【核心】先删除可能存在的错误路由
# 3. 【核心】强制添加静态路由:B 的公网 IP 必须走物理网关 (192.168.1.1)
# 注意:这条路由的优先级必须高于 wg-quick 自动添加的路由
# 4. 切换默认路由到 WG
PostUp = sysctl net.inet.ip.forwarding=1; route delete -host 47.242.20.105 2>/dev/null; route add -host 47.242.20.105 -gateway 192.168.1.1; sleep 1; route delete default 2>/dev/null; route add default 10.0.1.1; route delete -host 47.242.20.105 2>/dev/null; route add -host 47.242.20.105 -gateway 192.168.1.1
# 解释:我们在切换默认路由前后都执行了一次路由修正,确保它不会被覆盖。
# 如果 wg-quick 后台进程依然捣乱,我们需要更激进的方法(见步骤 3)。
PreDown = route delete default 2>/dev/null; route add default 192.168.1.1
[Peer]
PublicKey = **
Endpoint = 47.242.20.105:51820
#AllowedIPs = 10.0.1.0/24 # 仅访问 10.0.1.0/24 网段走服务器 B 注意:仍指向NAS的10.0.0.2,无需改网段
# 关键:这里写 0.0.0.0/0,让 wg-quick 添加默认路由指向香港
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
root@nas:/usr/local/etc/wireguard #