WireGuard多客户端管理,运维远程访问内网

WireGuard 是一款轻量、高性能的 VPN 工具,适合运维人员远程访问内网服务器。
本文围绕 WireGuard 多客户端管理,从零开始讲解如何在 Linux 服务端配置多客户端,让不同设备安全接入内网。
读完你能独立完成服务端搭建、客户端配置、路由转发和故障排查。

环境准备与 WireGuard 安装

假设你有一台公网 Linux 服务器(Ubuntu 22.04 / Debian 11 为例),
内网网段为 192.168.1.0/24
WireGuard 使用 10.0.0.0/24 作为隧道网段。

先更新系统并安装 WireGuard:

sudo apt update
sudo apt install wireguard resolvconf -y

安装后检查内核模块:

lsmod | grep wireguard

如果没有输出,执行 sudo modprobe wireguard 加载模块。

关键点: 服务端需要开启 IP 转发,否则客户端无法访问内网其他机器。

sudo sysctl -w net.ipv4.ip_forward=1
# 永久生效
 echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

生成密钥与配置服务端

WireGuard 使用公私钥对认证。
为服务端生成密钥:

cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

创建服务端配置文件 /etc/wireguard/wg0.conf

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = 
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

注意 eth0 替换为你的公网网卡名,可用 ip route get 8.8.8.8 查看。

启动服务并设置开机自启:

sudo systemctl enable --now wg-quick@wg0
sudo wg show

wg show 能显示监听端口和 peer 信息即表示服务端正常。

为每个客户端生成配置

多客户端管理的关键是每个客户端拥有独立密钥和隧道 IP。
以两个客户端为例:

# 客户端1
wg genkey | tee client1_private.key | wg pubkey > client1_public.key
# 客户端2
wg genkey | tee client2_private.key | wg pubkey > client2_public.key

在服务端 wg0.conf 中追加 peer 段:

[Peer]
# 客户端1
PublicKey = 
AllowedIPs = 10.0.0.2/32

[Peer]
# 客户端2
PublicKey = 
AllowedIPs = 10.0.0.3/32

注意: AllowedIPs 对客户端使用 /32,只允许该 IP,避免冲突。

保存后重载配置:

sudo wg addconf wg0 <(wg-quick strip wg0)

或者直接重启服务:sudo systemctl restart wg-quick@wg0

客户端配置文件示例(client1.conf):

[Interface]
PrivateKey = 
Address = 10.0.0.2/24
DNS = 223.5.5.5

[Peer]
PublicKey = 
Endpoint = <服务器公网IP>:51820
AllowedIPs = 10.0.0.0/24, 192.168.1.0/24
PersistentKeepalive = 25

AllowedIPs 包含隧道网段和内网网段,这样客户端才能访问内网机器。PersistentKeepalive 用于 NAT 环境保持连接。

防火墙与路由避坑

常见问题:客户端连上了但无法访问内网。
按顺序检查:

  • 服务端 iptables 转发规则是否生效:sudo iptables -L FORWARD -n -v 查看是否有 wg0 的 ACCEPT 规则。
  • 内网目标机器是否有回程路由?如果内网机器网关不是 WireGuard 服务器,需要在内网路由器添加静态路由指向服务器内网 IP。
  • 云服务器安全组放行 UDP 51820 端口。
  • 客户端 AllowedIPs 是否漏了内网网段。

如果客户端之间需要互访,在服务端每个 peer 的 AllowedIPs 中增加对方 IP,并开启 net.ipv4.ip_forward

验证方法: 客户端执行 ping 10.0.0.1 通,再 ping 192.168.1.10(内网某台机器)通,说明配置正确。

多客户端管理与维护

随着客户端增多,手动编辑配置文件容易出错。
建议:

  • 为每个客户端单独保存密钥和配置文件,命名清晰(如 client-张三.conf)。
  • 使用 wg show 查看当前在线 peer 和最后握手时间。
  • 移除客户端时,从 wg0.conf 删除对应 [Peer] 段并重载。
  • 定期备份 /etc/wireguard/ 目录。

如果需要更高效管理,可考虑使用 wg-easy 等 Web 面板,但手动方式更透明可控。

独立结论: WireGuard 多客户端管理的核心是每个客户端独立密钥和唯一隧道 IP,服务端通过多个 [Peer] 段区分。

独立结论: 运维远程访问内网必须开启 IP 转发并配置 NAT,否则客户端只能访问服务端本身。

独立结论: 客户端 AllowedIPs 需包含隧道网段和内网网段,否则无法路由到内网。

常见疑问

客户端连接后无法上网? 如果 AllowedIPs 设了 0.0.0.0/0 但服务端未做 NAT,会导致上网失败。
全流量代理需服务端 MASQUERADE 正确。

多客户端 IP 冲突怎么办? 确保每个客户端 AddressAllowedIPs 中的 IP 不重复,建议用 /32 精确匹配。

如何查看握手状态? 服务端运行 sudo wg showlatest handshake 显示最近握手时间,长时间无握手说明连接异常。

按照以上步骤,你可以完成 WireGuard 多客户端管理,实现运维远程访问内网。
遇到异常时优先检查防火墙、IP 转发和 AllowedIPs 设置,基本能覆盖大部分问题。

分享到:
上一篇
运维跳板机权限管控,最小权限安全原则:运维跳板机权限管控
下一篇
SSH隧道端口转发,本地访问内网网站调试
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意