地址变了隧道还能活
移动客户端切换网络或双线出口发生地址漂移时,隧道的源地址会变化,传统协商会因为找不到匹配的安全关联而失效,需要重新建立。支持地址迁移的扩展让已建立的会话在新地址上继续使用:两端在认证阶段通过能力字段声明支持,之后只要有一个方向能到达对方的新地址,就可以更新路径信息而无需重新做完整认证。生效条件比较严格:两端实现都要支持,并且身份不能绑定在具体地址上,否则地址一变身份校验就会失败,机制再好也无济于事。
基本信息
| 适用场景 | 移动终端切换网络、多线路出口的地址漂移 |
|---|---|
| 协商方式 | 在认证阶段交换能力字段声明支持 |
| 前提条件 | 两端都支持,且身份不绑定具体地址 |
| 配置要点 | 本地与远端地址使用通配写法,允许地址变化 |
| 效果 | 地址变化时不重建会话,缩短中断时间 |
典型使用场景
- 远程办公客户端:在无线与移动网络之间切换
- 多线路分支:出口公网地址发生变化
- 临时接入场景:地址由运营商动态分配
- 排障核对:确认协商结果中是否真正启用了迁移能力
- 方案评估:判断现网设备是否具备支持条件
配置与核对
配置与核对
# 连接配置要点:地址使用通配写法以允许变化
# 具体参数名以所用实现的手册为准
# 查看协商结果中的迁移能力声明
swanctl --list-sas | grep -i mobike
# 观察地址变化前后会话是否保持
swanctl --list-sas条件与结果
| 条件 | 结果 | 排查方向 |
|---|---|---|
| 两端都支持且身份不绑地址 | 地址变化后会话保持 | 无需处理 |
| 一端不支持 | 地址变化后会话失效需重建 | 确认对端实现与版本能力 |
| 身份绑定固定地址 | 地址变化后身份校验失败 | 改为不依赖具体地址的身份方式 |
| 地址完全不可达 | 机制无法发挥作用 | 确认至少一个方向可达新地址 |
验证时不要只看配置项是否写上,要实际观察协商结果里是否出现迁移能力的声明,配置存在但未协商成功的情况并不少见。
若身份校验依赖固定地址,地址变化必然失败,这一限制在机制之外,需要从身份设计上解决。