首页/网络/网络设备配置速查/NAT 超时与老化:长连接业务掉线的根因
NAT 与出口31 条

NAT 超时与老化:长连接业务掉线的根因

默认 NAT 老化时间对长连接(SSH 空闲、数据库连接池、SIP 心跳)往往偏短,超时后连接被静默回收,表现为“隔几分钟断一次”。

网络设备配置速查网络更新于 2026-10-13

NAT 超时为什么会断开业务

NAT 设备为每个经过转换的连接维护一条会话表项,表项有老化时间,一段时间没有报文就会过期删除。对短连接业务这没有问题,但长连接业务——空闲的 SSH 会话、数据库连接池、依赖心跳的语音注册——在空闲期内没有流量,表项到期被静默回收,下一条报文再进来时找不到映射,连接就被重建甚至直接失败。用户看到的典型现象是每隔几分钟断一次,而且很有规律。

基本信息

适用场景长连接业务被中途断开
思科命令ip nat translation timeout 与 tcp-timeout、udp-timeout 分开设置
华为/H3C 思路先看会话表里的剩余老化时间,再决定调参或改用应用侧心跳
关键权衡超时过长会积累僵尸会话,超时过短会切断长连接
观察命令display nat session all、show ip nat translations

典型使用场景

  • 数据库连接池:空闲连接被回收后应用反复重连,业务出现间歇性失败
  • 远程登录会话:SSH 空闲几分钟就断开,运维体验差
  • 语音与视频业务:注册依赖周期性心跳,心跳间隔与老化时间冲突时掉线
  • 监控与采集:长轮询连接被中断,采集出现数据缺口
  • 容量治理:会话表接近上限时,既要把无效会话尽早老化,也要保住必要长连接

思科 IOS

思科 IOS
SW-CORE-01(config)# ip nat translation timeout 86400     ! 通用老化时间(秒)
SW-CORE-01(config)# ip nat translation tcp-timeout 86400  ! TCP 连接单独延长
SW-CORE-01(config)# ip nat translation udp-timeout 300     ! UDP 保持较短
SW-CORE-01# show ip nat translations | include tcp
SW-CORE-01# show run | include ip nat translation

华为 VRP 与 H3C

华为 VRP 与 H3C
<Huawei> display nat session all           ! 查看当前会话表
<Huawei> display nat session all verbose   ! 观察剩余老化时间,判断是否偏短
! 会话老化参数随版本与平台不同,用命令补全确认后再改

<H3C> display nat session all
<H3C> display nat session verbose

参数调整怎么权衡

方向影响适用判断
超时调长长连接更稳定会话表容量充足、业务有明显空闲期
超时调短快速回收无效会话会话表接近上限,短连接业务为主
TCP 与 UDP 分开设按业务特性分别优化TCP 业务多空闲、UDP 多短交互
应用侧心跳从根本上维持会话活跃无法修改设备参数或需长期解决
会话表容量决定同时在线连接数上限业务增长时往往先撞到这一项
调整超时前先在设备上看会话表的实际剩余老化时间,用它反推是设备老化太快还是应用侧根本没有保活机制。只看现象直接调参数,容易在错误的方向上花时间。
把超时时间设置得过长会让大量已失效的会话长期占用表项,新连接可能因为表满而建立失败。延长超时需要同时评估会话表容量,必要时从应用侧加心跳包维持连接。

易错点

  • 把超时设得过长:僵尸会话占满会话表,新连接建不起来,问题从断连变成完全不通
  • 不分协议统一设置:TCP 长连接与 UDP 短交互的特性不同,统一值必然有一方受损
  • 只看现象不看会话表:不确认剩余老化时间就调参,可能调了半天方向都是错的
  • 忽略应用侧保活:设备参数只是缓解手段,有心跳机制的业务应从应用侧解决问题

数据来源与参考

  • Cisco IOS ip nat translation 超时参数
  • 华为 VRP NAT 会话老化说明
  • H3C Comware NAT 会话老化说明

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌