概述
本文档详细描述了如何使用 WireGuard 在腾讯云服务器与内网 Windows Server 2019 之间构建安全、稳定的加密隧道,实现腾讯云应用直接访问内网数据库的需求。
核心优势
- 架构最简: 仅需两台机器(腾讯云 + 数据库服务器),无中间跳板
- 性能最优: 数据库流量直达,无额外转发延迟,性能损耗 <1%
- 安全可靠: 基于 Curve25519 加密算法,端到端加密,无数据泄露风险
- 稳定可靠: 内核级实现,连接稳定性超过 99.9%
网络架构
架构说明
- Windows 服务器隧道 IP:
10.8.0.2
- 数据流向: 应用请求通过加密隧道直达数据库,无需端口映射
- 安全边界: 数据库仅对隧道 IP 开放,公网不可访问
前提条件
| | |
|---|
| 腾讯云服务器 | - Ubuntu 18.04+ 操作系统 - 固定公网 IP - 开放 UDP 5182 端口(安全组) - SSH 访问权限 | - cat /etc/os-release - curl ifconfig.me - 腾讯云控制台安全组配置 |
| Windows Server 2019 | - 管理员权限 - 内网 IP: 192.168.106.34 - 可访问公网(能连接腾讯云) - 已启用 SQL Server TCP/IP 协议 | - SSMS 连接测试 - SQL Server 配置管理器检查 |
重要提示: 请确保 Windows Server 2019 能主动连接腾讯云服务器的公网 IP 和 UDP 5182 端口。如果内网有防火墙或代理,需提前配置放行规则。
详细实施步骤
1. 腾讯云服务器配置
1.1 安装 WireGuard
# 在线安装步骤
sudo apt update
sudo apt install wireguard -y
# 创建配置目录
sudo -s
umask 077
mkdir -p /etc/wireguard
cd /etc/wireguard
1.2 生成密钥对
# 在 /etc/wireguard 目录下执行
wg genkey | tee privatekey | wg pubkey | tee publickey
1.3 创建配置文件
# /etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.1/24
PrivateKey = 你的私钥内容
ListenPort = 5182
MTU = 1420
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]
# Windows Server 2019
PublicKey = Windows服务器公钥
AllowedIPs = 10.8.0.2/32
PersistentKeepalive = 25
1.4 启动服务
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
systemctl status wg-quick@wg0
2. Windows Server 2019 配置
2.1 安装 WireGuard
从官方下载页面[1]获取安装程序,离线安装。
2.2 生成密钥对
在 WireGuard GUI 中点击"Add Tunnel" → "Create new tunnel",系统会自动生成密钥对。
2.3 配置隧道
[Interface]
PrivateKey = 自动生成的私钥
Address = 10.8.0.2/24
安全加固建议
腾讯云防火墙
# 仅允许特定IP访问WireGuard端口
ufw allow from 你的公网IP to any port 5182 proto udp
# 启用IP转发
sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
常见问题
Q1: 数据库查询会消耗腾讯云公网流量吗?
答: 会,但仅消耗加密后实际数据量的流量,且不额外计费。WireGuard 隧道将原始 SQL 查询加密封装后传输,流量大小 ≈ 原始数据量 + 小量加密开销(约 5-10%)。相比直接暴露数据库,此方案安全性和稳定性大幅提升。
Q2: 如果 Windows 服务器重启,隧道会自动恢复吗?
答: 是的。Windows WireGuard 客户端默认设置为开机启动,且配置了 PersistentKeepalive 机制,确保连接中断后自动重连。同时,腾讯云侧的监控脚本也会每 5 分钟检查一次连接状态。
Q3: 可以同时连接多台内网服务器吗?
答: 可以。只需在腾讯云的 wg0.conf 中添加多个 [Peer] 段,为每台内网服务器分配唯一的隧道 IP(如 10.8.0.3, 10.8.0.4 等),并在各自 Windows 服务器上配置对应的隧道。
Q4: 遇到连接问题如何排查?
# 1. 检查隧道状态
wg show
# 2. 检查路由表
ip route | grep 10.8.0
# 3. 检查防火墙
ufw status
# 4. 检查日志
journalctl -u wg-quick@wg0 -f --since "5 minutes ago"
总结
WireGuard 异地组网方案提供了一种安全、高效、稳定的内网数据库访问解决方案。通过 WireGuard 构建的加密隧道,可以在保证安全的前提下,实现跨地域内网资源的无缝访问。
[1] 官方下载页面: https://www.wireguard.com/install/
阅读原文:https://mp.weixin.qq.com/s/QLNf4FEVM_DfiQsdRkmDUQ
该文章在 2025/12/28 0:38:56 编辑过