WireGuard 安装与组网教程:开启极速 VPN 之旅

WireGuard 安装与组网教程:开启极速 VPN 之旅

什么是 WireGuard?

在当今的网络环境中,隐私和安全越来越受到重视。WireGuard 是一种现代、简单、快速且安全的 VPN 协议,旨在取代传统的 IPsec 和 OpenVPN。它由知名内核开发者 Jason A. Donenfeld 开发,并于 2020 年被正式并入 Linux 内核,这本身就证明了其卓越的性能和稳定性。

WireGuard 的核心优势:

  • 极速性能:相比 OpenVPN,WireGuard 协议更轻量、更高效,可以提供接近物理网络的速度,延迟极低。
  • 简单易用:配置代码极简,通常只有几十行,大大降低了上手难度。
  • 高度安全:它使用了最先进的密码学技术,如 ChaCha20、Poly1305 等,安全性极高。
  • 跨平台支持:支持 Linux、Windows、macOS、Android、iOS 等几乎所有主流平台。

准备工作

在开始之前,我们需要准备一台 云服务器(VPS) 作为 VPN 服务端。本文将以 Ubuntu 22.04 为例进行讲解。

客户端可以是你的个人电脑、手机或任何需要接入网络的设备。

1. 服务端配置(Ubuntu)

我们首先在云服务器上安装和配置 WireGuard。

步骤一:安装 WireGuard

WireGuard 已经包含在大多数现代 Linux 发行版的官方软件源中,所以安装非常简单。

1
2
3
4
5
# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装 WireGuard
sudo apt install wireguard -y

步骤二:生成密钥对

WireGuard 基于公钥/私钥加密技术。我们需要为服务端和每个客户端都生成一对密钥。

1
2
3
4
5
6
7
8
9
10
11
12
# 切换到 root 用户或使用 sudo
sudo -i

# 进入 /etc/wireguard 目录
cd /etc/wireguard

# 生成服务端密钥对
wg genkey | tee privatekey | wg pubkey > publickey

# 查看生成的私钥和公钥
cat privatekey
cat publickey
  • privatekey:服务端的私钥,绝不能泄露
  • publickey:服务端的公钥,用于客户端配置。

步骤三:配置服务端

创建一个名为 wg0.conf 的配置文件,wg0 是 WireGuard 创建的网络接口名称,你可以自定义。

1
2
# 创建并编辑配置文件
nano /etc/wireguard/wg0.conf

将以下内容粘贴到文件中,并根据你的实际情况进行修改:

1
2
3
4
5
6
7
8
9
10
[Interface]
# 服务端私钥
PrivateKey = <服务端的 privatekey>
# 服务端IP地址,用于内网通信
Address = 10.0.0.1/24
# 监听端口,你可以自定义
ListenPort = 51820
# 启用 IP 转发,允许客户端访问互联网
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
  • PrivateKey:填写你在上一步中生成的服务端私钥。
  • Address:这是 WireGuard 虚拟内网的地址,10.0.0.1/24 表示服务器的 IP 是 10.0.0.1,掩码是 255.255.255.0,客户端 IP 可以在 10.0.0.210.0.0.254 之间。
  • ListenPort:WireGuard 默认监听端口,可以自定义。
  • PostUp/PostDown:这两条命令用于设置 NAT(网络地址转换),让客户端的流量可以通过服务器访问互联网。eth0 是你的服务器网卡名称,如果不是,请使用 ip a 命令查看并替换。

步骤四:启动 WireGuard 服务

保存并关闭文件后,启用和启动 WireGuard 服务。

1
2
3
4
5
6
7
8
# 启用开机自启
systemctl enable wg-quick@wg0

# 立即启动 WireGuard
systemctl start wg-quick@wg0

# 查看 WireGuard 状态
wg show wg0

至此,服务端配置完成。记得在你的云服务商控制台 防火墙/安全组 中,放行 51820 端口(UDP)。

2. 客户端配置

步骤一:生成客户端密钥对

在任意一台电脑上,或者直接在服务器上,为每个客户端生成一对密钥。

1
2
# 生成客户端密钥对
wg genkey | tee client_privatekey | wg pubkey > client_publickey
  • client_privatekey:客户端的私钥,用于客户端配置。
  • client_publickey:客户端的公钥,用于服务端配置。

步骤二:将客户端公钥添加到服务端

回到服务器的 wg0.conf 文件,为每个客户端添加一个 [Peer] 区块。

1
2
3
4
5
6
7
8
9
# 继续编辑 /etc/wireguard/wg0.conf
nano /etc/wireguard/wg0.conf

# 在文件末尾添加以下内容
[Peer]
# 客户端的公钥
PublicKey = <客户端的 client_publickey>
# 客户端的虚拟内网 IP
AllowedIPs = 10.0.0.2/32
  • PublicKey:填写你在上一步生成的客户端公钥。
  • AllowedIPs:分配给该客户端的虚拟内网 IP 地址,10.0.0.2/32 表示只允许 10.0.0.2 这个 IP 访问,掩码为 255.255.255.255。如果有多个客户端,依次为它们分配 10.0.0.310.0.0.4 等。

添加完客户端配置后,重启 WireGuard 服务使其生效:

1
systemctl restart wg-quick@wg0

步骤三:配置客户端

Windows 客户端:

  1. WireGuard 官网下载并安装 Windows 客户端。
  2. 打开客户端,点击左下角的 + 号,选择 添加空白隧道
  3. 粘贴以下配置到右侧编辑框中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Interface]
# 客户端私钥
PrivateKey = <客户端的 client_privatekey>
# 客户端虚拟内网 IP
Address = 10.0.0.2/32

[Peer]
# 服务端的公钥
PublicKey = <服务端的 publickey>
# 服务端的公网 IP 和监听端口
Endpoint = <你的云服务器公网 IP>:51820
# 允许通过 VPN 访问的 IP 范围,0.0.0.0/0 表示所有流量都通过 VPN
AllowedIPs = 0.0.0.0/0
# 保持活跃连接,防止连接被断开
PersistentKeepalive = 25
  • PrivateKey:填写客户端私钥。
  • Address:填写服务端 wg0.conf 中为该客户端分配的 IP。
  • PublicKey:填写服务端的公钥。
  • Endpoint:填写你的 云服务器公网 IP 和 WireGuard 监听端口。

保存配置后,点击 连接,如果一切顺利,你就可以通过 VPN 访问互联网了。

其他平台(如 Android/iOS):

手机客户端的操作类似,只需手动添加配置或通过扫描二维码即可。WireGuard 客户端也支持直接导入 .conf 文件,你可以将上述配置保存为 client.conf 文件后导入。

3. 点对点组网

除了作为传统的 VPN,WireGuard 的另一大用途是构建 点对点(P2P) 虚拟局域网。例如,将多台云服务器连接起来,或者将你的公司电脑和家用电脑连接起来,实现内网互访。

假设你有两台服务器 A10.0.0.1)和 B10.0.0.2)。

  • 在服务器 A 的 wg0.conf 中添加 B 的配置:

    1
    2
    3
    4
    5
    6
    [Peer]
    PublicKey = <B 的公钥>
    # 允许访问 B 的内网 IP,10.0.0.2/32 表示只允许访问 B 自己
    AllowedIPs = 10.0.0.2/32
    # B 的公网 IP 和端口
    Endpoint = <服务器 B 的公网 IP>:51820
  • 在服务器 B 的 wg0.conf 中添加 A 的配置:

    1
    2
    3
    4
    5
    6
    [Peer]
    PublicKey = <A 的公钥>
    # 允许访问 A 的内网 IP,10.0.0.1/32 表示只允许访问 A 自己
    AllowedIPs = 10.0.0.1/32
    # A 的公网 IP 和端口
    Endpoint = <服务器 A 的公网 IP>:51820

配置完成后,分别重启两台服务器的 WireGuard 服务,即可通过 ping 10.0.0.2ping 10.0.0.1 来测试连接是否成功。


WireGuard 以其极简的配置和强大的性能,成为了新一代 VPN 的理想选择。希望本教程能帮助你轻松搭建一个属于自己的私有安全网络!