status
date
slug
type
summary
tags
category
password
icon
你是否遇到过这样的场景:在咖啡厅想访问家里的 NAS 存取文件?或者作为开发者,需要在异地调试公司内网的服务器?WireGuard则可以成为你安全又优雅地进行异地组网方案。
WireGuard 是被直接合并入 Linux 内核的新一代 VPN 协议,它以极简的代码、极高的性能和秒连的体验著称。
本文将带你一步步在 Ubuntu 22.04 上搭建 WireGuard 服务端,配置客户端,并通过脚本实现自动化管理,最后完成多地局域网互联。
WireGuard 组网拓扑示意图
WireGuard 组网拓扑示意图
 

一、 服务端部署

首先,我们需要一台拥有公网 IP 的服务器(VPS)作为中转枢纽。

1. 安装与密钥生成

更新软件源并安装 WireGuard:
WireGuard 的安全机制基于公钥私钥
生成服务端的密钥对:

2. 服务端核心配置

我们需要规划一个虚拟网段,例如 10.8.0.0/24。服务端本身占用 10.8.0.1
创建并编辑配置文件:
注: PostUp 和 PostDown 中的命令非常关键。它们指示系统在 WireGuard 启动和关闭时,自动配置 iptables 防火墙规则,允许流量转发(NAT),从而让客户端能通过服务器上网。

3. 开启内核转发

为了让服务器能转发流量,必须开启系统的 IP 转发功能:

4. 启动服务

启动 WireGuard 并设置开机自启:
请注意,服务名称 `wg-quick@wg0` 对应配置文件 `/etc/wireguard/wg0.conf`。你也可以创建 `prod.conf` 并通过 `wg-quick@prod` 启动,从而在一台机器上管理多个 VPN 通道。
切记: 在云服务商的后台(AWS/阿里云/腾讯云等)放行你设置的UDP监听端口,如我们的例子中 UDP 端口是 51821

二、 客户端接入

现在我们需要让一台设备(比如你的笔记本)连上这个服务端。

1. 手动创建流程

如果你想理解原理,可以手动走一遍流程。
步骤 A:客户端生成密钥
步骤 B:配置客户端 (wg0.conf或在软件中直接进行编辑)
步骤 C:服务端添加客户端公钥
回到服务端执行:

2. 效率进阶:自动化脚本管理

手动配置容易出错且繁琐。这里提供两个 Shell 脚本,分别用于一键添加一键删除节点。

脚本一:创建节点 (create_client.sh)

此脚本会自动分配 IP、生成配置,甚至可以生成手机端所需的二维码(需安装 qrencode)。请修改脚本头部和客户端的配置区以适配你的服务器。
记得给脚本加上可执行权限(chmod +x xxx.sh)

脚本二:删除节点 (remove_client.sh)

此脚本会清理运行中的接口、配置文件以及本地的密钥备份,保持环境整洁。

三、 高级篇:路由转发与多地组网

这是 WireGuard 最强大的功能之一。我们不仅要连接单个设备,还要让不同地点的整个局域网互通(Site-to-Site VPN)。
例如:将办公室网络 (192.168.2.x) 和家庭网络 (192.168.1.x) 通过公网 VPS (10.100.0.1) 连在一起。
notion image

1. 核心概念:AllowedIPs

理解 AllowedIPs 是搞定路由转发的关键:
  • 在客户端(发起端):它的意思是“我想去哪里?”。如果填入 192.168.1.0/24,那么访问家庭局域网的流量就会被送入 VPN 隧道。
  • 在服务端:它的意思是“谁可以使用这个 IP?”以及“去往这个网段的包该给谁?”。如果你告诉服务端 Peer A 的 AllowedIPs 是 192.168.1.0/24,那么服务端收到发往 192.168.1.x 的数据包时,就知道要转发给 Peer A。

2. 准备工作清单

在开始之前,请确保完成以下 Checklist:
所有 WireGuard 服务器/网关均已开启 net.ipv4.ip_forward=1
服务器 wg0.conf 中配置了 iptables NAT 规则 (MASQUERADE)。
确保不同地点的局域网网段不冲突(例如家里用 192.168.1.x,公司用 192.168.2.x)。

3. OpenWrt 客户端设置(作为家庭网关)

在家庭的 OpenWrt 路由器上配置 WireGuard:
  1. 创建接口:添加 WireGuard 接口,填入私钥和 VPS 的公钥。
  1. 配置 AllowedIPs:填入 10.100.0.0/24 (VPN网段) 和 192.168.2.0/24 (你需要访问的公司网段)。
  1. 开启防火墙转发
      • 在防火墙设置中,将 WireGuard 接口加入一个新的区域(如 vpn_zone)。
      • 允许 lanvpn_zone 的转发。
      • 重要:开启 IP 动态伪装(Masquerading)。
  1. 系统内核转发
OpenWrt 后台防火墙区域设置截图
OpenWrt 后台防火墙区域设置截图

4. 完整配置示例

假设网络拓扑如下:
  • 中转服务器 (VPS): 虚拟IP 10.100.0.1
  • 家 (Home): 虚拟IP 10.100.0.2,局域网 192.168.1.0/24
  • 公司 (Office): 虚拟IP 10.100.0.3,局域网 192.168.2.0/24

A. 中转服务器 (VPS) 配置

B. 家 (Home) 配置

C. 公司 (Office) 配置

配置完成后,当你身在公司,Ping 192.168.1.x 即可直通家里的设备,反之亦然。

希望这篇指南能帮你顺利搭建起自己的安全网络!
附wireguard常用命令:
参考资料:
 
榨干了两天Claude额度,我用Python+FFmpeg给团队写了个视频压制与质检工具——小雪工具箱漫画媒体管理器Komga——三分钟部署一个docker(1)
Loading...