本文档提供有关持续IPSec隧道流功能以及如何在VPN隧道中断时保留TCP流的信息。
本文档的读者应该对VPN的工作原理有基本的了解。有关详细信息,请参阅以下文档:
本文档中的信息基于8.2版及更高版本的思科自适应安全设备(ASA)。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档约定的更多信息,请参考 Cisco 技术提示约定。
如网络图所示,分支机构(BO)通过站点到站点VPN连接到总部(HO)。假设分支机构的最终用户尝试从总部的服务器下载大文件。下载持续数小时。文件传输正常,直到VPN正常运行。但是,当VPN中断时,文件传输将挂起,用户必须在隧道建立后从头重新启动文件传输请求。
本文档使用以下网络设置:
此问题是由于ASA工作方式的内置功能。ASA 监控通过其中的每个连接,并依照应用检查功能在其状态表中维护一个条目。通过 VPN 的加密流量细节以安全关联 (SA) 数据库的形式进行维护。对于本文档的场景,它维护两个不同的流量。一个是VPN网关之间的加密流量,另一个是总部的服务器与分支机构最终用户之间的流量。当 VPN 终止时,删除此特殊 SA 的流量详细信息。但是,此 TCP 连接的 ASA 维护的状态表条目由于无活动而变得过时,进而妨碍下载。这意味着在用户应用终止时,ASA 将仍保留该特殊流量的 TCP 连接。但是,TCP 连接将丢失,并最终在 TCP 空闲计时器到期后超时。
通过引入被称为 Persistent IPSec Tunneled Flows 的功能解决了此问题。Cisco ASA中集成了新命令,以在VPN隧道重新协商时保留状态表信息。命令如下所示:
sysopt connection preserve-vpn-flows
默认情况下禁用该命令。通过启用此功能,当L2L VPN从中断中恢复并重新建立隧道时,Cisco ASA将维护TCP状态表信息。
在此场景中,必须在隧道两端启用此命令。如果它是另一端的非思科设备,则在Cisco ASA上启用此命令应足够。如果在隧道已处于活动状态时启用该命令,则必须清除并重新建立隧道,此命令才能生效。有关清除和重新建立隧道的详细信息,请参阅清除安全关联。
Cisco ASA软件版本8.0.4及更高版本中已引入此功能。仅以下类型的VPN支持此功能:
LAN到LAN隧道
网络扩展模式(NEM)中的远程访问隧道
以下类型的VPN不支持此功能:
客户端模式下的IPSec远程访问隧道
AnyConnect或SSL VPN隧道
以下平台上不存在此功能:
软件版本为6.0的Cisco PIX
思科VPN集中器
Cisco IOS®平台
启用此功能不会在ASA的内部CPU处理上造成任何额外过载,因为它将保持设备在隧道开启时具有的相同TCP连接。
注意:此命令仅适用于TCP连接。它对UDP流量没有任何影响。UDP连接将根据配置的超时时间超时。
注意:使用命令查找工具(仅限注册客户)可获取有关本节中使用的命令的详细信息。
本部分提供有关如何配置本文档所述功能的信息。
本文档使用以下配置:
CiscoASA
以下是VPN隧道一端的Cisco ASA防火墙运行配置输出示例:
CiscoASA |
---|
ASA Version 8.2(1) ! hostname CiscoASA domain-name example.com enable password <removed> passwd <removed> names ! interface Ethernet0/0 speed 100 duplex full nameif outside security-level 0 ip address 209.165.201.2 255.255.255.248 ! interface Ethernet0/1 nameif inside security-level 100 ip address 10.224.9.5 255.255.255.0 ! interface Ethernet0/2 shutdown no nameif no security-level no ip address ! ! interface Management0/0 nameif management security-level 100 ip address 10.224.14.10 255.255.255.0 ! boot system disk0:/asa822-k8.bin ftp mode passive !---Output Suppressed ! access-list test extended permit ip 10.224.228.0 255.255.255.128 any access-list test extended permit ip 10.224.52.0 255.255.255.128 any access-list 100 extended permit ip 10.224.228.0 255.255.255.128 any access-list 100 extended permit ip 10.224.52.0 255.255.255.128 any access-list inside_access_out extended permit ip any 10.224.228.0 255.255.255.1 ! !---Output Suppressed global (outside) 1 interface nat (inside) 0 access-list test nat (inside) 1 10.224.10.0 255.255.255.0 ! !---Output Suppressed route inside 10.0.0.0 255.0.0.0 10.224.9.1 1 route outside 0.0.0.0 255.255.255.255 209.165.201.1 1 timeout xlate 3:00:00 timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02 timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00 timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00 timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute timeout tcp-proxy-reassembly 0:01:00 dynamic-access-policy-record DfltAccessPolicy ! !---Output Suppressed http server idle-timeout 40 http 10.224.3.0 255.255.255.0 management http 0.0.0.0 0.0.0.0 inside ! snmp-server enable traps snmp authentication linkup linkdown coldstart ! !--- To preserve and resume stateful (TCP) tunneled IPsec LAN-to-LAN traffic within the timeout period after the tunnel drops and recovers. sysopt connection preserve-vpn-flows service resetoutside ! crypto ipsec transform-set ESP-AES-256-MD5 esp-aes-256 esp-md5-hmac crypto ipsec transform-set testSET esp-3des esp-md5-hmac crypto map map1 5 match address 100 crypto map map1 5 set peer 209.165.200.10 crypto map map1 5 set transform-set testSET crypto map map1 interface outside crypto isakmp enable outside crypto isakmp policy 5 authentication pre-share encryption 3des hash sha group 2 lifetime 86400 crypto isakmp policy 10 authentication pre-share encryption des hash sha group 2 lifetime 86400 !---Output Suppressed ! telnet timeout 5 ssh timeout 5 console timeout 0 threat-detection basic-threat threat-detection statistics access-list ! !---Output Suppressed ! tunnel-group 209.165.200.10 type ipsec-l2l tunnel-group 209.165.200.10 ipsec-attributes pre-shared-key * !---Output Suppressed class-map inspection_default match default-inspection-traffic ! policy-map type inspect dns preset_dns_map parameters message-length maximum 512 policy-map global_policy class inspection_default inspect dns preset_dns_map inspect ftp inspect h323 h225 inspect h323 ras inspect rsh inspect rtsp inspect esmtp inspect sqlnet inspect skinny inspect sunrpc inspect xdmcp inspect sip inspect netbios inspect tftp ! service-policy global_policy global prompt hostname state Cryptochecksum:5c228e7131c169f913ac8198ecf8427e : end |
默认情况下,此功能被禁用。在ASA的CLI中使用以下命令可启用此功能:
CiscoASA(config)#sysopt connection preserve-vpn-flows
可使用以下命令查看此信息:
CiscoASA(config)#show run all sysopt no sysopt connection timewait sysopt connection tcpmss 1380 sysopt connection tcpmss minimum 0 sysopt connection permit-vpn sysopt connection reclassify-vpn sysopt connection preserve-vpn-flows no sysopt nodnsalias inbound no sysopt nodnsalias outbound no sysopt radius ignore-secret no sysopt noproxyarp outside
使用ASDM时,可通过以下路径启用此功能:
Configuration > Remote Access VPN > Network(Client)Access > Advanced > IPsec > System Options。
然后,选中当隧道丢弃网络扩展模式(NEM)时保留状态VPN流量。
使用本部分可确认配置能否正常运行。
命令输出解释程序(仅限注册用户)(OIT) 支持某些 show 命令。使用 OIT 可查看对 show 命令输出的分析。
show asp table vpn-context detail — 显示加速安全路径的VPN上下文内容,这可能有助于您排除故障。以下是启用永久IPSec隧道流功能时,show asp table vpn-context命令的输出示例。请注意,它包含特定的PRESERVE标志。
CiscoASA(config)#show asp table vpn-context VPN CTX=0x0005FF54, Ptr=0x6DE62DA0, DECR+ESP+PRESERVE, UP, pk=0000000000, rk=0000000000, gc=0 VPN CTX=0x0005B234, Ptr=0x6DE635E0, ENCR+ESP+PRESERVE, UP, pk=0000000000, rk=0000000000, gc=0
在本节中,为避免隧道摆动提供了一些解决方法。此外,还详细介绍了解决方法的优缺点。
通过将IKE生存期值保持为零,可以使VPN隧道保持活动状态无限时间,但不能重新协商。有关SA的信息由VPN对等体保留,直到生命期到期。通过将值赋为零,可以使此IKE会话永久持续。通过这种方式,您可以避免在隧道重新加密期间出现间歇性流断开问题。这可以通过以下命令完成:
CiscoASA(config)#crypto isakmp policy 50 lifetime 0
但是,这在降低VPN隧道的安全级别方面有一个特定缺点。在指定的时间间隔内重新输入IKE会话,每次都会根据修改的加密密钥为VPN隧道提供更高的安全性,并且任何入侵者都难以解码信息。
注意:禁用IKE生存期并不意味着隧道根本不重新生成密钥。但是,IPSec SA将在指定的时间间隔内重新生成密钥,因为该时间间隔不能设置为零。IPSec SA允许的最小生存期值为120秒,最大为214783647秒。有关此的详细信息,请参阅IPSec SA生存期。
当配置中未使用此功能时,当VPN隧道中断时,Cisco ASA返回此日志消息:
%ASA-6-302014:拆除外部的TCP连57983:XX.XX.XX.XX/80到内部的TCP连接:10.0.0.100/1135持续0:00:36字节53947隧道已被拆除
您可以看到,原因是隧道已被拆除。
注意:必须启用第6级日志记录才能查看此消息。
当隧道退回时,将使用preserve-vpn-flow选项。这允许先前的TCP流保持打开状态,因此当隧道恢复时,可以使用相同的流。
当使用sysopt connection reclassify-vpn命令时,它会清除任何与隧道流量相关的先前流,并将流分类以通过隧道。当已创建与VPN无关的TCP流时,会使用reclassify-vpn选项。这会造成流量在VPN建立后不流经隧道的情况。有关此项的详细信息,请参阅sysopt reclassify-vpn。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
27-May-2011 |
初始版本 |