凌峰创科服务平台

如何快速搭建Server VPN服务器?

核心概念

在开始之前,你需要了解几个角色:

如何快速搭建Server VPN服务器?-图1
(图片来源网络,侵删)
  • 服务器端:你将要搭建的、位于远程(VPS 或云主机)的虚拟专用网关。
  • 客户端:你的个人设备,如笔记本电脑、手机、平板等,它们将通过 VPN 连接到服务器。
  • 公网 IP:你的服务器在互联网上的唯一地址,45.67.89
  • 私有 IP:服务器和客户端在 VPN 内部通信使用的地址,0.0.1

第一步:准备工作

  1. 一台云服务器 (VPS)

    • 推荐服务商:DigitalOcean, Vultr, Linode, 阿里云, 腾讯云等。
    • 推荐系统Ubuntu 22.04 LTSDebian 11,这些系统稳定且软件包丰富。
    • 最低配置:1核 CPU / 512MB 内存 / 1GB 硬盘空间,对于 WireGuard 这个配置绰绰有余。
    • 公网 IP:确保你的服务器有一个固定的公网 IP 地址。
  2. 基本命令行操作能力

    • 你需要会使用 ssh 连接到服务器,并执行一些基本的 Linux 命令(如 apt, vim, cd, ls 等)。
  3. 一台客户端设备

    可以是 Windows, macOS, Linux, Android, 或 iOS 设备。

    如何快速搭建Server VPN服务器?-图2
    (图片来源网络,侵删)

第二步:在服务器上安装和配置 WireGuard

我们将分步完成服务器端的配置。

连接到服务器并更新系统

使用 SSH 连接到你的服务器:

ssh root@你的服务器公网IP

更新软件包列表并升级已安装的包:

apt update && apt upgrade -y

安装 WireGuard

WireGuard 的内核模块已经包含在最新的 Linux 内核中,所以我们只需要安装用户空间的工具即可。

如何快速搭建Server VPN服务器?-图3
(图片来源网络,侵删)
apt install wireguard -y

生成密钥对

WireGuard 使用公钥/私钥进行认证,我们需要为服务器生成一对密钥。

  • 服务器私钥必须保密,存放在服务器上。
  • 服务器公钥:可以分享给客户端,用于建立连接。

运行以下命令生成密钥:

# 进入 /etc/wireguard 目录
cd /etc/wireguard
# 生成私钥
wg genkey | tee server_private.key
# 基于私钥生成公钥
cat server_private.key | wg pubkey | tee server_public.key

你会在 /etc/wireguard/ 目录下找到两个文件:

  • server_private.key:服务器私钥,不要泄露!
  • server_public.key:服务器公钥,稍后会用到。

创建服务器配置文件

创建一个名为 wg0.conf 的配置文件:

nano /etc/wireguard/wg0.conf

粘贴进去,并根据你的需求进行修改:

[Interface]
# VPN 服务器的私有 IP 地址,这是整个 VPN 网段的网关
Address = 10.0.0.1/24
# VPN 服务器所使用的 UDP 端口,建议使用 51820 (WireGuard 默认端口) 或其他高端口
# 确保在云服务商的控制台(安全组/防火墙)中开放这个端口
ListenPort = 51820
# 指定刚才生成的服务器私钥
PrivateKey = PASTE_YOUR_SERVER_PRIVATE_KEY_HERE
# 启用 IP 转发,允许客户端通过服务器访问互联网
# 这一行是让客户端能够“翻墙”的关键
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 关闭 IP 转发
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# (可选) 如果服务器上启用了防火墙,可以使用 UFW 来管理规则
# PostUp = ufw route allow in on wg0 out on eth0
# PostDown = ufw route delete allow in on wg0 out on eth0

修改点说明:

  • PrivateKey:将 PASTE_YOUR_SERVER_PRIVATE_KEY_HERE 替换为 cat /etc/wireguard/server_private.key 的输出内容。
  • ListenPort:保持 51820 即可,但务必去你的云服务商后台(如阿里云ECS的“安全组”设置)添加一条入站规则,允许 UDP 流量访问 51820 端口。
  • PostUpPostDown:这两行是 NAT 转发规则,它会把客户端的请求伪装成服务器的请求,从而访问互联网,这是实现全局代理的关键。

保存并退出 nano 编辑器(Ctrl+XYEnter)。

启动并启用 WireGuard 服务

我们启动这个接口,并设置为开机自启。

# 启动 wg0 接口
wg-quick up wg0
# 设置为开机自启
systemctl enable wg0

检查 WireGuard 是否正常运行:

# 查看接口状态
ip a show wg0
# 查看密钥对和已连接的客户端(目前应该是空的)
wg

wg 命令输出了服务器的公钥和 (none) 的对端,说明服务器端配置成功。


第三步:配置客户端

我们需要为每个客户端设备生成密钥并创建配置文件。

在服务器上为第一个客户端生成密钥

假设我们的第一个客户端是 laptop

# 在服务器上执行
cd /etc/wireguard
# 为客户端 laptop 生成私钥
wg genkey | tee client_laptop_private.key
# 生成公钥
cat client_laptop_private.key | wg pubkey | tee client_laptop_public.key

更新服务器配置文件,添加客户端

回到 wg0.conf 文件:

nano /etc/wireguard/wg0.conf

在文件末尾添加以下内容:

# 在 [Interface] 段落后面添加一个新的 [Peer] 段
[Peer]
# 客户端的公钥
PublicKey = PASTE_YOUR_CLIENT_LAPTOP_PUBLIC_KEY_HERE
# 给客户端分配一个 VPN 内网的静态 IP 地址
AllowedIPs = 10.0.0.2/32

修改点说明:

  • PublicKey:将 PASTE_YOUR_CLIENT_LAPTOP_PUBLIC_KEY_HERE 替换为 cat /etc/wireguard/client_laptop_public.key 的输出内容。
  • AllowedIPs = 10.0.0.2/32:这表示这个客户端只能使用 0.0.2 这个 IP 地址。/32 是一个子网掩码,代表只有一个地址。

保存并退出。

为客户端生成配置文件

我们需要一个 .conf 文件,以便客户端设备可以连接到服务器。

# 创建客户端配置文件
cp /etc/wireguard/wg0.conf /etc/wireguard/client_laptop.conf

然后编辑这个新的客户端配置文件:

nano /etc/wireguard/client_laptop.conf

将其修改为以下格式:

[Interface]
# 客户端的私有 IP 地址
Address = 10.0.0.2/24
# 客户端的私有密钥,这是客户端设备上需要配置的
PrivateKey = PASTE_YOUR_CLIENT_LAPTOP_PRIVATE_KEY_HERE
# (可选) 设置一个 DNS 服务器,防止 DNS 泄露
DNS = 1.1.1.1, 8.8.8.8
[Peer]
# 服务器的公钥
PublicKey = PASTE_YOUR_SERVER_PUBLIC_KEY_HERE
# 服务器的公网 IP 和端口
Endpoint = 你的服务器公网IP:51820
# 允许客户端通过 VPN 访问的 IP 范围
# 0.0.0.0/0 表示所有流量都通过 VPN,这是全局代理
# 如果只想访问特定资源,可以写特定 IP 或网段,如 192.168.1.0/24
AllowedIPs = 0.0.0.0/0, ::/0
# 保持连接,5 分钟内没有数据传输,则发送一个 100 字节的包以保持会话活跃
PersistentKeepalive = 25

修改点说明:

  • PrivateKey:将 PASTE_YOUR_CLIENT_LAPTOP_PRIVATE_KEY_HERE 替换为 cat /etc/wireguard/client_laptop_private.key 的输出内容。
  • PublicKeyEndpoint:填入你服务器的公钥和公网 IP 地址。
  • AllowedIPs = 0.0.0.0/0, ::/0:这是关键,它告诉客户端将所有互联网流量都发送到 VPN 服务器。
  • PersistentKeepalive:对于移动网络(如手机切换 Wi-Fi)非常有用,可以防止连接被 NAT 超时断开。

重启 WireGuard 服务以应用新配置

systemctl restart wg0

再次运行 wg 命令,你应该能看到客户端 laptop 已经连接上了。


第四步:在客户端设备上导入配置

你需要将刚刚生成的 /etc/wireguard/client_laptop.conf 文件从服务器下载到你的客户端设备上。

使用 scp (在本地电脑终端执行)

假设你的用户名是 root

# 从服务器下载到本地当前目录
scp root@你的服务器公网IP:/etc/wireguard/client_laptop.conf ./

使用 catssh 直接复制

ssh root@你的服务器公网IP "cat /etc/wireguard/client_laptop.conf"

然后直接复制终端中输出的所有内容,粘贴到一个新的文本文件中,并保存为 client.conf

客户端软件安装和导入

  • Windows: 下载并安装 WireGuard 官方客户端,将 .conf 文件拖入客户端窗口,或点击 "Import tunnel(s) from file"。
  • macOS: 同样使用官方客户端,方法与 Windows 类似。
  • Android: 从 Google Play 商店下载 WireGuard 应用,点击 "+" 号,选择 "Import tunnel from file" 或 "Import tunnel from config"。
  • iOS: 从 App Store 下载 WireGuard 应用,点击右上角的 "+" 号,选择 "Import from file" 或 "Import from archive"。

导入成功后,点击客户端列表中的该连接,点击 "Activate" 即可连接。


第五步:验证连接

连接成功后,打开浏览器访问 IPinfo.ioGoogle "what is my ip"

  • 如果你的 IP 地址变成了你服务器的 IP 地址,并且地理位置也匹配,那么恭喜你,VPN 搭建成功!
  • 你可以访问一些之前被限制的网站来测试。

重要提示与进阶

  • 安全
    • 保护好你的私钥:服务器和客户端的私钥都不要泄露。
    • 防火墙:确保服务器的防火墙(如 ufw 或云服务商的安全组)只开放了必要的端口(如 SSH 的 22 端口和 WireGuard 的 51820 端口)。
  • 为更多客户端添加:如果你想为手机再添加一个客户端,只需重复 第三步 的过程,生成新的密钥对,在服务器 wg0.conf[Peer] 部分添加新的客户端配置(使用新的 PublicKey 和一个新的 AllowedIPs,如 0.0.3/32),然后为手机生成一个新的 .conf 文件即可。
  • 故障排查
    • 连接不上:检查云服务商的安全组/防火墙是否开放了 51820 (UDP) 端口。
    • 能连但无法上网:检查服务器 wg0.conf 中的 PostUpPostDown 的 iptables 规则是否正确,检查客户端配置中的 AllowedIPs 是否为 0.0.0/0
    • 使用 wgwg show 命令:这是排查连接问题的最佳工具,可以清晰地看到密钥交换和流量情况。

希望这份详细的指南能帮助你成功搭建属于自己的 VPN 服务器!

分享:
扫描分享到社交APP
上一篇
下一篇