WireGuard介绍

WireGuard 是一款现代、快速、简单、安全的虚拟私有网络(VPN)协议,旨在取代如IPsec和OpenVPN等传统VPN技术。比IPsec更快、更简单、更精简、更实用,同时避免大量麻烦。 相比OpenVPN性能更高,最初是为Linux内核发布,现在已跨平台(Windows、macOS、BSD、iOS、Android)并可广泛部署,目前正在大力开发中,但它可能已经被视为业内最安全、最易于使用和最简单的 VPN 解决方案

主要应用场景:

  • 远程办公安全接入企业内网,员工在家或出差时需安全访问公司内部系统(如文件服务器、ERP、数据库)
  • 跨国分支机构互联(Site-to-Site),例如欧洲办公室与中国总部之间需稳定通信
  • 云服务器与本地数据中心安全互联,将阿里云/AWS/Azure上的业务系统与本地IDC打通
  • 家庭网络与云服务器之间的安全互联,出差访问家庭NAS文件
  • IoT设备安全通信,智能摄像头、工业传感器、POS机等设备需将数据安全传回数据中心
  • 容器和微服务网络隔离,容器场景下夸主机通信,比如wg-easy,netmaker工具快速构建Overlay网络

WireGuard 部署

安装WireGuard

WireGuard 自 Linux 5.6 起已合并进主线内核,大多数现代发行版可直接安装用户态工具:

1
2
sudo apt update
sudo apt install wireguard wireguard-tools

注意:若使用 CentOS/RHEL,需先启用 EPEL 或使用 elrepo 内核模块;Windows/macOS 客户端可从 wireguard.com 下载官方 GUI 应用。

生成密钥对

1
2
3
4
5
cd /etc/wireguard/
umask 077 # 确保密钥文件权限安全
wg genkey | tee server_private.key | wg pubkey > server_public.key # 生成服务器端密钥
wg genkey | tee server_private.key | wg pubkey > client1_public.key # 客户端A密钥
wg genkey | tee server_private.key | wg pubkey > client2_public.key # 客户端B密钥

WireGuard 配置管理

WireGuard 没有严格的服务端/客户端之分,但通常需要一个具有公网IP的节点作为中继服务器(Hub)。

编辑服务器端(中继)配置文件 /etc/wireguard/wg0.conf:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
[Interface]
Address = 10.100.0.1/24
ListenPort = 51820
PrivateKey = wg genkey | tee server_private.key | wg pubkey > server_public.key # 生成服务器端密钥

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# 客户端 A
[Peer]
PublicKey = client1_public.key
AllowedIPs = 10.100.0.2/32

# 客户端 B
[Peer]
PublicKey = client2_public.key
AllowedIPs = 10.100.0.3/32

设置开机自启动

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

配置内核转发与防火墙(CentOS/Ubuntu):

# 启用 IPv4 转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

# 防火墙开放端口 (非必需,根据实际情况来)
sudo firewall-cmd --permanent --add-port=51820/udp
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.100.0.0/24 masquerade'
sudo firewall-cmd --reload
# 若使用 iptables,参考上述 PostUp/PostDown 脚本

WireGuard DashBoard

wg-easy(轻量级 Web UI)

  • 特点:单页应用,Docker 一键部署,支持 QR 码扫码连接、流量监控、在线开关客户端。
  • 适用场景:中小团队(<50 用户),快速搭建远程办公 VPN。
  • 一键部署命令:
docker run -d \
  --name=wg-easy \
  -e WG_HOST=your.domain.com \
  -e WG_PORT=51820 \
  -e WG_DEFAULT_ADDRESS=10.100.0.x \
  -e PASSWORD=your_admin_password \
  -v ~/.wg-easy:/etc/wireguard \
  -p 51821:51821 \
  -p 51820:51820/udp \
  weejewel/wg-easy

注意:wg-easy 默认无用户权限隔离,不适用于多租户或高安全要求场景。

Netmaker(企业级SD-WAN架构))

  • 特点:

    • 支持 Mesh 网络(任意节点互联)、Site-to-Site、Kubernetes 集成;
    • 提供 REST API、RBAC 权限控制、ACL 策略、指标监控(Prometheus);
    • 控制平面(netmaker) + 数据平面(netclient)分离,支持动态拓扑。
  • 架构组件:

    • Netmaker Server:管理节点、策略、证书;
    • Netclient:部署在各终端(服务器/PC/IoT),自动注册并拉取配置;
    • MQTT Broker(可选):用于大规模节点状态同步。
  • 部署方式:支持 Helm Chart(K8s)、Docker Compose、systemd。

推荐用于:跨国分支互联、混合云组网、IoT 设备集群管理等复杂拓扑。

Tailscale / Headscale(Zero Trust 架构)

  • 虽非原生 WireGuard,但底层基于 WireGuard 协议;
  • 提供 SSO(Google/Azure/OIDC)、设备认证、细粒度 ACL;
  • Headscale 为开源自托管版,适合数据合规要求高的企业。

Tailscale是商业SaaS服务(免费版支持 3 人),Headscale是其开源、自托管的替代品,协议完全兼容。

这里强烈推荐方案,建议服务器端采用开源headscale,客户端采用tailscale.