WireGuard 配完 ping 不通?手把手排查 AllowedIPs 与密钥

WireGuard 以配置简洁著称,但『配完却不通』的案例比比皆是。它不像传统 VPN 有详细协商日志,问题多半藏在 AllowedIPs、密钥、持久保活和防火墙里。下面按排查顺序一步步来。

一、先用 wg show 看握手是否发生

  1. 执行 wg show,重点看 latest handshake 字段。若一直为空,说明根本没建立握手,问题在连通性或公钥。
  2. transfer 收发字节。若只有发没有收,说明对端没回包,通常是 AllowedIPs 或路由问题。
  3. 确认两端 ListenPort 一致且服务端端口在防火墙已放通 UDP。

二、核对密钥与对端配置

  1. 每个 peer 的 PublicKey 必须是对端的私钥对应的公钥,常见错误是填成了自己的公钥。
  2. 服务端 [Peer] 里的 PublicKey 应来自客户端的私钥匙对,别把客户端公钥和服务端公钥搞混。
  3. 确认 PrivateKey 未被截断,复制时少了末尾字符会导致握手静默失败。

三、AllowedIPs 是通断的关键

  1. 客户端 AllowedIPs 若只写对端隧道 IP(如 10.0.0.1/32),则只能访问该 IP;要全流量走隧道需写 0.0.0.0/0
  2. 服务端 AllowedIPs 应写客户端隧道 IP(如 10.0.0.2/32),写错会导致回包不认。
  3. Linux 上确认 wg-quick 已自动添加了路由;用 ip route 验证目标网段指向 wg 接口。

四、NAT 后的持久保活

  1. 客户端在 NAT 后面时,务必加 PersistentKeepalive = 25,否则服务端发来的包会被 NAT 表丢弃。
  2. 检查中间防火墙/UDP 超时,部分运营商对 UDP 空闲连接回收很快,keepalive 能保活。

五、防火墙与 IP 转发

  1. 服务端确认 net.ipv4.ip_forward=1 已开启,否则转发不了。
  2. iptables -A FORWARD 或 nftables 放通 wg 接口转发,并做 MASQUERADE 出网。

技术总结:WireGuard 不通先看 latest handshake,再看 AllowedIPs 与密钥配对。NAT 后记得 PersistentKeepalive,服务端别忘了开 ip_forward 和转发规则。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注