WireGuard
核心理念:为什么选择 WireGuard?
- 现代与高效: 使用最新的加密技术,代码库非常精简,这意味着更少的安全漏洞和更高的运行效率。
- 速度极快: 其内核级别的实现使其网络吞吐量远超 OpenVPN 等传统方案。
- 配置简单: 相比 OpenVPN 复杂的证书体系,WireGuard 的公钥/私钥交换模式非常直观和简洁。
- 省电: 对移动设备非常友好,连接和断开几乎是瞬时的,且耗电量极低。
第一部分:服务器基础准备 (Prerequisites)
在敲下任何命令之前,请确保以下准备工作万无一失。90%的连接失败都源于准备工作的疏忽。
一台拥有公网IP的服务器 (VPS)
- 操作系统推荐: Ubuntu 22.04 / 20.04 或 Debian 11 / 12。这些是最新且支持最广泛的系统,本教程将以此为例。
- 拥有 root 权限: 您需要能以
root
用户身份或使用sudo
命令执行操作。
SSH 客户端
- Windows: PuTTY, MobaXterm, 或 Windows Terminal。
- macOS / Linux: 自带的“终端” (Terminal)。
【至关重要】检查并配置云服务商防火墙
这是新手最容易忽略的一步! 您的服务器除了自身的防火墙外,通常还在云服务商层面有一个“安全组”(Security Group) 或“防火墙规则”。
您必须登录到您的云服务商(如阿里云、腾讯云、Google Cloud, AWS, Vultr 等)的管理控制台。
找到您服务器对应的防火墙或安全组设置,添加入站规则(Inbound Rule),放行 WireGuard 准备使用的端口。
WireGuard
默认使用 UDP 协议,端口为 51820
。因此,您需要添加一条规则:
- 类型/协议:
UDP
- 端口范围:
51820
- 源/Source:
0.0.0.0/0
(表示允许任何IP地址访问该端口)
- 类型/协议:
如果您打算使用自定义端口,请在此处放行您自定义的 UDP 端口。
第二部分:连接并准备服务器 (Server Preparation)
步骤 2.1: 通过 SSH 连接服务器
打开您的终端,替换 your_server_ip
为您服务器的公网IP地址。
ssh root@your_server_ip
根据提示输入 yes
并提供您的服务器密码。
步骤 2.2: 切换到 root 用户 (推荐)
为了避免在每条命令前都输入 sudo
,可以直接切换到 root 用户,让后续操作更流畅。
sudo -i
执行后,您会看到命令提示符从 $
变为 #
,表示您现在是 root 用户。
步骤 2.3: 更新系统软件包
这是一个确保系统安全和软件库最新的好习惯。
apt update && apt upgrade -y
apt update
: 从软件源更新可用软件包列表。apt upgrade -y
: 将所有已安装的软件包升级到最新版本,-y
表示自动确认。
第三部分:核心安装 - 运行一键脚本
我们将使用 Nyr 的脚本,它经过了大量测试,非常稳定可靠。
步骤 3.1: 下载安装脚本
使用 wget
命令从网络上下载脚本文件,并使用 -O
参数将其重命名为 wireguard-install.sh
以方便识别。
wget https://git.io/wireguard -O wireguard-install.sh
步骤 3.2: 赋予脚本执行权限
下载下来的脚本文件默认可能没有执行权限,我们需要手动添加。
chmod +x wireguard-install.sh
chmod +x
: 为文件添加可执行权限。
步骤 3.3: 运行脚本并理解配置选项
现在,运行脚本开始全自动安装流程。
bash wireguard-install.sh
脚本会引导您完成配置,以下是每个选项的详细解释:
Public IPv4 or IPv6 address:
- 解释: 这是客户端用来连接您服务器的公网地址。
- 操作: 脚本会自动检测,通常直接按 回车 即可。
Public network interface:
- 解释: 这是您服务器上负责与公网通信的网卡名称,通常是
eth0
或ens3
。 - 操作: 脚本会自动检测,直接按 回车。
- 解释: 这是您服务器上负责与公网通信的网卡名称,通常是
WireGuard interface name:
- 解释: WireGuard 会创建一个虚拟网卡,这是它的名字。
- 操作: 默认
wg0
即可,直接按 回车。
Server's WireGuard IPv4:
和Server's WireGuard IPv6:
- 解释: 这是VPN内部网络的IP地址段。服务器和所有客户端将在这个虚拟局域网内通信。
- 操作: 除非您有特殊的网络规划,否则直接按 回车 使用默认值 (
10.66.66.1/24
)。
Server's port:
- 解释: WireGuard 服务监听的 UDP 端口。
- 操作: 默认
51820
。如果您在第一步的安全组中放行的是其他端口,请在这里输入对应的端口号,然后按 回车。
DNS resolver for the clients:
- 解释: 当您连接VPN后,您的设备使用哪个DNS服务器来解析域名。
- 选项: 推荐
Cloudflare (1.1.1.1)
或Google (8.8.8.8)
,输入1
或2
后按 回车。
Enter a name for the first client:
- 解释: 为您的第一个连接设备(如手机、电脑)命名,方便管理。
- 操作: 输入一个有意义的名字,如
my-laptop
或iphone15
,然后按 回车。
配置完成后,脚本会自动安装所有依赖、生成密钥、创建配置文件、设置防火墙转发规则并启动服务。整个过程通常在一分钟内完成。
第四部分:获取并理解客户端配置
安装成功后,终端会显示 “It is done!”,并为您生成了客户端配置文件。
步骤 4.1: 获取配置的两种方式
二维码 (手机端最方便)
- 脚本会自动在终端里显示一个二维码。打开手机上的 WireGuard App,直接扫描此二维码即可秒速完成配置导入。
配置文件 (电脑端使用)
配置文件被保存在
/root/
目录下,以您之前命名的客户端名命名,后缀为.conf
(例如/root/my-laptop.conf
)。使用
cat
命令查看文件内容:
Bash
cat /root/my-laptop.conf
将终端显示的全部内容完整地复制下来,在您的电脑上创建一个纯文本文档,将内容粘贴进去,然后将文件保存为
my-laptop.conf
。
步骤 4.2: 【深入理解】解构 .conf
配置文件
让我们看看这个 .conf
文件里到底写了什么:
Ini, TOML
[Interface]
# 客户端的配置
PrivateKey = cLIeNtpR1vAtek3y...= # 客户端的私钥,绝对保密
Address = 10.66.66.2/32 # 客户端在VPN网络中的IP地址
DNS = 1.1.1.1 # 此客户端连接后使用的DNS服务器
[Peer]
# 服务器的配置
PublicKey = sERv3rpUbL1cK3y...= # 服务器的公钥,用于验证服务器身份
PresharedKey = pReShAr3dK3y...= # (可选) 预共享密钥,增加一层安全性
Endpoint = your_server_ip:51820 # 服务器的公网IP和端口,客户端连接的目标
AllowedIPs = 0.0.0.0/0, ::/0 # 关键配置!这告诉客户端,所有流量(0.0.0.0/0代表所有IPv4,::/0代表所有IPv6)都应该通过VPN隧道发送。
第五部分:各平台客户端设置
- 下载客户端: 访问 WireGuard 官网安装页面,为您的 Windows, macOS, Android, iOS, 或 Linux 下载官方客户端。
- 导入配置:
- Android / iOS: 打开 App,点击右下角的
+
按钮,选择从二维码扫描
(Scan from QR code),对准您服务器终端上显示的二维码即可。 - Windows / macOS: 打开客户端软件,点击
从文件导入隧道
(Import tunnel(s) from file…),然后选择您刚刚保存的.conf
文件。
- Android / iOS: 打开 App,点击右下角的
- 连接: 导入成功后,列表中会出现一个新的连接。点击旁边的开关按钮,它会变为绿色,表示您已成功连接到自己的VPN!此时可以打开浏览器访问 ip.sb 或 whatismyip.com,看看显示的IP是否已变为您服务器的IP。
第六部分:后续管理与问题排查
日常管理
- 添加新用户/设备: 只需再次运行脚本
bash wireguard-install.sh
,在菜单中选择1) Add a new client
即可。 - 删除用户: 再次运行脚本,选择
2) Revoke an existing client
。 - 卸载 WireGuard: 再次运行脚本,选择
3) Uninstall WireGuard
。
问题排查 (Troubleshooting)
如果连接不上,请按以下顺序逐步检查:
第一关:云服务商安全组
- 再次确认您已在云服务商的网页控制台放行了对应的UDP端口。这是最常见的问题。
第二关:服务器服务状态
登录服务器,检查 WireGuard 服务是否正常运行。
Bash
systemctl status wg-quick@wg0
正常状态会显示
active (running)
,绿色字样。异常状态会显示
inactive (dead)
或failed
。可尝试手动启动:systemctl start wg-quick@wg0
。
第三关:服务器端口监听
检查服务器是否真的在监听您设定的端口 (以51820为例)。
Bash
ss -nulp | grep 51820
正常情况下,应该会看到一行包含
udp
和*:51820
的输出。如果没有任何输出,说明 WireGuard 服务没有成功启动或被防火墙阻止。
第四关:客户端配置
- 确认从服务器复制的
.conf
文件内容完全、无误,没有多余的空格或缺失的字符。 - 确认客户端的
Endpoint
地址是您服务器的正确公网IP和端口。
- 确认从服务器复制的
V2ray+X-UI
第一部分:在服务器上搭建 V2Ray 服务 (使用X-UI面板)
步骤 1: 准备工作
- 确保您已通过SSH登录到您的服务器,并最好已切换到
root
用户 (sudo -i
)。 - 确保您的服务器系统是较新的 Linux 发行版,如 Ubuntu 20.04+ 或 Debian 10+。
- 【重要】 确保您的云服务商安全组/防火墙已放行您计划使用的端口(例如
443
端口,因为我们要伪装成HTTPS流量)。
步骤 2: 一键安装 X-UI 管理面板
我们将使用一个广为流传的脚本来安装X-UI。复制以下命令到您的服务器终端中并执行:
bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)
脚本会自动下载并安装。安装过程中,它会询问您一些设置:
- 设置登录用户名: 默认为
admin
,可以直接回车。 - 设置登录密码: 默认为
admin
,可以直接回车。 - 设置面板端口: 默认是一个随机端口,请记下这个端口号,例如
54321
。
安装完成后,脚本会提示您X-UI已启动。
步骤 3: 登录并配置 X-UI 面板
访问面板: 在您的浏览器中输入
http://your_server_ip:面板端口
(例如http://123.123.123.123:54321
)。登录: 使用您刚刚设置的用户名和密码 (默认为
admin
/admin
) 登录。添加入站规则 (创建代理)
:
- 点击左侧菜单的 “入站列表”。
- 点击绿色的 “+ 添加入站” 按钮。
步骤 4: 配置 VLESS + REALITY 协议
在弹出的配置窗口中,填写以下关键信息:
备注: 给这个代理起个名字,例如
My-HK-Proxy
。协议 (Protocol): 选择
vless
。监听IP: 留空即可。
端口: 推荐使用
443
(HTTPS的默认端口,伪装效果最好)。传输 (transport): 选择
tcp
。流控 (flow): 选择
xtls-rprx-reality
。这是启用REALITY的关键!SNI (Server Name Indication): 留空。
Dest
: 填写一个
真实存在、且在您当地可以访问的国外知名网站域名和端口
。这是REALITY协议的核心,用于“借用”该网站的TLS证书特征。推荐使用:
www.microsoft.com:443
www.amazon.com:443
www.google.com:443
Server Names: 填写与
Dest
中相同的域名,例如www.microsoft.com
。
填写完毕后,点击 “添加” 按钮。
步骤 5: 获取连接信息
回到 “入站列表”,您可以看到刚刚创建的代理。
- 点击 “操作” -> “二维码”。这里会显示一个二维码和一个
vless://...
开头的URL链接。 - 这个二维码和URL就是您客户端连接所需要的一切信息,请妥善保管。
至此,服务器端的配置已全部完成!
第二部分:在您的设备上进行连接
现在,您可以选择使用 Clash 客户端或 V2Ray 客户端来连接。
方案A: 使用 Clash 客户端 (推荐,功能强大)
Clash 的核心是配置文件(通常是 .yaml
格式)。我们需要将刚刚生成的 vless://
链接转换为 Clash 能识别的格式。
1. 下载Clash客户端
- Windows: Clash for Windows (选择最新的
.exe
安装包) - macOS: ClashX (选择最新的
.dmg
文件) - Android: Clash for Android (选择最新的
.apk
文件) - iOS: 由于App Store政策,请自行搜索
Shadowrocket
(小火箭),Quantumult X
或Stash
(Clash for iOS),这些都是付费软件,但都支持Clash配置。
2. 获取Clash配置文件 (关键步骤)
对于自建的单个节点,最简单的方法是使用在线订阅转换工具。
在浏览器中搜索 “Clash 订阅转换” 或 “Subscription Converter”。
找到一个看起来可靠的网站 (例如
subconverter.url
)。操作流程
:
- 将您在X-UI面板中复制的
vless://...
链接粘贴到输入框。 - 在输出选项中,选择
Clash
或ClashR
。 - 点击 “生成订阅链接” 或 “下载配置文件”。
- 生成订阅链接: 你会得到一个URL,可以直接用于Clash。
- 下载配置文件: 你会得到一个
config.yaml
文件。
- 将您在X-UI面板中复制的
安全提示: 在线转换工具很方便,但请选择信誉好的服务,避免您的服务器信息泄露。
3. 在Clash客户端中配置
以 Clash for Windows 为例:
打开Clash for Windows。
进入左侧的 Profiles (配置) 页面。
如果得到的是订阅链接: 在上方的输入框中粘贴您的订阅链接,然后点击 Download (下载)。
如果得到的是 .yaml 文件: 直接将该文件拖拽到Clash的窗口中。
下载成功后,Clash会提示并选中新的配置文件。
进入左侧的
Proxies (代理)
页面。这里是Clash的核心。
模式选择
:
- Global (全局): 所有流量都走代理。
- Rule (规则): (推荐) 根据配置文件内的规则,自动分流(例如国内网站直连,国外网站走代理)。
- Direct (直连): 所有流量都不走代理。
选择 Rule 模式,然后在下方的策略组(如“PROXY”或“境外流量”)中,选择我们刚刚添加的
My-HK-Proxy
节点。
回到左侧的 General (常规) 页面,打开 System Proxy (系统代理) 的开关。
开关变成绿色后,您的电脑就已经通过Clash连接到您的服务器了!可以打开浏览器,访问 google.com
测试一下。
方案B: 使用 V2Ray 客户端 (简单直接)
如果您不需要Clash复杂的规则分流,只想让所有流量都走代理,可以使用V2Ray的原生客户端。
以 V2RayN for Windows 为例:
- 从GitHub下载
v2rayN-Core.zip
并解压。 - 运行
v2rayN.exe
。 - 在服务器的X-UI面板中,复制
vless://...
链接。 - 在V2RayN主界面,点击顶部菜单的 “服务器” -> “从剪贴板导入URL”。
- 此时您的服务器节点已经添加到了列表中。
- 在电脑右下角的系统托盘找到V2RayN的图标,右键点击它。
- 在 “系统代理” 菜单中,选择 “自动配置系统代理”。
- 在 “路由” 菜单中,选择 “全局” (Global) 或 “绕过大陆” (Bypass mainland)。
完成设置后,您的电脑就通过V2RayN连接成功了。
总结
工具 | 角色 | 优点 | 缺点 | 适用人群 |
---|---|---|---|---|
V2Ray/VLESS | 服务器技术/协议 | 性能高、伪装性强、安全 | 手动配置复杂 | 必须,作为代理服务的基础 |
X-UI 面板 | 服务器管理工具 | 图形化界面、操作简单、一目了然 | 功能相对专业脚本较少 | 强烈推荐给不熟悉命令行的用户 |
Clash 客户端 | 客户端软件 | 规则分流极其强大、UI美观、生态好 | 配置相对复杂、需要理解订阅概念 | 追求智能分流、精细化管理的高级用户 |
V2RayN/NG 客户端 | 客户端软件 | 简单直接、专注于连接、资源占用小 | 功能单一,分流能力较弱 | 只需要简单全局代理的用户 |