Skip to content

Commit 6293855

Browse files
committed
refactor: enhance clarity and readability in WireGuard article
1 parent a7cff98 commit 6293855

File tree

1 file changed

+30
-46
lines changed

1 file changed

+30
-46
lines changed

content/2025/我的WireGuard多站点互联实践.md

Lines changed: 30 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ date = 2025-10-13
66
issue_id = 9
77
+++
88

9-
家里有两个地方都有网络设备,加上经常需要在外面访问家里的NAS,一直想搭个VPN把这些网络连起来。试过几种方案后,最终选择了WireGuard,主要是因为它性能好,而且相对来说比较好搞。
9+
家里有两个地方都有网络设备,加上经常需要在外面访问家里的 NAS,一直想搭个 VPN 把这些网络连起来。试过几种方案后,最终选择了 WireGuard,主要是因为它性能好,而且相对来说比较好搞。
1010

1111
### 一、我的网络拓扑
1212

1313
我的需求其实很简单:
14-
- 在外面时能访问家里的NAS,下载电影或者取个文件
15-
- 两个家庭网络能互通,这样打印机、存储什么的可以共享
16-
- 手机和笔记本随时能连回家,特别是用公共WiFi的时候
17-
- 不想用第三方VPN服务,数据还是自己掌控比较放心
14+
- 在外面时能访问家里的设备,虚拟机或者 K8s
15+
- 两个家庭网络能互通,在家里时每个设备上不需要单独启动 WireGuard 的客户端就能访问另一家里的设备
16+
- 手机和笔记本随时能连回家,特别是用公共 WiFi 的时候
17+
- 不想用第三方 VPN 服务,数据还是自己掌控比较放心
1818

19-
最后选择了Hub-and-Spoke的架构,就是用一台有公网IP的云服务器做中转。所有设备都连到这台服务器,然后由它来转发流量。虽然看起来单点故障的风险大一些,但对于家庭使用来说够用,也好管理。
19+
最后选择了 Hub-and-Spoke 的架构,就是用一台有公网 IP 的云服务器做中转。所有设备都连到这台服务器,然后由它来转发流量。虽然看起来单点故障的风险大一些,但对于家庭使用来说够用,也好管理。
2020

2121
**网络拓扑架构:**
2222
{{ mermaid(body="
@@ -53,11 +53,11 @@ flowchart TD
5353
OP2 -- LAN Network --> OtherB
5454
") }}
5555

56-
上面这个拓扑图基本就是我现在的网络结构。虽然所有流量都要经过云服务器,但好处是出问题容易排查
56+
上面这个拓扑图基本就是我现在的网络结构。虽然所有流量都要经过云服务器,但是架构也并不复杂
5757

5858
### 二、WireGuard基本原理
5959

60-
WireGuard的核心就是公钥加密,每个设备都有一对密钥。你把自己的公钥给别人,别人的公钥配到自己这里,这样就能相互认证了。跟其他VPN方案比起来,不用搞什么证书授权中心那一套麻烦事。
60+
WireGuard 的核心就是公钥加密,每个设备都有一对密钥。你把自己的公钥给别人,别人的公钥配到自己这里,这样就能相互认证了。跟其他 VPN 方案比起来,不用搞什么证书授权中心那一套麻烦事。
6161

6262
**连接建立过程:**
6363
{{ mermaid(body="
@@ -83,15 +83,15 @@ sequenceDiagram
8383
C->>S: 发送加密数据
8484
") }}
8585

86-
WireGuard用的加密算法比较新,连接建立很快,基本上就是1-2秒的事
86+
WireGuard 用的加密算法比较新,连接建立很快,基本上就是 1-2 秒的事
8787

8888
### 三、实际搭建过程
8989

9090
#### 1. 安装WireGuard
91-
这一步比较简单,Ubuntu上直接`apt install wireguard`OpenWrt路由器上也有现成的包。手机和电脑就下官方App就行。不过要注意的是,有些老版本的OpenWrt可能WireGuard支持不完整,我之前一个老路由器就踩坑了,最后只能刷了新固件
91+
这一步比较简单,Ubuntu 上直接 `apt install wireguard`OpenWrt 路由器上也有现成的包,手机和电脑就下官方 App 就行
9292

9393
#### 2. 密钥对生成
94-
使用以下命令为每个节点生成密钥对
94+
在 ECS 上执行以下命令为每个节点生成密钥对
9595
```bash
9696
# 设置适当权限并生成密钥对(适合批量生成多对密钥)
9797
umask 077
@@ -119,7 +119,7 @@ PublicKey = XYZ789... # 服务器的公钥
119119

120120
需要为每个节点(服务器、路由器、手机等)都生成独立的密钥对,然后交叉配置彼此的公钥。
121121

122-
比较重要的一个配置是`AllowedIPs`,这个参数有两个作用:一是告诉系统哪些IP要走VPN隧道,二是限制对端能使用哪些IP。配置的时候需要注意,比如我给家庭网络A设置了`192.168.151.2/32, 192.168.2.0/24`,意思是这个节点可以用.2这个VPN IP,同时也代表整个192.168.2.0网段
122+
比较重要的一个配置是 `AllowedIPs`,这个参数有两个作用:一是告诉系统哪些 IP 要走 VPN 隧道,二是限制对端能使用哪些 IP。配置的时候需要注意,比如我给家庭网络 A 设置了 `192.168.151.2/32, 192.168.2.0/24`,意思是这个节点可以用 .2 这个 VPN IP,同时也代表整个 192.168.2.0 网段
123123

124124
#### 3. 中心节点配置(ECS服务器)
125125
在云服务器上创建 `/etc/wireguard/wg0.conf`,示例如下:
@@ -171,22 +171,22 @@ ip route show table all | grep wg0
171171

172172
#### 4. 客户端配置详解
173173

174-
**OpenWrt路由器配置**
174+
**OpenWrt 路由器配置**
175175
```ini
176176
[Interface]
177177
PrivateKey = <路由器私钥>
178178
Address = 192.168.151.2/24
179179

180180
[Peer]
181181
PublicKey = <服务器公钥>
182-
Endpoint = Endpoint = <服务器公网IP>:24356
182+
Endpoint = <服务器公网IP>:24356
183183
AllowedIPs = 192.168.151.0/24, 192.168.4.0/24
184184
PersistentKeepalive = 25
185185
```
186186

187187
**移动设备配置模板:**
188188

189-
*MacBook配置 (macOS):*
189+
**MacBook 配置 (macOS)**
190190
```ini
191191
[Interface]
192192
PrivateKey = <MacBook私钥>
@@ -200,21 +200,16 @@ AllowedIPs = 192.168.151.0/24, 192.168.2.0/24, 192.168.4.0/24
200200
PersistentKeepalive = 25
201201
```
202202

203-
*iPhone配置要点 (iOS):*
204-
- 使用WireGuard官方App扫描QR码快速配置
205-
- 按需连接:仅在需要时启动VPN
206-
- 电池优化:合理设置PersistentKeepalive间隔
207-
208-
OpenWrt的配置比较麻烦,需要在Web界面里设置。基本流程是添加WireGuard接口,填好密钥和IP,然后配置防火墙规则。这块我踩了不少坑,特别是路由表的设置,后面会补充一些截图说明。
203+
OpenWrt 的配置比较麻烦,需要在 Web 界面里设置。基本流程是添加 WireGuard 接口,填好密钥和 IP,然后配置防火墙规则。对端设置里需要打开路由允许的 IP,这样才能保证在局域网内的设备可以通过 OpenWrt 访问异地局域网内的设备。
209204

210205
#### 5. 连接验证
211206
配置完成后,验证网络连通性:
212207

213208
```bash
214209
# 在移动设备上测试连接
215-
ping 192.168.151.1 # 测试到ECS服务器
216-
ping 192.168.2.100 # 测试到家庭网络A的NAS
217-
ping 192.168.4.100 # 测试到家庭网络B的设备
210+
ping 192.168.151.1 # 测试到 ECS 服务器
211+
ping 192.168.2.100 # 测试到家庭网络 A 的 NAS
212+
ping 192.168.4.1 # 测试到家庭网络 B 的设备
218213

219214
# 检查路由表
220215
ip route show table all | grep wg0
@@ -226,42 +221,31 @@ wg show
226221
### 四、关键技术细节与排错
227222

228223
#### 1. 连接稳定性优化
229-
由于大多数网络环境都存在NAT超时机制,建议配置`PersistentKeepalive = 25`(单位:秒),定期发送保活包维持连接。
224+
由于大多数网络环境都存在 NAT 超时机制,建议配置 `PersistentKeepalive = 25`(单位:秒),定期发送保活包维持连接。
230225

231226
#### 2. 一些安全注意事项
232-
端口我没用默认的51820,改成了24356,虽然作用不大但至少能避开一些自动扫描。密钥文件权限记得设成600,这个很重要。另外AllowedIPs不要设成0.0.0.0/0除非你真的需要所有流量都走VPN,否则会影响正常上网。
227+
端口我没用默认的 51820,改成了 24356,虽然作用不大但至少能避开一些自动扫描。密钥文件权限记得设成 600,这个很重要。另外 AllowedIPs 不要设成 0.0.0.0/0 除非你真的需要所有流量都走 VPN,否则会影响正常上网。
233228

234229
#### 3. 常见问题排查
235-
- **连接失败**:首先检查密钥是否匹配,确认防火墙规则是否放行UDP流量
236-
- **路由不通**:使用`wg show`命令检查对等体状态,确认各节点的AllowedIPs设置正确
230+
- **连接失败**:首先检查密钥是否匹配,确认防火墙规则是否放行 UDP 流量
231+
- **路由不通**:使用 `wg show` 命令检查对等体状态,确认各节点的 AllowedIPs 设置正确
237232
- **性能问题**:确保中心节点有足够的网络带宽处理所有流量转发
238-
- **DNS解析**如需内网DNS,在客户端配置DNS = 192.168.151.1
233+
- **DNS 解析**如需内网 DNS,在客户端配置 DNS = 192.168.151.1
239234

240235
### 五、方案总结与优化思考
241236

242-
用了几个月下来,感觉WireGuard真的很香。最明显的是手机连接很稳定,从4G切WiFi基本不会断,比之前用过的那些VPN靠谱多了。而且配置好了之后基本不用管,偶尔重启一下服务器也会自动重连。
243-
244-
唯一稍微麻烦的就是OpenWrt那边的配置,需要在界面里点来点去设置路由和防火墙,不过设置好一次就不用动了。如果以后设备多了,可能考虑搞个wg-easy这种Web界面来管理,不过目前这个规模手动管理完全够用。
245-
246-
#### 3. 实际应用场景
247-
248-
**日常使用案例:**
249-
250-
1. **远程办公**:出门在外时通过手机热点连VPN,访问家里NAS上的文件
251-
2. **家庭网络互联**:两个家庭网络可以互相访问,共享网络存储和打印机
252-
3. **安全上网**:在咖啡厅等公共场所使用WiFi时,通过家庭网络出口更安全
253-
4. **智能家居**:外出时可以安全访问家中的路由器管理界面和各种设备
254-
237+
用了几个月下来,感觉 WireGuard 真的很香。最明显的是手机连接很稳定,从 4G 切 WiFi 基本不会断,比之前用过的那些 VPN 靠谱多了。而且配置好了之后基本不用管,偶尔重启一下服务器也会自动重连。
255238

239+
唯一稍微麻烦的就是 OpenWrt 那边的配置,需要在界面里点来点去设置路由和防火墙,不过设置好一次就不用动了。如果以后设备多了,可能考虑搞个 wg-easy 这种 Web 界面来管理,不过目前这个规模手动管理完全够用。
256240

257241
### 六、推荐资源
258242

259243
对于家庭用户,以下资源可能会有帮助:
260244

261245
**简化管理工具:**
262-
- [wg-easy](https://github.com/wg-easy/wg-easy): 提供Web界面,方便添加和管理设备
263-
- WireGuard官方移动端App: iOS和Android都有,界面简洁易用
246+
- [wg-easy](https://github.com/wg-easy/wg-easy): 提供 Web 界面,方便添加和管理设备
247+
- WireGuard 官方移动端 App: iOS 和 Android 都有,界面简洁易用
264248

265249
**参考文档:**
266-
- [WireGuard官方快速入门](https://www.wireguard.com/quickstart/)
267-
- [OpenWrt WireGuard配置](https://openwrt.org/docs/guide-user/services/vpn/wireguard/start)
250+
- [WireGuard 官方快速入门](https://www.wireguard.com/quickstart/)
251+
- [OpenWrt WireGuard 配置](https://openwrt.org/docs/guide-user/services/vpn/wireguard/start)

0 commit comments

Comments
 (0)