WireGuard

核心理念:为什么选择 WireGuard?

  • 现代与高效: 使用最新的加密技术,代码库非常精简,这意味着更少的安全漏洞和更高的运行效率。
  • 速度极快: 其内核级别的实现使其网络吞吐量远超 OpenVPN 等传统方案。
  • 配置简单: 相比 OpenVPN 复杂的证书体系,WireGuard 的公钥/私钥交换模式非常直观和简洁。
  • 省电: 对移动设备非常友好,连接和断开几乎是瞬时的,且耗电量极低。

第一部分:服务器基础准备 (Prerequisites)

在敲下任何命令之前,请确保以下准备工作万无一失。90%的连接失败都源于准备工作的疏忽

  1. 一台拥有公网IP的服务器 (VPS)

    • 操作系统推荐: Ubuntu 22.04 / 20.04Debian 11 / 12。这些是最新且支持最广泛的系统,本教程将以此为例。
    • 拥有 root 权限: 您需要能以 root 用户身份或使用 sudo 命令执行操作。
  2. SSH 客户端

    • Windows: PuTTY, MobaXterm, 或 Windows Terminal。
    • macOS / Linux: 自带的“终端” (Terminal)。
  3. 【至关重要】检查并配置云服务商防火墙

    • 这是新手最容易忽略的一步! 您的服务器除了自身的防火墙外,通常还在云服务商层面有一个“安全组”(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:
    • 解释: 这是您服务器上负责与公网通信的网卡名称,通常是 eth0ens3
    • 操作: 脚本会自动检测,直接按 回车
  • 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),输入 12 后按 回车
  • Enter a name for the first client:
    • 解释: 为您的第一个连接设备(如手机、电脑)命名,方便管理。
    • 操作: 输入一个有意义的名字,如 my-laptopiphone15,然后按 回车

配置完成后,脚本会自动安装所有依赖、生成密钥、创建配置文件、设置防火墙转发规则并启动服务。整个过程通常在一分钟内完成。


第四部分:获取并理解客户端配置

安装成功后,终端会显示 “It is done!”,并为您生成了客户端配置文件。

步骤 4.1: 获取配置的两种方式

  1. 二维码 (手机端最方便)

    • 脚本会自动在终端里显示一个二维码。打开手机上的 WireGuard App,直接扫描此二维码即可秒速完成配置导入。
  2. 配置文件 (电脑端使用)

    • 配置文件被保存在 /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隧道发送。

第五部分:各平台客户端设置

  1. 下载客户端: 访问 WireGuard 官网安装页面,为您的 Windows, macOS, Android, iOS, 或 Linux 下载官方客户端。
  2. 导入配置:
    • Android / iOS: 打开 App,点击右下角的 + 按钮,选择 从二维码扫描 (Scan from QR code),对准您服务器终端上显示的二维码即可。
    • Windows / macOS: 打开客户端软件,点击 从文件导入隧道 (Import tunnel(s) from file…),然后选择您刚刚保存的 .conf 文件。
  3. 连接: 导入成功后,列表中会出现一个新的连接。点击旁边的开关按钮,它会变为绿色,表示您已成功连接到自己的VPN!此时可以打开浏览器访问 ip.sbwhatismyip.com,看看显示的IP是否已变为您服务器的IP。

第六部分:后续管理与问题排查

日常管理

  • 添加新用户/设备: 只需再次运行脚本 bash wireguard-install.sh,在菜单中选择 1) Add a new client 即可。
  • 删除用户: 再次运行脚本,选择 2) Revoke an existing client
  • 卸载 WireGuard: 再次运行脚本,选择 3) Uninstall WireGuard

问题排查 (Troubleshooting)

如果连接不上,请按以下顺序逐步检查:

  1. 第一关:云服务商安全组

    • 再次确认您已在云服务商的网页控制台放行了对应的UDP端口。这是最常见的问题。
  2. 第二关:服务器服务状态

    • 登录服务器,检查 WireGuard 服务是否正常运行。

      Bash

      systemctl status wg-quick@wg0
    • 正常状态会显示 active (running),绿色字样。

    • 异常状态会显示 inactive (dead)failed。可尝试手动启动:systemctl start wg-quick@wg0

  3. 第三关:服务器端口监听

    • 检查服务器是否真的在监听您设定的端口 (以51820为例)。

      Bash

      ss -nulp | grep 51820
    • 正常情况下,应该会看到一行包含 udp*:51820 的输出。

    • 如果没有任何输出,说明 WireGuard 服务没有成功启动或被防火墙阻止。

  4. 第四关:客户端配置

    • 确认从服务器复制的 .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 面板

  1. 访问面板: 在您的浏览器中输入 http://your_server_ip:面板端口 (例如 http://123.123.123.123:54321)。

  2. 登录: 使用您刚刚设置的用户名和密码 (默认为 admin/admin) 登录。

  3. 添加入站规则 (创建代理)

    :

    • 点击左侧菜单的 “入站列表”。
    • 点击绿色的 “+ 添加入站” 按钮。

步骤 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 XStash (Clash for iOS),这些都是付费软件,但都支持Clash配置。

2. 获取Clash配置文件 (关键步骤)

对于自建的单个节点,最简单的方法是使用在线订阅转换工具

  • 在浏览器中搜索 “Clash 订阅转换” 或 “Subscription Converter”。

  • 找到一个看起来可靠的网站 (例如 subconverter.url)。

  • 操作流程

    :

    1. 将您在X-UI面板中复制的 vless://... 链接粘贴到输入框。
    2. 在输出选项中,选择 ClashClashR
    3. 点击 “生成订阅链接” 或 “下载配置文件”。
    • 生成订阅链接: 你会得到一个URL,可以直接用于Clash。
    • 下载配置文件: 你会得到一个 config.yaml 文件。

安全提示: 在线转换工具很方便,但请选择信誉好的服务,避免您的服务器信息泄露。

3. 在Clash客户端中配置

Clash for Windows 为例:

  1. 打开Clash for Windows。

  2. 进入左侧的 Profiles (配置) 页面。

  3. 如果得到的是订阅链接: 在上方的输入框中粘贴您的订阅链接,然后点击 Download (下载)

  4. 如果得到的是 .yaml 文件: 直接将该文件拖拽到Clash的窗口中。

  5. 下载成功后,Clash会提示并选中新的配置文件。

  6. 进入左侧的

    Proxies (代理)

    页面。这里是Clash的核心。

    • 模式选择

      :

      • Global (全局): 所有流量都走代理。
      • Rule (规则): (推荐) 根据配置文件内的规则,自动分流(例如国内网站直连,国外网站走代理)。
      • Direct (直连): 所有流量都不走代理。
    • 选择 Rule 模式,然后在下方的策略组(如“PROXY”或“境外流量”)中,选择我们刚刚添加的 My-HK-Proxy 节点。

  7. 回到左侧的 General (常规) 页面,打开 System Proxy (系统代理) 的开关。

开关变成绿色后,您的电脑就已经通过Clash连接到您的服务器了!可以打开浏览器,访问 google.com 测试一下。

方案B: 使用 V2Ray 客户端 (简单直接)

如果您不需要Clash复杂的规则分流,只想让所有流量都走代理,可以使用V2Ray的原生客户端。

V2RayN for Windows 为例:

  1. 从GitHub下载 v2rayN-Core.zip 并解压。
  2. 运行 v2rayN.exe
  3. 在服务器的X-UI面板中,复制 vless://... 链接。
  4. 在V2RayN主界面,点击顶部菜单的 “服务器” -> “从剪贴板导入URL”。
  5. 此时您的服务器节点已经添加到了列表中。
  6. 在电脑右下角的系统托盘找到V2RayN的图标,右键点击它。
  7. 在 “系统代理” 菜单中,选择 “自动配置系统代理”。
  8. 在 “路由” 菜单中,选择 “全局” (Global) 或 “绕过大陆” (Bypass mainland)。

完成设置后,您的电脑就通过V2RayN连接成功了。

总结

工具 角色 优点 缺点 适用人群
V2Ray/VLESS 服务器技术/协议 性能高、伪装性强、安全 手动配置复杂 必须,作为代理服务的基础
X-UI 面板 服务器管理工具 图形化界面、操作简单、一目了然 功能相对专业脚本较少 强烈推荐给不熟悉命令行的用户
Clash 客户端 客户端软件 规则分流极其强大、UI美观、生态好 配置相对复杂、需要理解订阅概念 追求智能分流、精细化管理的高级用户
V2RayN/NG 客户端 客户端软件 简单直接、专注于连接、资源占用小 功能单一,分流能力较弱 只需要简单全局代理的用户