我正在针对嵌入式 Strongswan 服务器试验内置的 Windows IPsec 功能(advfirewall 连接安全规则方法)。我观察到以下行为:
- 第 2 阶段(快速模式)的空闲超时时间约为 25 秒。
- 第 1 阶段(主模式)似乎没有空闲超时,仅受 mmkeylifetime 限制。
我想更改这些值。一个是因为第 2 阶段过期得太快了。当用于 L2TP/IPsec 时,这也会结束 vpn 会话并需要重新拨号。这非常不切实际。对于第 1 阶段,客户端会无限期地每 20 秒使用 NAT-Keepalive 数据包继续 ping 一次,这很浪费,尤其是如果每台客户端电脑都这样做的话。
第 1 阶段的一个解决方法是将 mmkeylifetime 设置为较低值,例如 5 分钟。这会导致 mm SA 过期,并且 keepalive 停止。但是,Windows 客户端随后将停顿整整 25 秒,并将 ESP 数据包发送到虚空中,然后最终建立新的 SA。我很确定这不是它应该的工作方式,但我不知道它为什么会这样表现。
另外,还有netsh advfirewall set global saidletimemin
,其文档指出“在指定的时间段内未看到网络流量后,将删除安全关联”。这要么是完全错误的,要么是劣质的编程导致 NAT-Keepalive 数据包被视为“流量”。