WireGuard VPN 隧道配置
本教程详细讲解如何从零搭建 WireGuard VPN,并在其中实现 Samba 文件共享,让 Windows 与 Android 客户端可在虚拟局域网内访问服务器共享目录
先解释一下 WireGuard 服务与命令详细对照表:
[!IMPORTANT]
本文当中的配置文件是:wg0.conf 命名
systemctl基本操作可以跳过不看
| 命令 / 服务名 | 作用说明 | 适用场景 | 常见输出(或效果) | 注意事项 |
|---|---|---|---|---|
/etc/wireguard/wg0.conf |
WireGuard 的配置文件路径。wg0 是接口名 |
默认配置位置(可以有多个,如 wg0.conf、wg1.conf) | 文件中定义 [Interface] 与 [Peer] 段 |
文件名的前缀决定接口名(wg0.conf → 接口 wg0) |
wg-quick up wg0 |
手动启动 WireGuard 接口 wg0(读取 /etc/wireguard/wg0.conf) |
测试配置是否正确、临时启动 | 输出类似:[#] ip link add wg0 type wireguard、[#] wg setconf wg0 ... |
⚠️ 若 systemd 已经启动过,不要重复执行,否则会提示 “wg0 already exists” |
wg-quick down wg0 |
手动关闭接口 wg0(移除虚拟网卡并撤销 NAT 规则) | 停止连接、修改配置后重启前使用 | 输出:[#] ip link delete dev wg0 |
⚠️ 这会断开所有连接。建议修改配置后执行 down→up |
wg-quick@wg0.service |
systemd 中对应的服务名(由 wg0.conf 自动映射) |
设置为开机自启、统一管理 | 在 systemctl 中可查看状态 |
命名规则固定:wg-quick@配置名.service |
systemctl start wg-quick@wg0 |
启动 wg0 接口并托管为 systemd 服务 | 生产环境下启动 WireGuard | 若成功会输出 “active (exited)” | 等价于 wg-quick up wg0,但更规范 |
systemctl stop wg-quick@wg0 |
停止 wg0 接口 | 想关闭隧道或修改配置 | 状态变为 “inactive (dead)” | 等价于 wg-quick down wg0 |
systemctl restart wg-quick@wg0 |
先 stop 再 start,一键重启 | 修改 wg0.conf 后重新加载 | 重新建立所有连接 | 推荐方式,安全无残留 |
systemctl status wg-quick@wg0 |
查看当前状态 | 排查连接问题 | 显示 active/inactive、错误日志 | 若失败,结合 journalctl -xeu wg-quick@wg0 看详情 |
systemctl enable wg-quick@wg0 |
设置 wg0 开机自启 | 希望系统启动后自动连线 | 创建符号链接:multi-user.target.wants → wg-quick@.service |
常配合 --now 同时启动 |
systemctl disable wg-quick@wg0 |
取消开机自启 | 临时关闭自动连接 | 删除符号链接 | 不影响当前连接,只影响下次开机 |
systemctl enable --now wg-quick@wg0 |
开机自启 + 立即启动 | 一步完成部署 | 启动成功后 active | 最常用组合命令 |
systemctl is-enabled wg-quick@wg0 |
检查是否启用了开机自启 | 验证配置 | 输出 enabled 或 disabled |
- |
sudo wg |
查看 WireGuard 实时状态 | 检查握手、流量、Peer 状态 | 显示每个 Peer 的公钥、传输量、最近握手 | 不修改任何配置,只读 |
sudo wg show all |
显示所有接口状态 | 多隧道场景(wg0、wg1等) | 多个接口的连接详情 | - |
ip addr show wg0 |
查看 wg0 网络接口 | 确认是否成功创建虚拟网卡 | 显示 wg0 的 IP(如 10.10.10.1/24) | 若无此接口说明没成功 up |
sudo ip link del wg0 |
强制删除残留接口 | “wg0 already exists” 报错时 | 删除接口无输出 | 慎用,仅当隧道异常卡死时使用 |
journalctl -xeu wg-quick@wg0 |
查看 systemd 日志 | 启动失败排错 | 显示详细错误(网卡名、iptables、权限) | 配置语法错误或网卡名错可在此发现 |
一、服务器环境准备
[!IMPORTANT]
所有命令均是在root用户下执行的
1. 安装 WireGuard
1 | |
2. 生成密钥对
1 | |
1 | |
1 | |
查看密钥:
1 | |
[!IMPORTANT]
假如服务器的密钥为:
公钥:222222222
私钥:111111111
3.开放服务器安全组规则(如果不需要samba可跳过)
| 端口号 | 协议 | 用途说明 | 方向 | 备注 |
|---|---|---|---|---|
| 51820 | UDP | WireGuard VPN 隧道通信端口 | 入站 / 出站 | 必须在安全组中开放 UDP 51820 |
| 137 | UDP | Samba NetBIOS 名称解析 | 入站 / 出站 | Windows 共享依赖 |
| 138 | UDP | Samba NetBIOS 数据报服务 | 入站 / 出站 | 旧版 SMB 通信使用 |
| 139 | TCP | Samba NetBIOS 会话服务 (SMB over NetBIOS) | 入站 / 出站 | SMB1/SMB2 文件共享使用 |
| 445 | TCP | Samba 直接文件共享 (SMB over TCP) | 入站 / 出站 | 新版 Windows 文件共享核心端口 |

4. 编辑服务器配置
1 | |
1 | |
5. 保持 ip_forward + NAT 恒定(永久启用 IP 转发功能)
1 | |
1 | |
6. 启动 WireGuard
1 | |
运行状态:
1 | |
确认监听端口:
1 | |
二、客户端配置
1.Windows 客户端
安装 WireGuard 官方客户端
1 | |
在客户端点击「添加隧道」→「添加空白隧道」→ 自动生成密钥
示例
1 | |

在服务器添加 Windows客户端 Peer
1 | |
1 | |
保存并重启服务:
1 | |
2.Android 客户端
安装应用:WireGuard(Play 商店 / F-Droid)
打开软件 → 点击加号 → 手动创建

在服务器添加安卓客户端 Peer
1 | |
1 | |
1 | |
CIDR 地址与 WireGuard 配置总结表:
| 类型 | 示例 | 说明 |
|---|---|---|
| 网络范围 | 10.10.10.0/24 |
表示整个子网(包含 .0 到 .255 的所有地址) |
| 网络号(Network ID) | 10.10.10.0 |
网络的起点,不能分配给设备 |
| 服务器地址 | 10.10.10.1 |
可分配地址,通常用作 VPN 服务端 |
| 客户端地址 | 10.10.10.2、10.10.10.3 |
可分配给客户端设备 |
| 广播地址(Broadcast) | 10.10.10.255 |
网络的广播目标,不能分配给设备 |
CIDR 关键点解释:
| 概念 | 含义 | 示例 | 说明 |
|---|---|---|---|
/24 |
掩码 255.255.255.0 |
10.10.10.0/24 |
同一网段最多 254 个主机 |
/32 |
单一 IP 地址 | 10.10.10.2/32 |
表示“仅此一台主机” |
| 网络号对齐规则 | 网络号必须与掩码对齐 | ✅ 10.10.10.0/24 ❌ 10.10.10.1/24 |
.1/24 无效,因为 .1 不是合法的网络号 |
10.10.10.1/24 错误原因 |
表示“以 .1 为网络号的网段”,违反对齐规则 |
会导致 WireGuard 报错(Android 最严格) |
WireGuard 正确配置示例:
| 角色 | 段落 | 正确配置 | 说明 |
|---|---|---|---|
| 服务器 | [Interface] |
Address = 10.10.10.1/24 |
服务器在该子网中 |
| 服务器 | [Peer] (客户端) |
AllowedIPs = 10.10.10.2/32 |
仅允许该客户端地址 |
| 客户端 | [Interface] |
Address = 10.10.10.2/24 |
客户端属于同一子网 |
| 客户端 | [Peer] (服务器) |
AllowedIPs = 10.10.10.0/24 ✅ |
可访问整个 VPN 子网,包括服务器 10.10.10.1 |
总结:
10.10.10.0/24是整个 VPN 网段
服务器10.10.10.1只是其中的一台主机
因此凡是使用/24时,网络号必须以.0结尾
三、Samba 文件共享配置(不需要可跳过)
1. 安装 Samba
1 | |
2. 配置用户
[!IMPORTANT]
huishao用户名,替换自己的用户
1 | |
1 | |
3. 编辑配置文件
1 | |
[!IMPORTANT]
以下配置不固定,可随机设置
1 | |
保存并测试:
1 | |
四、客户端访问共享
1.Windows
在资源管理器中输入:
1 | |
2.Android
安装「X-plore 文件管理器」或「Solid Explorer」
选择 → 网络 → 添加 SMB →
主机:10.10.10.1
WireGuard VPN 隧道配置
https://huishao.fun/WireGuard配置/