Wireguard 简介
WireGuard 是一款轻量级 VPN,已集成进 Linux 内核,基于公钥认证,配置文件只有寥寥数行。代码量小,审计起来比传统 VPN 方案容易得多,隧道的建立也几乎是瞬间完成。开发者和希望自己掌控出口 IP 的小型团队都在使用它。
VPS 交付时,系统已安装 wireguard 软件包,并配置好 wg0 接口,由 wg-quick@wg0 负责启动。服务器监听 UDP 51820 端口,使用 10.8.0.0/24 私有网段(服务器地址为 10.8.0.1)。IPv4 路由转发和 NAT(masquerade)均已启用,客户端的流量会从服务器的公网 IP 出去。
第一个客户端已经创建好,除常规密钥外还配有预共享密钥。客户端配置位于 /root/wg-client.conf,供手机应用扫描的二维码位于 /root/wg-client-qr.txt,导入即可使用。
用 Wireguard 可以做什么
预配置的全隧道模式
生成的客户端使用 AllowedIPs = 0.0.0.0/0,全部 IPv4 流量都经由 VPS 转发。客户端 DNS 设置为 1.1.1.1。
客户端配置与二维码
/root/wg-client.conf 可原样导入各平台的 WireGuard 客户端。/root/wg-client-qr.txt 中的二维码可直接在终端显示,供手机应用扫描。
每个对端一把预共享密钥
由 wg genpsk 生成的密钥会叠加在公钥交换之上,进一步加固连接。敏感文件均以 600 权限创建。
开机自动启动
wg-quick@wg0 服务已通过 systemd 设为开机启用。服务器重启后,隧道会自动恢复。
NAT 与转发已就绪
IPv4 转发在 /etc/sysctl.d/99-wireguard.conf 中启用。FORWARD 与 masquerade 的 iptables 规则会在 wg0 启动时添加,停止时移除。
Wireguard 快速上手
从下单到上线,只需几分钟。
- 1
下单并勾选 WireGuard
选择位于巴黎或法兰克福的 Linux VPS(Debian 12、Debian 13、Ubuntu 20.04、22.04 或 24.04)。在订单表单的“应用”选项卡中勾选 WireGuard。
- 2
登录服务器并取得客户端配置
服务器交付后,使用收到的登录信息通过 SSH 连接。先确认隧道正在运行,然后显示二维码,或把配置文件复制到本机。
Bashssh root@SERVER_IP systemctl status wg-quick@wg0 cat /root/wg-client-qr.txt # 在本机执行: scp root@SERVER_IP:/root/wg-client.conf . - 3
导入配置并测试连接
用手机版 WireGuard 应用扫描二维码,或在桌面版应用中导入 wg-client.conf。在 Linux 上一条命令即可启动,随后检查是否已完成握手。
Bashsudo wg-quick up ./wg-client.conf sudo wg show - 4
加固配置以用于生产环境
确认 UDP 51820 端口已开放,并限制其他对外暴露的端口。如果希望用域名代替 IP,请先添加 DNS 记录,再把客户端的 Endpoint 改为 YOUR_DOMAIN:51820。同时把 /etc/wireguard 备份到服务器之外。
Bashtar czf wg-backup.tgz /etc/wireguard /root/wg-client.conf
Wireguard 的使用场景
保护公共 Wi-Fi 下的流量
在酒店、火车或咖啡馆里,您的 IPv4 流量会先通过加密隧道到达 VPS,再进入互联网。
获得固定的出口 IP
您的出口 IP 就是 VPS 的 IP,因此可以在防火墙、数据库或管理 API 上只放行这一个地址。
把自己的设备连成一个网络
电脑、手机和远程主机加入 10.8.0.0/24 网段后,可以通过内网地址互相访问,服务器充当中心节点。
在巴黎与法兰克福之间选择
下单时选择 VPS 所在站点,就决定了流量的出口区域,例如用来从法国或德国的网络环境测试某项服务。
Wireguard 常见问题
通过 SSH 登录,读取 /root/wg-client.conf,或用 cat /root/wg-client-qr.txt 显示二维码。也可以用 scp root@SERVER_IP:/root/wg-client.conf . 把文件复制到本机。
深入了解 Wireguard
已安装的文件与服务
/etc/wireguard/wg0.conf:服务器配置(私钥、对端 client1、PostUp 与 PostDown 规则)。/root/wg-client.conf:第一个客户端的配置。/root/wg-client-qr.txt:该配置对应的二维码,可用cat显示。/etc/sysctl.d/99-wireguard.conf:启用net.ipv4.ip_forward。/opt/install-wireguard.sh:交付时执行的安装脚本。
客户端的地址为 10.8.0.2/32。Endpoint 中的公网地址是安装时检测到的地址。
添加其他设备
每台设备都需要独立的密钥对和独立的地址(10.8.0.3、10.8.0.4,依此类推)。先在服务器上生成密钥,再在 wg0.conf 中添加一个 [Peer] 段。
Bashcd /etc/wireguard umask 077 wg genkey | tee client2.key | wg pubkey > client2.pub wg genpsk > client2.psk
接着把 client2.pub 和 client2.psk 的内容写入 /etc/wireguard/wg0.conf,并设置 AllowedIPs = 10.8.0.3/32,然后在不中断现有隧道的情况下重新加载:
Bashwg syncconf wg0 <(wg-quick strip wg0)
客户端文件可以参照 /root/wg-client.conf 来写:修改 PrivateKey 和 Address,保留服务器的 PublicKey 以及 Endpoint。
注意事项
生成的客户端只路由 IPv4(0.0.0.0/0)。如果您的设备有 IPv6,这部分流量不会经过隧道;如果这对您很重要,请在客户端关闭 IPv6。
客户端的 DNS 为 1.1.1.1。若要使用其他解析器,请修改客户端文件中的 DNS 一行。请把 /root/wg-client.conf 当作密码一样对待,因为其中包含客户端私钥。导入完成后,删除不再需要的副本。