云服务器搭建 WireGuard VPN 实战
云服务器搭建vpn
在云服务器上搭建 VPN,常用于远程办公、访问公司内网、保护公共 Wi-Fi 下的数据传输,以及安全连接个人设备。部署 VPN 时,建议选择稳定、轻量、配置简单的方案,例如 WireGuard。相比传统 OpenVPN,WireGuard 配置更简洁,性能也更好,适合云服务器环境。
提醒:VPN 只能用于合法合规的远程访问和网络安全用途,请遵守所在地法律法规及云服务商规则。
一、准备工作
在开始之前,需要准备以下内容:
- 一台云服务器,系统建议使用 Ubuntu、Debian 或 CentOS。
- 云服务器拥有公网 IP。
- 已开放云厂商安全组中的 VPN 端口,例如 UDP
51820。 - 本地电脑或手机,用于连接 VPN。
- 具备服务器 root 权限。
本文以 Ubuntu 系统为例,使用 WireGuard 搭建 VPN。
二、安装 WireGuard
登录服务器后,先更新软件源并安装 WireGuard:
sudo apt update
sudo apt install -y wireguard iptables
如果服务器使用防火墙,还需要确认 SSH 端口已放行,避免开启防火墙后无法连接服务器。
三、生成密钥
执行以下命令生成服务器私钥和公钥:
sudo su
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
之后可以查看密钥内容:
cat server_private.key
cat server_public.key
服务器私钥用于服务器配置,服务器公钥用于客户端配置。
四、配置服务器
先查看服务器的默认网卡名称:
ip route | grep default
通常会看到类似:
default via xxx.xxx.xxx.xxx dev eth0
这里的 eth0 就是外网网卡名称,如果你的服务器显示的是 ens3、ens5 或其他名称,请以实际结果为准。
创建配置文件:
nano /etc/wireguard/wg0.conf
写入以下内容:
[Interface]
Address = 10.6.0.1/24
ListenPort = 51820
PrivateKey = 服务器私钥
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = 客户端公钥
AllowedIPs = 10.6.0.2/32
注意将 服务器私钥 替换为刚才生成的服务器私钥,将 客户端公钥 替换为客户端生成的公钥。
如果你希望客户端连接 VPN 后只访问内网资源,可以将客户端配置中的路由范围设置得更小;如果需要让所有流量都经过 VPN,则需要在客户端中设置完整路由。
五、开启系统转发
为了让 VPN 客户端能够访问外部网络,需要开启 IPv4 转发:
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
六、配置防火墙
如果使用 UFW,可以这样放行 VPN 端口和 SSH 端口:
ufw allow 22/tcp
ufw allow 51820/udp
ufw enable
同时,不要忘记在云服务商控制台的安全组中放行 UDP 51820 端口。
七、启动 VPN 服务
启动 WireGuard:
wg-quick up wg0
设置开机自启:
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
查看运行状态:
wg show
如果能看到客户端连接信息,说明 VPN 服务已经正常运行。
八、配置客户端
以电脑客户端为例,安装 WireGuard 后新建隧道,配置如下:
[Interface]
PrivateKey = 客户端私钥
Address = 10.6.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = 服务器公钥
Endpoint = 服务器公网IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
其中:
客户端私钥:本地客户端生成的私钥。服务器公钥:服务器生成的公钥。服务器公网IP:云服务器的公网地址。AllowedIPs = 0.0.0.0/0, ::/0:表示所有流量经过 VPN。- 如果只想访问服务器内网,可以改成
AllowedIPs = 10.6.0.0/24。
九、测试连接
连接 VPN 后,可以在服务器执行:
wg show
如果看到客户端 IP、握手时间和流量信息,说明连接成功。
也可以在客户端访问服务器内网资源,或测试网络是否正常。如果无法连接,重点检查:
- 云服务器安全组是否放行 UDP 端口。
- 服务器防火墙是否放行 VPN 端口。
- 客户端配置中的服务器 IP 和端口是否正确。
- 服务器网卡名称是否写错。
- 服务器公钥和客户端公钥是否对应。
十、安全建议
搭建 VPN 后,还需要注意安全管理:
- 不要公开分享私钥。
- 定期更换密钥。
- 只开放必要端口。
- 关闭不必要的服务。
- SSH 建议使用密钥登录。
- 如果面向多人使用,应为每个用户分配独立密钥和 IP。
- 定期检查连接日志和服务器负载。
总结
云服务器搭建 VPN 可以实现安全远程访问、内网连接和加密通信。本文介绍了使用 WireGuard 在云服务器上部署 VPN 的完整流程,包括安装服务、生成密钥、配置服务器、开启转发、设置防火墙以及配置客户端。整体方案轻量、稳定,适合个人和团队使用。部署完成后,应重点做好密钥管理和端口安全,确保 VPN 只用于合法合规的网络访问需求。