极速安全:在搬瓦工 VPS 上部署 WireGuard (WG) 详细指南
来自md5.pw
更多语言
更多操作
这是此页面的最新修订,它没有已核准修订。
极速安全:在搬瓦工 VPS 上部署 WireGuard (WG) 详细指南
WireGuard 是被整合进 Linux 内核的新一代 VPN 协议,以其极简的代码库、极高的性能和先进的加密技术著称。相比传统的 OpenVPN 或 IPsec,WireGuard 在搬瓦工(BandwagonHost)VPS 上能提供更低的延迟和更高的吞吐量,非常适合作为个人的安全加密通道。
本文将手把手教你如何在 Ubuntu/Debian 系统上手动部署 WireGuard 服务端,并配置客户端连接。
准备工作
- 一台搬瓦工 VPS(推荐使用 Ubuntu 20.04/22.04 或 Debian 10/11 系统)。
- 确保已通过 SSH 连接到服务器 root 用户。
第一步:安装 WireGuard
得益于搬瓦工提供的 KVM 架构和较新的内核,安装 WireGuard 非常简单。
在终端执行以下命令更新软件源并安装:
apt update && apt install -y wireguard qrencode
- 注意:这里顺便安装了
qrencode,后面用于生成手机扫描的二维码。
第二步:生成密钥对
WireGuard 使用类似 SSH 的公钥/私钥体系。我们需要分别为“服务端”和“客户端”生成密钥。
1. 生成服务端密钥
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
2. 生成客户端密钥
wg genkey | tee client_private.key | wg pubkey > client_public.key
现在目录下应该有4个文件。你可以用 cat 命令查看并记录它们的内容(千万不要泄露私钥 Private Key)。
第三步:配置服务端
创建并编辑 WireGuard 的主配置文件 wg0.conf:
nano /etc/wireguard/wg0.conf
将以下内容粘贴进去(注意替换密钥部分):
[Interface]
# 服务端私钥 (server_private.key 的内容)
PrivateKey = <这里填入你的 server_private.key>
# 服务端内网 IP,一般保持默认
Address = 10.0.0.1/24
# 监听端口 (UDP),如果被防火墙拦截可尝试修改
ListenPort = 51820
# 启动后执行的路由规则 (开启 NAT 转发)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o eth0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 关闭后清除路由规则
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o eth0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# 客户端公钥 (client_public.key 的内容)
PublicKey = <这里填入你的 client_public.key>
# 允许该客户端使用的内网 IP
AllowedIPs = 10.0.0.2/32
- 注意:如果你的网卡名称不是
eth0(可以用ip a查看),请将 PostUp/PostDown 中的eth0替换为实际网卡名称(如ens3)。
第四步:开启 IP 转发
为了让 VPS 能转发流量,必须开启内核 IP 转发功能。
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
第五步:启动服务
启动 WireGuard 并设置开机自启:
wg-quick up wg0
systemctl enable wg-quick@wg0
如果没有任何报错,输入 wg 命令应该能看到接口状态。
第六步:配置客户端
选项 A:手机端 (iOS/Android)
这是最酷的一步!我们可以直接在终端生成配置并转为二维码。
1. 创建客户端配置文件模板 client.conf:
nano /etc/wireguard/client.conf
2. 填入以下内容:
[Interface]
# 客户端私钥 (client_private.key 的内容)
PrivateKey = <这里填入你的 client_private.key>
Address = 10.0.0.2/24
DNS = 8.8.8.8
[Peer]
# 服务端公钥 (server_public.key 的内容)
PublicKey = <这里填入你的 server_public.key>
# 服务端公网 IP : 端口
Endpoint = <你的VPS公网IP>:51820
# 路由流量:0.0.0.0/0 代表代理所有流量
AllowedIPs = 0.0.0.0/0
# 保持连接心跳,防止 NAT 断连
PersistentKeepalive = 25
3. 生成二维码:
qrencode -t ansiutf8 < client.conf
此时你的 SSH 终端里会直接显示一个巨大的二维码,打开手机 WireGuard APP 扫描即可连接!
选项 B:电脑端 (Windows/macOS)
将上面的 client.conf 内容复制,保存为 wg0.conf,导入电脑版 WireGuard 客户端即可。
常见问题排查
- Q
- 连上了但无法上网?
- A: 检查 第四步 是否开启了 IP 转发。另外检查 VPS 的防火墙(UFW/IPTables)是否放行了 51820 UDP 端口。
ufw allow 51820/udp
- Q
- 搬瓦工某些机房连不上?
- A: WireGuard 使用 UDP 协议,极少数地区的运营商可能会对大流量 UDP 进行 QOS 限速或阻断。如果遇到这种情况,可以尝试更换 ListenPort 端口,或者配合 udp2raw 使用(进阶玩法)。
Created by AlexLynn for md5.pw Community.