Debian 12 WireGuard服务器公网IP变更后,仅重启OpenWrt客户端无法恢复连接的原因咨询
Debian 12 WireGuard服务器公网IP变更后,仅重启OpenWrt客户端无法恢复连接的原因咨询
我来帮你拆解下这个问题的核心原因,本质上和WireGuard的会话管理机制脱不了干系:
服务器端的Peer状态缓存“卡壳”了:WireGuard服务器会把每个客户端的会话数据(比如历史握手记录、关联的连接上下文)存在内存里。当服务器自己的公网IP变更后,它不会主动去清理或更新已有的Peer条目——哪怕客户端已经重启,并用新解析到的服务器IP发起了握手请求,服务器可能还抱着旧的会话状态在等旧IP的数据包,新的握手请求根本没法触发正常的处理流程。而你重启
wg-quick@wg0的时候,相当于彻底清空了服务器端的所有旧会话缓存,重新初始化了Peer列表,这时候客户端的新握手包才能被正常识别和响应。UDP无连接特性的“副作用”:WireGuard基于UDP协议,本身是无连接的,它没有TCP那种主动的连接状态检测和更新机制。服务器端的Peer条目一旦创建,默认会维持之前的关联信息,不会自动检测自身公网IP的变化并同步给所有Peer。客户端重启后虽然能拿到新的服务器IP发握手包,但服务器这边的旧Peer状态还“定格”在之前的配置逻辑里,导致整个握手流程卡壳,从
wg show里就会看到握手未完成的状态。额外的验证小技巧:下次再遇到这种情况,你可以先别着急重启服务器,试试在服务器上执行
wg set wg0 peer <你的OpenWrt客户端公钥> remove,把旧的Peer条目删掉,然后让客户端重新发起连接。如果这时候握手能正常完成,那就实锤是旧会话缓存的问题了。
备注:内容来源于stack exchange,提问作者aleroot
相关产品推荐
相关产品推荐

