WireGuard用于企业远程运维或两地内网互联时,常见问题包括无握手、AllowedIPs错误、转发未开启和回程路由缺失。本文给出分层排查方法。
WireGuard不通时先看`wg show`:没有latest handshake先查公网Endpoint、UDP端口、密钥和NAT;有握手但无业务流量,再查AllowedIPs、系统路由、IP转发、防火墙和对端回程。本文仅用于获得授权的企业网络互联和远程运维。

先给结论
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和两端网段不冲突
- 重启、回程和最小权限通过测试
涉及生产数据、网络入口、磁盘或远程路由时,必须先备份并保留控制台回退通道。平台界面、软件版本和策略可能变化,实际操作以当前官方文档与控制台提示为准。
相关阅读
官方资料
- Introduction to WireGuard VPN(Ubuntu)
- WireGuard VPN site-to-site(Ubuntu)
- Troubleshooting WireGuard VPN(Ubuntu)

