WireGuard 服务端完整配置说明(OpenWrt 旁路由 + 爱快)
前言
本文记录在 OpenWrt 旁路由上部署 WireGuard 服务端的完整流程,包含密钥生成、接口配置、防火墙区域、客户端配置及排错。适用于远程访问家庭内网的场景。
一、用途说明
WireGuard 是一个轻量级现代 VPN。在本方案中:
- 📱 手机或笔记本在外网时安全连接回家里网络
- 🏠 连接后可访问家中局域网设备(NAS、路由器等)
- 🔒 不让所有手机流量都走家里出口,只让访问内网的流量走 VPN
适用场景
- OpenWrt 作为旁路由 + 爱快作为主路由
- 远程访问 NAS、OpenWrt、家庭设备
- 出门在外需要访问家中内网资源
二、当前网络规划
| 角色 | IP / 网段 |
|---|---|
| 爱快主路由 | 192.168.0.1 |
| OpenWrt 旁路由 | 192.168.0.3 |
| WireGuard 虚拟网段 | 10.6.0.0/24 |
| WireGuard 服务端地址 | 10.6.0.1 |
| 第一个手机客户端地址 | 10.6.0.2 |
三、安装所需包
apk update
apk add kmod-wireguard wireguard-tools luci-proto-wireguard
| 包名 | 作用 |
|---|---|
kmod-wireguard | WireGuard 内核模块 |
wireguard-tools | 提供 wg 命令 |
luci-proto-wireguard | LuCI 网页支持 WireGuard |
四、生成服务端密钥
mkdir -p /etc/wireguard
wg genkey | tee /etc/wireguard/server_privatekey | wg pubkey > /etc/wireguard/server_publickey
chmod 600 /etc/wireguard/server_privatekey
cat /etc/wireguard/server_publickey
五、创建服务端接口
uci set network.wg0='interface'
uci set network.wg0.proto='wireguard'
uci set network.wg0.private_key="$(cat /etc/wireguard/server_privatekey)"
uci add_list network.wg0.addresses='10.6.0.1/24'
uci set network.wg0.listen_port='51820'
uci commit network
service network restart
uci show network.wg0
六、开放防火墙端口
uci add firewall rule
uci set firewall.@rule[-1].name='Allow-WireGuard-Inbound'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].dest_port='51820'
uci set firewall.@rule[-1].proto='udp'
uci set firewall.@rule[-1].target='ACCEPT'
uci commit firewall
service firewall restart
七、防火墙区域(推荐方案)
uci add firewall zone
uci set firewall.@zone[-1].name='wg'
uci add_list firewall.@zone[-1].network='wg0'
uci set firewall.@zone[-1].input='ACCEPT'
uci set firewall.@zone[-1].output='ACCEPT'
uci set firewall.@zone[-1].forward='ACCEPT'
uci set firewall.@zone[-1].masq='1'
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='wg'
uci set firewall.@forwarding[-1].dest='lan'
uci commit firewall
service firewall restart
八、确认运行状态
wg show
正常应看到 interface: wg0 和 listening port: 51820。
九、生成客户端密钥
wg genkey | tee /etc/wireguard/client1_privatekey | wg pubkey > /etc/wireguard/client1_publickey
chmod 600 /etc/wireguard/client1_privatekey
cat /etc/wireguard/client1_publickey
十、添加客户端 Peer
uci add network wireguard_wg0
uci set network.@wireguard_wg0[-1].description='phone'
uci set network.@wireguard_wg0[-1].public_key='客户端公钥'
uci add_list network.@wireguard_wg0[-1].allowed_ips='10.6.0.2/32'
uci commit network
service network restart
wg show
十一、手机客户端配置
Interface
| 参数 | 值 |
|---|---|
| 地址 | 10.6.0.2/24 |
| 私钥 | client1_privatekey 内容 |
| DNS | 192.168.0.3 |
Peer
| 参数 | 值 |
|---|---|
| 公钥 | server_publickey 内容 |
| Endpoint | 公网IP:51820 |
| AllowedIPs | 192.168.0.0/24,10.6.0.0/24 |
| PersistentKeepalive | 25 |
十二、爱快端口映射
| 参数 | 值 |
|---|---|
| 协议 | UDP |
| 外部端口 | 51820 |
| 内部 IP | 192.168.0.3 |
| 内部端口 | 51820 |
十三、排错:握手成功但访问不了内网
两种解决方式:
方式一:爱快加静态路由
| 目标网段 | 10.6.0.0 |
| 子网掩码 | 255.255.255.0 |
| 网关 | 192.168.0.3 |
方式二:OpenWrt 做 NAT(已在步骤七配置)
WG-Masquerade 规则:源区域 wg → 目标区域 lan,动作 MASQUERADE。
十四、安全建议
- 🔒 永远不要公开:服务端私钥、客户端私钥、路由器密码、订阅链接
- 私钥泄露后应全部重新生成
十五、推荐最终策略
客户端: AllowedIPs = 192.168.0.0/24, 10.6.0.0/24
OpenWrt: wg 区域 + wg→lan 转发 + WG-Masquerade
爱快: UDP 51820 端口映射 + 可选静态路由
本文最后更新:2026-08-15 | 静静整理发布
