WireGuard 一对一部署手册

架构:A = 公网入口机(宝塔对外、SSL、反向代理),B = 后端业务机(宝塔网站,仅隧道内访问)
隧道网段:10.10.10.0/24
A隧道IP:10.10.10.1
B隧道IP:10.10.10.2
端口:UDP 51820
系统:Ubuntu
⚠️ 核心提醒:云安全组放行规则:双向 UDP 51820;A放行B公网IP,B放行A公网IP

1、安装 WireGuard

sudo apt update
sudo apt install -y wireguard-tools
wg --version

2、生成密钥

cd /etc/wireguard
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
# 查看密钥,自行复制保存
cat privatekey
cat publickey

3、A机器配置(入口机)

编辑配置文件

nano /etc/wireguard/wg0.conf

配置内容:

[Interface]
PrivateKey = 【粘贴A的privatekey内容】
Address = 10.10.10.1/24
ListenPort = 51820
MTU = 1420

[Peer]
PublicKey = 【粘贴B的publickey内容】
AllowedIPs = 10.10.10.2/32
Endpoint = 【B的公网IP】:51820
PersistentKeepalive = 25

启动并开机自启

sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
# 查看状态
sudo wg show

4、B机器配置(业务机)

编辑配置文件

nano /etc/wireguard/wg0.conf

配置内容:

[Interface]
PrivateKey = 【粘贴B的privatekey内容】
Address = 10.10.10.2/24
ListenPort = 51820
MTU = 1420

[Peer]
PublicKey = 【粘贴A的publickey内容】
AllowedIPs = 10.10.10.1/32
Endpoint = 【A的公网IP】:51820
PersistentKeepalive = 25

启动并开机自启

sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
# 查看状态
sudo wg show

5、防火墙放行UDP 51820

sudo ufw allow 51820/udp
sudo ufw reload

6、连通性测试

ping 10.10.10.2

7、宝塔配套操作

B机器(后端宝塔)

  1. 宝塔添加站点,域名正常填写,先直接提交
  2. 网站 → 设置 → 配置文件
    将 listen 80; 修改为:

    listen 10.10.10.2:80;

    删除 listen [::]:80;

  3. 保存,重载Nginx;B站点不要开启SSL,只用HTTP

image

A机器(入口宝塔)

  1. 宝塔直接添加反代网站,指向http://10.10.10.2
  2. 申请Let’s Encrypt SSL证书,开启强制HTTPS

image

8、常用维护命令

# 关闭隧道
sudo wg-quick down wg0
# 重启隧道(修改配置后必用)
sudo wg-quick down wg0 && sudo wg-quick up wg0
# 查看隧道状态
sudo wg show
# 查看wg网卡信息
ip addr
# 设置开机自启
sudo systemctl enable wg-quick@wg0

排错清单

  1. wg show 只有sent、没有received:优先检查云安全组,协议必须UDP
  2. 握手成功但是ping不通:检查AllowedIPs配置
  3. curl访问B后端报错:检查B站点listen是否绑定10.10.10.2
  4. 宝塔找不到10.10.10.2:重启wg systemctl restart wg-quick@wg0,刷新宝塔页面