1
qakito 2020-03-21 10:37:28 +08:00 1
NAT 表对于 TCP 和 UDP 的表项维持时间是不同的; UDP 表项通常维持在 2 分钟-5 分钟; TCP 表项通常维持在 30 分钟-60 分钟。
通过 TCP 状态(比如 RST 标识等),能够较及时的清除已经断开的 TCP NAT 表项;否则的话,要么失效的 TCP 表项会长时间残留,要么一段时间空闲的 TCP 会话会因中间的 NAT 表项超时断开。 UDP 会话没有状态,只要看到一来一回,conntrack 就是 establish 状态了;对于一个需要长时间保持的 UDP 会话(比如 IPSec ESP 穿越 NAT),如果一段时间内没有流量,NAT 表失效就意味着 UDP 会话断开,因此对于这种情况,通常靠协议发送 keepalive 来维持 NAT 表 TCP 会话有状态,如果没有开启 keepalive 选项,且会话闲置了一段时间,NAT 表超时就会导致 TCP 会话断开(比如 ssh 连接) |