@@ -98,25 +98,6 @@ umask 077
9898wg genkey > priv_key && wg pubkey < priv_key > pub_key && echo " priv_key" && cat priv_key && echo " pub_key" && cat pub_key && rm -f priv_key pub_key
9999```
100100
101- ** 配置示例:**
102- 假设为服务器生成了密钥对:
103- ```
104- priv_key: ABC123...(服务器私钥)
105- pub_key: XYZ789...(服务器公钥)
106- ```
107-
108- 服务器配置文件中使用自己的私钥:
109- ``` ini
110- [Interface]
111- PrivateKey = ABC123... # 服务器自己的私钥
112- ```
113-
114- 客户端配置文件中引用服务器的公钥:
115- ``` ini
116- [Peer]
117- PublicKey = XYZ789... # 服务器的公钥
118- ```
119-
120101需要为每个节点(服务器、路由器、手机等)都生成独立的密钥对,然后交叉配置彼此的公钥。
121102
122103比较重要的一个配置是 ` AllowedIPs ` ,这个参数有两个作用:一是告诉系统哪些 IP 要走 VPN 隧道,二是限制对端能使用哪些 IP。配置的时候需要注意,比如我给家庭网络 A 设置了 ` 192.168.151.2/32, 192.168.2.0/24 ` ,意思是这个节点可以用 .2 这个 VPN IP,同时也代表整个 192.168.2.0 网段。
@@ -147,26 +128,16 @@ PublicKey = <笔记本的公钥>
147128AllowedIPs = 192.168.151.4/32
148129```
149130
150- ** 重要配置说明:**
151-
152- 上述iptables规则的作用:
153- - ** FORWARD规则** :允许WireGuard接口的流量转发,实现不同VPN客户端间通信
154- - ** MASQUERADE规则** :对出口流量进行NAT,让VPN客户端可以访问互联网
155- - ** eth0接口** :需要根据服务器实际网卡名称调整(可能是ens3、ens33等)
156-
131+ 启动服务并开放端口:
157132``` bash
158- # 检查网卡名称
159- ip route | grep default
160-
161133# 启用服务
162134systemctl enable --now wg-quick@wg0
163135
164- # 开放防火墙端口(根据云服务商调整)
136+ # 开放防火墙端口
165137ufw allow 24356/udp
166138
167- # 验证连接状态和路由
139+ # 验证连接状态
168140wg show
169- ip route show table all | grep wg0
170141```
171142
172143#### 4. 客户端配置详解
@@ -184,68 +155,54 @@ AllowedIPs = 192.168.151.0/24, 192.168.4.0/24
184155PersistentKeepalive = 25
185156```
186157
187- ** 移动设备配置模板:**
188-
189- ** MacBook 配置 (macOS):**
158+ ** 移动设备配置:**
190159``` ini
191160[Interface]
192- PrivateKey = <MacBook私钥 >
161+ PrivateKey = <设备私钥 >
193162Address = 192.168.151.4/24
194- DNS = 192.168.151.1, 1.1.1.1
163+ DNS = 192.168.151.1
195164
196165[Peer]
197166PublicKey = <服务器公钥>
198- Endpoint = 203.0.113.1 :24356
167+ Endpoint = <服务器IP> :24356
199168AllowedIPs = 192.168.151.0/24, 192.168.2.0/24, 192.168.4.0/24
200169PersistentKeepalive = 25
201170```
202171
203- OpenWrt 的配置比较麻烦,需要在 Web 界面里设置。基本流程是添加 WireGuard 接口,填好密钥和 IP,然后配置防火墙规则。对端设置里需要打开路由允许的 IP,这样才能保证在局域网内的设备可以通过 OpenWrt 访问异地局域网内的设备 。
172+ OpenWrt 路由器在 Web 界面配置 WireGuard 接口和防火墙规则即可 。
204173
205174#### 5. 连接验证
206- 配置完成后,验证网络连通性:
207-
208175``` bash
209- # 在移动设备上测试连接
210- ping 192.168.151.1 # 测试到 ECS 服务器
211- ping 192.168.2.100 # 测试到家庭网络 A 的 NAS
212- ping 192.168.4.1 # 测试到家庭网络 B 的设备
213-
214- # 检查路由表
215- ip route show table all | grep wg0
176+ # 测试连通性
177+ ping 192.168.151.1 # 服务器
178+ ping 192.168.2.100 # 家庭网络 A
179+ ping 192.168.4.1 # 家庭网络 B
216180
217- # 查看WireGuard状态
181+ # 查看状态
218182wg show
219183```
220184
221- ### 四、关键技术细节与排错
222-
223- #### 1. 连接稳定性优化
224- 由于大多数网络环境都存在 NAT 超时机制,建议配置 ` PersistentKeepalive = 25 ` (单位:秒),定期发送保活包维持连接。
225-
226- #### 2. 一些安全注意事项
227- 端口我没用默认的 51820,改成了 24356,虽然作用不大但至少能避开一些自动扫描。密钥文件权限记得设成 600,这个很重要。另外 AllowedIPs 不要设成 0.0.0.0/0 除非你真的需要所有流量都走 VPN,否则会影响正常上网。
185+ ### 四、注意事项与排错
228186
229- #### 3. 常见问题排查
230- - ** 连接失败** :首先检查密钥是否匹配,确认防火墙规则是否放行 UDP 流量
231- - ** 路由不通** :使用 ` wg show ` 命令检查对等体状态,确认各节点的 AllowedIPs 设置正确
232- - ** 性能问题** :确保中心节点有足够的网络带宽处理所有流量转发
233- - ** DNS 解析** :如需内网 DNS,在客户端配置 DNS = 192.168.151.1
187+ ** 稳定性** :配置 ` PersistentKeepalive = 25 ` 保持连接。
234188
235- ### 五、方案总结与优化思考
189+ ** 安全性** :
190+ - 端口改为非默认值(如 24356)
191+ - 密钥文件权限设为 600
192+ - AllowedIPs 避免使用 0.0.0.0/0
236193
237- 用了几个月下来,感觉 WireGuard 真的很香。最明显的是手机连接很稳定,从 4G 切 WiFi 基本不会断,比之前用过的那些 VPN 靠谱多了。而且配置好了之后基本不用管,偶尔重启一下服务器也会自动重连。
194+ ** 常见问题** :
195+ - ** 连接失败** :检查密钥匹配,确认防火墙放行 UDP 流量
196+ - ** 路由不通** :用 ` wg show ` 检查状态,确认 AllowedIPs 设置正确
238197
239- 唯一稍微麻烦的就是 OpenWrt 那边的配置,需要在界面里点来点去设置路由和防火墙,不过设置好一次就不用动了。如果以后设备多了,可能考虑搞个 wg-easy 这种 Web 界面来管理,不过目前这个规模手动管理完全够用。
198+ ### 五、使用体验
240199
241- ### 六、推荐资源
200+ 用了几个月下来,WireGuard 的稳定性很不错,手机从 5G 切 WiFi 基本不会断线。配置好之后基本免维护,偶尔服务器重启也会自动重连。
242201
243- 对于家庭用户,以下资源可能会有帮助:
202+ OpenWrt 配置稍微麻烦一些,但设置好一次就不用动了。设备多了可以考虑用 wg-easy 这种 Web 界面管理。
244203
245- ** 简化管理工具:**
246- - [ wg-easy] ( https://github.com/wg-easy/wg-easy ) : 提供 Web 界面,方便添加和管理设备
247- - WireGuard 官方移动端 App: iOS 和 Android 都有,界面简洁易用
204+ ### 六、相关资源
248205
249- ** 参考文档: **
250- - [ WireGuard 官方快速入门 ] ( https://www.wireguard.com/quickstart/ )
251- - [ OpenWrt WireGuard 配置 ] ( https://openwrt.org/docs/guide-user/services/vpn/wireguard/start )
206+ - [ wg-easy ] ( https://github.com/wg-easy/wg-easy ) :Web 管理界面
207+ - [ WireGuard 官方文档 ] ( https://www.wireguard.com/quickstart/ )
208+ - [ OpenWrt WireGuard 配置指南 ] ( https://openwrt.org/docs/guide-user/services/vpn/wireguard/start )
0 commit comments