WireGuard 自建站点互联不通怎么排查?握手、AllowedIPs、路由与防火墙

本文面向合法的企业远程运维和两地内网互联,不讨论绕过地区网络管制或隐藏违法活动。

WireGuard用于企业远程运维或两地内网互联时,常见问题包括无握手、AllowedIPs错误、转发未开启和回程路由缺失。本文给出分层排查方法。

WireGuard不通时先看`wg show`:没有latest handshake先查公网Endpoint、UDP端口、密钥和NAT;有握手但无业务流量,再查AllowedIPs、系统路由、IP转发、防火墙和对端回程。本文仅用于获得授权的企业网络互联和远程运维。

WireGuard 自建站点互联不通怎么排查的分层排查流程图
本文面向合法的企业远程运维和两地内网互联,不讨论绕过地区网络管制或隐藏违法活动。

先给结论

WireGuard不通时先看`wg show`:没有latest handshake先查公网Endpoint、UDP端口、密钥和NAT;有握手但无业务流量,再查AllowedIPs、系统路由、IP转发、防火墙和对端回程。本文仅用于获得授权的企业网络互联和远程运维。

先把隧道分成两层

第一层是WireGuard加密会话,证据是latest handshake和收发计数;第二层是隧道里的IP路由和业务端口。没有握手时排查密钥、Endpoint、UDP可达性和NAT;已有握手但ping或应用不通时,不要继续换密钥,应检查地址、AllowedIPs、路由与防火墙。

记录两端公网地址、隧道地址、内网网段和监听端口。两端内网网段不能重叠,否则路由无法判断流量应留在本地还是进入隧道。

可以先执行的只读检查

查看接口和握手

sudo wg show
ip addr show wg0
ip route show

命令只读取当前状态;请替换示例域名、端口或容器名,并结合故障时间验证输出。

检查转发与UDP监听

sysctl net.ipv4.ip_forward
ss -lunp | grep 51820
sudo nft list ruleset

命令只读取当前状态;请替换示例域名、端口或容器名,并结合故障时间验证输出。

Endpoint、密钥和NAT

至少一端需要知道可达的Endpoint。安全组和系统防火墙应放行实际UDP端口,来源范围能固定时尽量限制。NAT后的客户端如果长时间没有业务流量,映射可能过期,可按场景设置合理的PersistentKeepalive,但它不是修复错误Endpoint的手段。

每个Peer填写对端公钥,私钥只保存在本机并限制权限。密钥格式相似,批量配置时容易把公钥与私钥或不同节点密钥混用。通过`wg show`核对peer,不在聊天、日志或网页中暴露私钥。

AllowedIPs既是路由也是选择条件

AllowedIPs决定哪些目标流量发给该Peer,也参与接收数据的来源校验。站点A要访问站点B网段,应在A的B Peer中包含B网段;B端也要知道A网段的回程。多个Peer使用重叠网段会产生选择冲突。

不要为了省事在所有Peer都填写`0.0.0.0/0`。全局默认路由会改变服务器管理流量和DNS路径,配置错误可能让SSH失联。站点互联通常只路由明确内网网段。

转发、防火墙和回程

作为网关的节点需要开启IP转发,并允许LAN与wg接口之间的FORWARD流量。是否需要NAT取决于下游网络是否有返回WireGuard网段的路由:能配置静态回程路由时优先纯路由;无法修改下游网关时才评估SNAT,并记录真实源地址丢失的影响。

用`tcpdump -ni wg0`和内网接口分别观察数据包经过哪一层。只看到进入wg0而没有从LAN发出,多为转发或防火墙;请求到达目标但没有返回,多为回程路由或目标主机防火墙。

重启恢复与安全验收

使用systemd管理接口时,验证配置文件权限、开机启用和重载行为。修改远程网关路由前保留现有SSH会话和控制台通道,先添加再验证,避免一次错误默认路由切断管理连接。

验收不只ping隧道地址,还要从两侧真实主机访问授权端口,验证DNS、MTU、长连接和重启恢复。限制站点间可访问端口,记录Peer归属并定期轮换离职人员或废弃节点的密钥。生产变更还应保留配置版本和撤销步骤。

上线或恢复前检查

  • 用途和网络授权已经确认
  • 握手与业务路由分层验证
  • AllowedIPs和两端网段不冲突
  • 重启、回程和最小权限通过测试

涉及生产数据、网络入口、磁盘或远程路由时,必须先备份并保留控制台回退通道。平台界面、软件版本和策略可能变化,实际操作以当前官方文档与控制台提示为准。

相关阅读

官方资料

云服务器教程Vue、React 单页应用刷新后 404 怎么办?Nginx History 路由与 API 分流2026-09-13云服务器教程Docker 提示 pull access denied 怎么办?镜像名、仓库权限与登录排查2026-09-13云服务器教程MySQL 报 ERROR 1205 Lock wait timeout 怎么办?阻塞事务与安全止损2026-09-12

加入开发者交流社区

与全球开发者、运维和工作室一起交流技术、分享经验、配置、账号与最新优惠信息

  • 云平台使用交流
  • 资源优惠信息
  • 最新教程与资讯
  • 开发者经验分享
联系 Telegram 客服
加入开发者交流社区