WireGuard VPN 服务器一键安装脚本详细部署教程

本教程将基于 hwdsl2/wireguard-install 项目,详细指导您在 Linux 服务器上快速搭建 WireGuard VPN 服务。

1. 准备工作

  • 一台 Linux 服务器:可以是云服务器、虚拟专用服务器(VPS)或专用服务器。脚本支持 Ubuntu、Debian、AlmaLinux、Rocky Linux、CentOS、Fedora、openSUSE 和 Raspberry Pi OS 等主流发行版。
  • Root 权限:您需要有 sudo 权限的用户来执行安装命令。
  • 防火墙设置:如果您的服务器有外部防火墙(例如 AWS EC2 的安全组或 GCE 的防火墙规则),需要手动开放 WireGuard 使用的 UDP 端口(默认为 51820)。

2. 下载脚本

首先,通过 SSH 连接到您的服务器,使用 wgetcurl 下载安装脚本。

1
2
3
4
5
# 使用 wget 下载
wget -O wireguard.sh https://get.vpnsetup.net/wg

# 或者使用 curl 下载
curl -fL -o wireguard.sh https://get.vpnsetup.net/wg

如果上述地址无法访问,也可以使用备用链接:

1
https://github.com/hwdsl2/wireguard-install/raw/master/wireguard-install.sh

3. 安装 WireGuard

脚本提供了两种安装方式,您可以根据需要选择。

方式一:全自动安装(使用默认选项)

这是最快的方式,脚本会使用默认配置自动完成安装,无需人工干预。

1
sudo bash wireguard.sh --auto

默认配置如下:

  • 端口51820 (UDP)
  • 第一个客户端名称client
  • 客户端 DNS:Google Public DNS

方式二:交互式安装(自定义选项)

如果您需要自定义服务器的端口、DNS 等设置,可以使用交互式安装。

1
sudo bash wireguard.sh

运行后,脚本会提示您输入以下信息,您也可以直接按回车键使用括号内的默认值:

  1. VPN 服务器的 DNS 名称或 IP 地址:客户端用于连接的公网 IP 或域名。
  2. UDP 端口:默认为 51820
  3. VPN 客户端的 DNS 服务器:默认为 Google DNS (8.8.8.8, 1.1.1.1)。
  4. 第一个客户端的名称:默认为 client

安装成功后,脚本会在当前目录下生成一个名为 <客户端名称>.conf 的配置文件(例如 client.conf),这是客户端连接所需的全部信息。

4. 管理 VPN 用户

安装完成后,再次运行脚本 sudo bash wireguard.sh,会出现一个菜单,让您管理用户或卸载 WireGuard。

同时,脚本也支持通过命令行参数直接管理用户,非常方便:

  • 列出所有客户端sudo bash wireguard.sh --listclients
  • 添加新客户端sudo bash wireguard.sh --addclient [新客户端名称]
  • 显示客户端的二维码(用于手机扫码连接):sudo bash wireguard.sh --showclientqr [客户端名称]
  • 移除客户端sudo bash wireguard.sh --removeclient [客户端名称]
  • 卸载 WireGuardsudo bash wireguard.sh --uninstall

5. 客户端配置

  1. 获取配置文件:将服务器上生成的 <客户端名称>.conf 文件下载到您的本地设备。您可以通过 cat 命令查看文件内容并手动复制创建:

    1
    cat /root/client.conf
  2. 安装客户端软件:从 WireGuard 官网 下载并安装适用于您操作系统(Windows、macOS、Android、iOS)的客户端。

  3. 导入并连接

    • Windows/macOS:打开 WireGuard 客户端,点击“导入隧道”,选择您的 .conf 文件,然后点击“连接”。
    • Android/iOS:打开 App,点击“+”号,可以选择“扫描二维码”(使用 --showclientqr 命令生成)或“从文件导入”。

6. 高级用法:使用自定义选项自动安装

对于需要脚本化部署的高级用户,可以结合 --auto 参数和命令行选项来定制安装。

示例

1
sudo bash wireguard.sh --auto --serveraddr vpn.example.com --port 54321 --clientname myphone --dns1 1.1.1.1

或者使用 Bash Here Document 提供输入:

1
2
3
4
5
6
7
sudo bash wireguard.sh <<ANSWERS
n
51820
mydevice
1
y
ANSWERS