@@ -6,17 +6,17 @@ date = 2025-10-13
66issue_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# 设置适当权限并生成密钥对(适合批量生成多对密钥)
9797umask 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]
177177PrivateKey = <路由器私钥>
178178Address = 192.168.151.2/24
179179
180180[Peer]
181181PublicKey = <服务器公钥>
182- Endpoint = Endpoint = <服务器公网IP>:24356
182+ Endpoint = <服务器公网IP>:24356
183183AllowedIPs = 192.168.151.0/24, 192.168.4.0/24
184184PersistentKeepalive = 25
185185```
186186
187187** 移动设备配置模板:**
188188
189- * MacBook配置 (macOS): *
189+ ** MacBook 配置 (macOS): * *
190190``` ini
191191[Interface]
192192PrivateKey = <MacBook私钥>
@@ -200,21 +200,16 @@ AllowedIPs = 192.168.151.0/24, 192.168.2.0/24, 192.168.4.0/24
200200PersistentKeepalive = 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# 检查路由表
220215ip 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