- 准备工作:你需要什么。
- 创建 Droplet (云服务器):在 DigitalOcean 上创建你的 VPN 服务器。
- 连接服务器并初始化:通过 SSH 登录并进行基础配置。
- 安装 WireGuard:在服务器上安装 VPN 软件。
- 配置 WireGuard:创建服务器端和客户端的配置文件。
- 启动并启用 WireGuard:让 VPN 服务开始运行。
- 配置客户端:在你的电脑或手机上连接 VPN。
- 高级与安全:一些重要的安全设置和后续步骤。
第一步:准备工作
在开始之前,请确保你拥有以下内容:
- 一个 DigitalOcean 账户:如果你还没有,可以先注册一个,并往账户里充值至少 10 美元(因为最低的 Droplet 费用是 5 美元/月,创建时需要绑定信用卡)。
- 一个 SSH 客户端:
- Windows:推荐使用 PuTTY 或 Windows 10/11 自带的“Windows PowerShell”或“命令提示符”(稍后会介绍如何连接)。
- macOS / Linux:系统自带了
ssh命令,无需额外安装。
- 一台客户端设备:可以是你的 Windows、macOS、Linux 电脑,或者 Android、iOS 手机。
第二步:创建 Droplet (云服务器)
这是搭建 VPN 的核心部分。
- 登录你的 DigitalOcean 控制台。
- 点击左侧导航栏的 "Create" -> "Droplets"。
- 选择镜像:
- 在 "Choose an image" 部分,选择 "Distributions"。
- 推荐使用 Ubuntu,选择最新的 Ubuntu 22.04 LTS (x64) 版本,LTS 版本非常稳定,支持周期长。
- 配置 Droplet 规格:
- CPU / Memory:对于个人使用,最便宜的 Basic Plan 中的 $5/月 的配置(1 CPU, 1GB RAM, 25GB SSD)完全足够,这是我们本教程的选择。
- Storage:保持默认的 25GB SSD 即可。
- 身份验证:
- SSH Key (推荐):这是最安全的方式,如果你还没有 SSH Key,可以点击 "New SSH Key",然后将你的公钥粘贴进去,公钥的获取方法:
- macOS / Linux: 在终端运行
cat ~/.ssh/id_rsa.pub,复制输出的全部内容。 - Windows (PuTTY): 使用 PuTTYgen 生成密钥,然后将公钥部分复制。
- macOS / Linux: 在终端运行
- Password (简单):你也可以选择使用密码登录,为了安全,请务必设置一个强密码。
- SSH Key (推荐):这是最安全的方式,如果你还没有 SSH Key,可以点击 "New SSH Key",然后将你的公钥粘贴进去,公钥的获取方法:
- 选择数据中心位置:
- 选择一个离你地理位置较近的区域,可以降低延迟,如果你在中国大陆,可以选择 Singapore (新加坡) 或 Tokyo (东京)。
- 添加标签:给你的服务器起个名字,"My-VPN"。
- 最终创建:确认所有信息无误后,点击 "Create Droplet" 按钮。
等待几分钟后,你的 Droplet 就创建成功了,你可以在控制台的 "Droplets" 页面看到它,并能看到它的 公网 IP 地址。这个 IP 地址非常重要,请记下来!
第三步:连接服务器并初始化
现在我们需要通过 SSH 连接到刚刚创建的服务器。
- 获取 IP 地址:在 Droplets 页面找到你的服务器,复制它的公网 IP 地址。
- 使用 SSH 连接:
- macOS / Linux: 打开终端,输入以下命令(请将
<your_server_ip>替换为你的实际 IP)。ssh root@<your_server_ip>
- Windows (PowerShell): 打开 PowerShell,输入同样的命令。
ssh root@<your_server_ip>
- Windows (PuTTY): 打开 PuTTY,在 "Host Name (or IP address)" 字段填入你的 IP 地址,然后点击 "Open"。
- macOS / Linux: 打开终端,输入以下命令(请将
首次连接时,系统会提示你确认服务器的指纹,输入 yes 即可。
初始化服务器 (重要!):
为了安全,我们建议执行以下几步:
-
更新系统:
apt update && apt upgrade -y
-
创建一个新的用户 (可选但推荐):直接用
root用户操作有风险,我们创建一个名为vpnuser的新用户。adduser vpnuser
按照提示设置密码(可以留空全名等信息,直接按回车)。
-
赋予新用户管理员权限:
usermod -aG sudo vpnuser
-
禁用 root SSH 登录 (增强安全性):
# 编辑 sshd_config 文件 nano /etc/ssh/sshd_config
找到
PermitRootLogin yes这一行,将其修改为PermitRootLogin no。 按Ctrl + X,然后按Y,再按Enter保存并退出。 -
重启 SSH 服务使配置生效:
systemctl restart sshd
-
退出 SSH 连接,然后用新用户重新登录:
exit ssh vpnuser@<your_server_ip>
以后都使用这个
vpnuser用户来操作服务器。
第四步:安装 WireGuard
在服务器的 SSH 终口中,执行以下命令来安装 WireGuard。
# 添加 WireGuard 的官方仓库 sudo apt install -y software-properties-common sudo add-apt-repository -y ppa:wireguard/wireguard sudo apt update # 安装 WireGuard 和必要的工具 sudo apt install -y wireguard resolvconf qrencode
安装完成后,WireGuard 就准备好了。
第五步:配置 WireGuard
这是最关键的一步,我们需要创建服务器和客户端的配置文件。
创建服务器端配置
# 进入 WireGuard 配置目录 cd /etc/wireguard/ # 创建服务器私钥和公钥 # 私钥会保存在 privatekey,公钥会显示在屏幕上 wg genkey | tee privatekey | wg pubkey > publickey
我们来编辑服务器的配置文件。
sudo nano wg0.conf
粘贴进去。请务必修改 Address 和 ListenPort,并填入你刚刚生成的私钥。
[Interface] # VPN 服务器的内网 IP 地址,格式为 IP/子网掩码位数 Address = 10.0.0.1/24 # VPN 服务器的监听端口,可以自定义,但建议使用 51820 ListenPort = 51820 # 将你的服务器私钥粘贴到这里 # 从 /etc/wireguard/privatekey 文件中复制 PrivateKey = <你的服务器私钥> # 启用 IP 转发,让服务器能将客户端的流量转发到互联网 PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 关闭 VPN 时,清除上述规则 PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
操作说明:
- 将
<你的服务器私钥>替换为cat /etc/wireguard/privatekey命令输出的内容。 eth0是 DigitalOcean Droplet 的默认网卡名称,通常无需修改。- 按
Ctrl + X->Y->Enter保存并退出。
创建客户端配置
我们将为你的第一个设备创建一个客户端配置。
# 生成第一个客户端的密钥对 # 客户端 1 的私钥和公钥 wg genkey | tee client1_privatekey | wg pubkey > client1_publickey
编辑服务器的配置文件,添加客户端信息。
sudo nano /etc/wireguard/wg0.conf
在文件末尾添加以下内容:
# 在 [Interface] 段落后,添加一个新的 [Peer] 段 [Peer] # 将客户端1的公钥粘贴到这里 PublicKey = <客户端1的公钥> # 给客户端分配一个固定的内网 IP 地址 AllowedIPs = 10.0.0.2/32
操作说明:
- 将
<客户端1的公钥>替换为cat /etc/wireguard/client1_publickey命令输出的内容。 0.0.2是这个客户端在 VPN 网络中的专属 IP。- 保存并退出 (
Ctrl+X,Y,Enter)。
生成客户端配置文件(方便导入手机/电脑)
为了方便使用,我们生成一个可以直接导入到客户端设备的配置文件。
# 创建客户端配置文件 sudo nano /etc/wireguard/client1.conf
粘贴进去,并 务必修改 PrivateKey 和 Address。
[Interface] # 客户端的内网 IP 地址 Address = 10.0.0.2/32 # 将客户端1的私钥粘贴到这里 PrivateKey = <客户端1的私钥> # (可选) 设置 DNS,防止 DNS 泄漏 DNS = 1.1.1.1, 8.8.8.8 [Peer] # 服务器端的公钥 PublicKey = <服务器的公钥> # 服务器的公网 IP 和端口 Endpoint = <你的服务器公网IP>:51820 # 允许客户端通过 VPN 访问整个互联网 (0.0.0.0/0 表示所有流量) AllowedIPs = 0.0.0.0/0, ::/0 # 保持连接,避免断线 PersistentKeepalive = 25
操作说明:
<客户端1的私钥>:从cat /etc/wireguard/client1_privatekey复制。<服务器的公钥>:从cat /etc/wireguard/publickey复制。<你的服务器公网IP>:替换为你的 Droplet 的公网 IP 地址。- 保存并退出。
第六步:启动并启用 WireGuard
让我们启动 VPN 服务。
# 启动 wg0 接口 sudo wg-quick up wg0 # 查看配置是否成功 sudo wg
如果看到类似下面的输出,说明配置成功:
interface: wg0
public key: <服务器公钥>
private key: (hidden)
listening port: 51820
peer: <客户端1公钥>
allowed ips: 10.0.0.2/32
为了让 WireGuard 在服务器重启后自动启动,执行:
sudo systemctl enable wg-quick@wg0
第七步:配置客户端设备
你需要将 client1.conf 文件下载到你的设备上,并导入到 WireGuard 客户端中。
-
下载配置文件:
- 在服务器上,我们可以用
cat命令显示文件内容,然后复制。cat /etc/wireguard/client1.conf
- 将输出的所有内容复制到一个文本编辑器中,保存为
client1.conf文件。 - 或者,如果你有 Web 服务器环境,可以把它放到临时目录里用浏览器下载。
- 在服务器上,我们可以用
-
安装客户端软件:
- Windows: WireGuard 官方客户端
- macOS: WireGuard 官方客户端 或通过 Mac App Store 安装。
- Android: Google Play Store 中的 WireGuard 应用
- iOS: App Store 中的 WireGuard 应用
-
导入配置:
- 打开你安装好的 WireGuard 客户端。
- 通常会有一个 "Add Tunnel" 或 "Import from file" 的选项。
- 选择你刚刚下载的
client1.conf文件。 - 客户端会自动解析配置,并显示一个新的连接。
-
连接 VPN:
- 在客户端列表中,找到你刚刚导入的连接,点击 "Activate" (激活) 按钮。
- 等待几秒钟,连接成功后,你的设备就通过 DigitalOcean 的服务器上网了!
如何验证是否成功? 打开浏览器,访问 IPinfo.io 或 WhatIsMyIP.com,如果你的 IP 地址变成了你的 DigitalOcean 服务器的 IP 地址,并且位置也对应上了,那么恭喜你,VPN 搭建成功!
第八步:高级与安全
如何添加更多客户端?
如果你想为手机、平板或另一台电脑也配置 VPN,只需重复 第五步 中的第 2 和 3 点即可。
- 在服务器上生成新的客户端密钥:
# 为客户端2生成密钥 wg genkey | tee client2_privatekey | wg pubkey > client2_publickey
- 编辑
/etc/wireguard/wg0.conf,在[Peer]段落下添加新的客户端:[Peer] PublicKey = <客户端2的公钥> AllowedIPs = 10.0.0.3/32
- 编辑
/etc/wireguard/client2.conf,创建新的客户端配置文件。 - 重启 WireGuard 服务 使新配置生效:
sudo wg-quick down wg0 sudo wg-quick up wg0
防止 DNS 泄漏
我们在客户端配置中已经设置了 DNS 选项,这能有效防止你的 DNS 请求通过本地网络泄露,从而保护你的隐私。
使用防火墙 (UFW)
虽然 DigitalOcean 有自己的云防火墙,但系统级的防火墙(如 UFW)可以提供更精细的控制。
# 安装 UFW sudo apt install ufw -y # 允许 SSH 连接 (必须先开这个,否则可能把自己锁在外面) sudo ufw allow OpenSSH # 允许 WireGuard 端口 sudo ufw allow 51820/udp # 启用防火墙 sudo ufw enable
费用提醒
DigitalOcean 是按小时计费的,即使你关掉了 Droplet,只要 Droplet 的状态是 "Active",就会持续产生费用,当你不需要使用 VPN 时,请务必回到 DigitalOcean 控制台,将你的 Droplet 关机 或 销毁,以节省费用。
恭喜你!现在你已经拥有了一个由自己掌控的、高速安全的 DigitalOcean WireGuard VPN,你可以随时随地连接它,来保护你的网络隐私、访问地理限制内容,享受吧!
