12-IPSec配置
本章节下载 (802.02 KB)
目 录
1.7.1 采用手工方式建立保护IPv4报文的IPsec安全隧道
1.7.2 采用IKE方式建立保护IPv4报文的IPsec安全隧道
1.7.3 采用IKE方式建立保护IPv6报文的IPsec安全隧道
1.7.4 使用IPsec虚拟隧道接口建立IPsec安全隧道
若无特殊说明,本文中的IKE均指第1版本的IKE协议。
IPsec(IP Security)是IETF制定的三层隧道加密协议,它为Internet上传输的数据提供了高质量的、可互操作的、基于密码学的安全保证,是一种传统的实现三层VPN(Virtual Private Network,虚拟专用网络)的安全技术。特定的通信方之间通过建立IPsec隧道来传输用户的私有数据,并在IP层提供了以下安全服务:
· 数据机密性(Confidentiality):IPsec发送方在通过网络传输包前对包进行加密。
· 数据完整性(Data Integrity):IPsec接收方对发送方发送来的包进行认证,以确保数据在传输过程中没有被篡改。
· 数据来源认证(Data Authentication):IPsec在接收端可以认证发送IPsec报文的发送端是否合法。
· 防重放(Anti-Replay):IPsec接收方可检测并拒绝接收过时或重复的报文。
IPsec具有以下优点:
· 支持IKE(Internet Key Exchange,互联网密钥交换),可实现密钥的自动协商功能,减少了密钥协商的开销。可以通过IKE建立和维护SA(Security Association,安全联盟)的服务,简化了IPsec的使用和管理。
· 所有使用IP协议进行数据传输的应用系统和服务都可以使用IPsec,而不必对这些应用系统和服务本身做任何修改。
· 对数据的加密是以数据包为单位的,而不是以整个数据流为单位,这不仅灵活而且有助于进一步提高IP数据包的安全性,可以有效防范网络攻击。
IPsec协议不是一个单独的协议,它给出了应用于IP层上网络数据安全的一整套体系结构,包括网络认证协议AH(Authentication Header,认证头)、ESP(Encapsulating Security Payload,封装安全载荷)、IKE(Internet Key Exchange,互联网密钥交换)和用于网络认证及加密的一些算法等。其中,AH协议和ESP协议用于提供安全服务,IKE协议用于密钥交换。关于IKE的详细介绍请参见“2 IKE”,本节不做介绍。
IPsec提供了两种安全机制:认证和加密。认证机制使IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。加密机制通过对数据进行加密运算来保证数据的机密性,以防数据在传输过程中被窃听。
AH协议和ESP协议的功能及工作原理如下:
· AH协议(IP协议号为51)定义了认证的应用方法,提供数据源认证、数据完整性校验和防报文重放功能,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。AH的工作原理是在每一个数据包上添加一个身份验证报文头,此报文头插在标准IP包头后面,对数据提供完整性保护。可选择的认证算法有MD5(Message Digest)、SHA-1(Secure Hash Algorithm)等。
· ESP协议(IP协议号为50)定义了加密和可选认证的应用方法,提供加密、数据源认证、数据完整性校验和防报文重放功能。ESP的工作原理是在每一个数据包的标准IP包头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾。与AH协议不同的是,ESP将需要保护的用户数据进行加密后再封装到IP包中,以保证数据的机密性。常见的加密算法有DES、3DES、AES等。同时,作为可选项,用户可以选择MD5、SHA-1算法保证报文的完整性和真实性。
在实际进行IP通信时,可以根据实际安全需求同时使用这两种协议或选择使用其中的一种。AH和ESP都可以提供认证服务,不过,AH提供的认证服务要强于ESP。同时使用AH和ESP时,设备支持的AH和ESP联合使用的方式为:先对报文进行ESP封装,再对报文进行AH封装,封装之后的报文从内到外依次是原始IP报文、ESP头、AH头和外部IP头。
IPsec在两个端点之间提供安全通信,端点被称为IPsec对等体。
SA是IPsec的基础,也是IPsec的本质。SA是通信对等体间对某些要素的约定,例如,使用哪种协议(AH、ESP还是两者结合使用)、协议的封装模式(传输模式和隧道模式)、加密算法(DES、3DES和AES)、特定流中保护数据的共享密钥以及密钥的生存周期等。建立SA的方式有手工配置和IKE自动协商两种。
SA是单向的,在两个对等体之间的双向通信,最少需要两个SA来分别对两个方向的数据流进行安全保护。同时,如果两个对等体希望同时使用AH和ESP来进行安全通信,则每个对等体都会针对每一种协议来构建一个独立的SA。
SA由一个三元组来标识,这个三元组包括SPI(Security Parameter Index,安全参数索引)、目的IP地址、安全协议号(AH或ESP)。
SPI是用于唯一标识SA的一个32比特数值,它在AH和ESP头中传输。在手工配置SA时,需要手工指定SPI的取值。使用IKE协商产生SA时,SPI将随机生成。
通过IKE协商建立的SA具有生存周期,手工方式建立的SA永不老化。IKE协商建立的SA的生存周期有两种定义方式:
· 基于时间的生存周期,定义了一个SA从建立到失效的时间;
· 基于流量的生存周期,定义了一个SA允许处理的最大流量。
生存周期到达指定的时间或指定的流量,SA就会失效。SA失效前,IKE将为IPsec协商建立新的SA,这样,在旧的SA失效前新的SA就已经准备好。在新的SA开始协商而没有协商好之前,继续使用旧的SA保护通信。在新的SA协商好之后,则立即采用新的SA保护通信。
IPsec有如下两种工作模式:
· 隧道(tunnel)模式:用户的整个IP数据包被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被封装在一个新的IP数据包中。通常,隧道模式应用在两个安全网关之间的通讯。
· 传输(transport)模式:只是传输层数据被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被放置在原IP包头后面。通常,传输模式应用在两台主机之间的通讯,或一台主机和一个安全网关之间的通讯。
不同的安全协议在tunnel和transport模式下的数据封装形式如图1-1所示。
(1) 认证算法
认证算法的实现主要是通过杂凑函数。杂凑函数是一种能够接受任意长的消息输入,并产生固定长度输出的算法,该输出称为消息摘要。IPsec对等体计算摘要,如果两个摘要是相同的,则表示报文是完整未经篡改的。IPsec使用两种认证算法:
· MD5:MD5通过输入任意长度的消息,产生128bit的消息摘要。
· SHA-1:SHA-1通过输入长度小于2的64次方bit的消息,产生160bit的消息摘要。
MD5算法的计算速度比SHA-1算法快,而SHA-1算法的安全强度比MD5算法高。
(2) 加密算法
加密算法实现主要通过对称密钥系统,它使用相同的密钥对数据进行加密和解密。目前设备的IPsec实现三种加密算法:
· DES(Data Encryption Standard):使用56bit的密钥对一个64bit的明文块进行加密。
· 3DES(Triple DES):使用三个56bit的DES密钥(共168bit密钥)对明文进行加密。
· AES(Advanced Encryption Standard):使用128bit、192bit或256bit密钥长度的AES算法对明文进行加密。
这三个加密算法的安全性由高到低依次是:AES、3DES、DES,安全性高的加密算法实现机制复杂,运算速度慢。对于普通的安全要求,DES算法就可以满足需要。
有如下几种协商方式建立SA:
· 手工方式(manual)配置比较复杂,创建SA所需的全部信息都必须手工配置,而且不支持一些高级特性(例如定时更新密钥),但优点是可以不依赖IKE而单独实现IPsec功能。
· IKE自动协商(isakmp)方式相对比较简单,只需要配置好IKE协商安全策略的信息,由IKE自动协商来创建和维护SA。
· GDOI方式用于构建Group Domain VPN(Group Domain Virtual Private Network,组加密传输虚拟专用网络),SA和密钥由KS(Key Server,密钥服务器)集中管理并下发给GM(Group Member,组成员)。
当与之进行通信的对等体设备数量较少时,或是在小型静态环境中,手工配置SA是可行的。对于中、大型的动态网络环境中,推荐使用IKE协商建立SA。
安全隧道是建立在本端和对端之间可以互通的一个通道,它由一对或多对SA组成。
IPsec虚拟隧道接口是一种支持路由的三层逻辑接口,它可以支持动态路由协议,所有路由到IPsec虚拟隧道接口的报文都将进行IPsec保护,同时还可以支持对组播流量的保护。使用IPsec虚拟隧道接口建立IPsec隧道具有以下优点:
· 简化配置:通过路由来确定对哪些数据流进行IPsec保护。与通过ACL指定数据流范围的方式相比,这种方式简化了用户在部署IPsec安全策略时配置上的复杂性,使得IPsec的配置不会受到网络规划的影响,增强了网络规划的可扩展性,降低了网络维护成本。
· 减少开销:在保护远程接入用户流量的组网应用中,在IPsec虚拟隧道接口处进行报文封装,与IPsec over GRE或者IPsec over L2TP方式的隧道封装相比,无需额外为入隧道流量加封装GRE头或者L2TP头,减少了报文封装的层次,节省了带宽。
· 业务应用更灵活:IPsec虚拟隧道接口在实施过程中明确地区分出“加密前”和“加密后”两个阶段,用户可以根据不同的组网需求灵活选择其它业务(例如NAT、QoS)实施的阶段。例如,如果用户希望对IPsec封装前的报文应用QoS,则可以在IPsec虚拟隧道接口上应用QoS策略;如果希望对IPsec封装后的报文应用QoS,则可以在物理出接口上应用QoS策略。
IPsec虚拟隧道接口对报文的加封装/解封装发生在隧道接口上。用户流量到达实施IPsec配置的设备后,需要IPsec处理的报文会被转发到IPsec虚拟隧道接口上进行加封装/解封装。
如图1-2所示,IPsec虚拟隧道接口对报文进行加封装的过程如下:
图1-2 IPsec虚接口隧道加封装原理图
(1) Router将从入接口接收到的IP明文送到转发模块进行处理;
(2) 转发模块依据路由查询结果,将IP明文发送到IPsec虚拟隧道接口进行加封装:原始IP报文被封装在一个新的IP报文中,新IP头中的源地址和目的地址分别为隧道接口的源地址和目的地址;
(3) IPsec虚拟隧道接口完成对IP明文的加封装处理后,将IP密文送到转发模块进行处理;
(4) 转发模块进行第二次路由查询后,将IP密文通过隧道接口的实际物理出接口转发出去。
如图1-3所示,IPsec虚拟隧道接口对报文进行解封装的过程如下:
图1-3 IPsec虚接口隧道解封装原理图
(1) Router将从入接口接收到的IP密文送到转发模块进行处理;
(2) 转发模块识别到此IP密文的目的地为本设备的隧道接口地址且IP协议号为AH或ESP时,会将IP密文送到相应的IPsec虚拟隧道接口进行解封装:将IP密文的外层IP头去掉,对内层IP报文进行解密处理;
(3) IPsec虚拟隧道接口完成对IP密文的解封装处理之后,将IP明文重新送回转发模块处理;
(4) 转发模块进行第二次路由查询后,将IP明文从隧道的实际物理出接口转发出去。
从上面描述的加封装/解封装过程可见,IPsec虚拟隧道接口将报文的IPsec处理过程区分为两个阶段:“加密前”和“加密后”。需要应用到加密前的明文上的业务(例如NAT、QoS),可以应用到隧道接口上;需要应用到加密后的密文上的业务,则可以应用到隧道接口对应的物理出接口上。
使用IPsec保护IPv6路由协议是指,使用AH/ESP协议对IPv6路由协议报文进行加/解封装处理,并为其提供认证和加密的安全服务,目前支持OSPFv3、IPv6 BGP、RIPng路由协议。
IPsec对IPv6路由协议报文进行保护的处理方式和目前基于接口的IPsec处理方式不同,是基于业务的IPsec,即IPsec保护某一业务的所有报文。该方式下,设备产生的所有需要IPsec保护的IPv6路由协议报文都要被进行加封装处理,而设备接收到的不受IPsec保护的以及解封装(解密或验证)失败的IPv6路由协议报文都要被丢弃。
在基于接口的IPsec处理方式下,设备对配置了IPsec安全功能的接口上发送的每个报文都要判断是否进行IPsec处理。目前,该方式有两种实现,一种是基于ACL的IPsec,只要到达接口的报文与该接口的IPsec安全策略中的ACL规则匹配,就会受到IPsec保护;另一种是基于路由的IPsec,即IPsec虚拟隧道接口方式,只要被路由到虚拟隧道接口上的报文都会受到IPsec保护。
相对于基于接口的IPsec,基于业务的IPsec既不需要ACL来限定要保护的流的范围,也不需要指定IPsec隧道的起点与终点,IPsec安全策略仅与具体的业务绑定,不管业务报文从设备的哪个接口发送出去都会被IPsec保护。
由于IPsec的密钥交换机制仅仅适用于两点之间的通信保护,在广播网络一对多的情形下,IPsec无法实现自动交换密钥,因此必须使用手工配置密钥的方式。同样,由于广播网络一对多的特性,要求各设备对于接收、发送的报文均使用相同的SA参数(相同的SPI及密钥)。因此,目前仅支持手工安全策略生成的SA对IPv6路由协议报文进行保护。
如图1-4所示,某企业在企业分支与企业总部之间的所有流量通过IPsec进行保护,当企业分支众多时,企业总部网关需要配置大量静态路由,将总部发往分支的数据引到应用IPsec策略的接口上来,另外,当企业分支内部网络规划发生变化时,同时需要调整总部网关上的静态路由,工作量巨大且容易出现配置错误。
RRI(Reverse Route Injection,反向路由注入)功能的出现,可以很好得解决这些问题。RRI是一种自动添加到达IPsec VPN私网或IPsec隧道网关静态路由的机制,可实现为受IPsec保护的流量自动添加静态路由的功能。
如上IPsec VPN组网中,在总部网关设备Device A上配置RRI功能后,Device A上将自动添加一条到达分支所在私网网段192.168.2.0/24的路由,等价于在其上手工配置如下静态路由:
ip route-static 192.168.2.0 255.255.255.0 2.2.2.2
通过RRI创建的路由表项可以在路由表中查询到,其目的地址为受保护的对端网络,下一跳地址为IPsec隧道对端地址或指定的地址,它使得发往对端的流量将被强制通过IPsec加密后转发。
RRI创建的静态路由和手工配置的静态路由一样,可以向内网设备进行广播,允许内网设备选择合适的路由对IPsec VPN流量进行转发。该功能在企业总部有多台网关设备的组网应用中,如进行负载均衡、双机热备的情况下,甚至是IPsec VPN流量通过默认网关无法到达对端网关设备的时候,都能及时生成新的路由来转发IPsec VPN流量,因此非常有用。
在MPLS L3VPN组网环境中,配置了RRI的IPsec VPN网关设备能够依据应用IPsec策略的接口所绑定的VPN实例,在相应VPN实例的IP路由表中添加静态路由。
在大规模组网中,这种自动添加静态路由的机制可以简化用户配置,减少在企业总部网关上配置静态路由的工作量,并且可以根据IPsec SA的创建和删除进行静态路由的动态增加和删除,大大增强VPN网络的可扩展性。
与IPsec相关的协议规范有:
· RFC2401:Security Architecture for the Internet Protocol
· RFC2402:IP Authentication Header
· RFC2406:IP Encapsulating Security Payload
· RFC4552:Authentication/Confidentiality for OSPFv3
· RFC4301:Security Architecture for the Internet Protocol
· RFC4302:IP Authentication Header
· RFC4303:IP Encapsulating Security Payload (ESP)
IPsec隧道的建立有多种配置方式,请根据实际组网中对IPsec隧道的使用需求来选择配置方式:
· 基于ACL方式:由ACL来指定要保护的数据流范围,通过配置安全策略并将安全策略绑定在实际的物理接口上来完成IPsec的配置。这种方式可以利用ACL的丰富配置功能,结合实际的组网环境灵活制定IPsec安全策略。具体配置请参见“1.3 基于ACL建立IPsec安全隧道”。
· 基于路由方式:即基于IPsec虚拟隧道接口建立IPsec安全隧道。这种方式下,由路由来选择需要保护的数据流,通过配置安全框架并在IPsec虚拟隧道接口上应用安全框架来完成IPsec的配置。这种方式简化了网络配置及网络管理上的复杂度,增强了大型VPN网络的可扩展性。具体配置请参见“1.4 基于IPsec虚拟隧道接口建立IPsec安全隧道”。
· 基于业务方式:IPsec安全策略直接与具体的业务绑定,保护某一业务的所有报文,无需ACL或者路由来指定要保护的数据流。目前,支持对IPv6路由协议的保护。通过配置手工方式的IPsec安全策略,并在IPv6路由协议上应用安全策略来完成IPsec的配置。具体配置请参见“1.5 配置IPsec保护IPv6路由协议”。
在IPv4网络和IPv6网络中,建立IPsec隧道的配置步骤是相同的,均可支持基于ACL方式和基于路由方式。
基于ACL建立IPsec安全隧道的基本配置思路如下:
(1) 通过配置访问控制列表,用于匹配需要保护的数据流;
(2) 通过配置IPsec安全提议,指定安全协议、认证算法和加密算法、封装模式等;
(3) 通过配置IPsec安全策略,将要保护的数据流和IPsec安全提议进行关联(即定义对何种数据流实施何种保护),并指定SA的协商方式、对等体IP地址(即保护路径的起/终点)、所需要的密钥和SA的生存周期等;
(4) 最后在设备接口上应用IPsec安全策略即可完成IPsec隧道的配置。
表1-1 IPsec配置任务简介
配置任务 |
说明 |
详细配置 |
|
IPsec基本配置 |
配置访问控制列表 |
必选 |
|
配置IPsec安全提议 |
|||
配置IPsec安全策略 |
|||
在接口上应用IPsec安全策略组 |
|||
使能加密引擎 |
可选 |
||
使能解封装后IPsec报文的ACL检查开关 |
可选 |
||
配置IPsec抗重放功能 |
可选 |
||
配置报文信息预提取功能 |
可选 |
||
配置IPsec无效SPI恢复功能 |
可选 |
||
配置IPsec反向路由注入功能 |
可选 |
||
使能加密前/加密后分片功能 |
可选 |
通常情况下,由于IKE协议采用UDP的500端口进行通信,IPsec的AH和ESP协议分别使用51或50号协议来工作,因此为保障IKE和IPsec的正常运行,需要确保应用了IKE和IPsec配置的接口上没有禁止掉属于以上端口和协议的流量。
ACL(Access Control List,访问控制列表)是用来实现流识别功能的。网络设备为了过滤报文,需要配置一系列的匹配条件对报文进行分类,当设备的端口接收到报文后,即根据当前端口上应用的ACL规则对报文进行分析、识别之后,根据预先设定的策略对报文进行不同的处理。
IPsec通过配置ACL来定义需要过滤的数据流。在IPsec的应用中,ACL规则中的permit关键字表示与之匹配的流量需要被IPsec保护,而规则中的deny关键字则表示与之匹配的那些流量不需要保护。一个ACL中可以配置多条规则,首个与数据流匹配上的规则决定了对该数据流的处理方式,如果该规则为permit,则该规则就定义了需要建立SA来保护的数据流量的范围。
在IPsec策略中定义的ACL既可用于过滤接口入方向数据流,也可用于过滤接口出方向数据流。
· 设备出入方向的数据流都使用IPsec策略中定义的ACL规则来做匹配依据。具体是,出方向的数据流正向匹配ACL规则,入方向的数据流反向匹配ACL规则。例如,对于应用于IPsec策略中的某ACL规则:rule 0 permit ip source 1.1.1.0 0.0.0.255 destination 2.2.2.0 0.0.0.255,设备使用其正向过滤出方向上从1.1.1.0/24网段到2.2.2.0/24网段的数据流,反向过滤入方向上从2.2.2.0/24网段到1.1.1.0/24网段的数据流。
· 在出方向上,与ACL的permit规则匹配的报文将被IPsec保护,未匹配上任何规则或与deny规则匹配上的报文将不被IPsec保护。
· 在入方向上,与ACL的permit规则匹配上的未被IPsec保护的报文将被丢弃,目的地址为本机的IPsec报文将被进行解封装处理,解封装后的IP报文若能与ACL的permit规则匹配上则采取后续处理,否则丢弃。
需要注意的是:
· 仅对确实需要IPsec保护的数据流配置permit规则,避免盲目地使用关键字any。这是因为,在一个permit规则中使用any关键字就代表所有指定范围上出方向的流量都需要被IPsec保护,所有对应入方向上被保护的IPsec报文将被接收并处理,入方向上未被保护的IPsec报文将被丢弃。这种情况下,一旦入方向收到的某流量是未被IPsec保护的,那么该流量就会被丢弃,这会造成一些本不需要IPsec处理的流量丢失,影响正常的业务流传输。
· 合理使用deny规则,尤其是在一个安全策略下有多条优先级不同的子安全策略时,避免本应该与优先级较低的子安全策略的ACL permit规则匹配而被IPsec保护的出方向报文,因为先与优先级较高的子安全策略的ACL deny规则匹配上,而在接收端被当作未被IPsec保护的报文丢弃。
deny规则的错误配置示例:(以下配置信息仅截取了ACL的相关内容,其它步骤省略)
Router A连接的1.1.2.0/24网段到Router B连接的3.3.3.0/24网段之间的报文,在应用了IPsec策略test的出接口上,优先与顺序号为1的安全策略进行匹配,并匹配上了ACL 3000的rule 1 deny ip,因此Router A认为它不需要IPsec保护,到达Router B后将被丢弃。
Router A上的配置如下:
acl number 3000
rule 0 permit ip source 1.1.1.0 0.0.0.255 destination 2.2.2.0 0.0.0.255
rule 1 deny ip
acl number 3001
rule 0 permit ip source 1.1.2.0 0.0.0.255 destination 3.3.3.0 0.0.0.255
rule 1 deny ip
#
ipsec policy test 1 isakmp
security acl 3000
ike-peer aa
transform-set 1
#
ipsec policy test 2 isakmp
security acl 3001
ike-peer bb
transform-set 1
Router B上的配置如下:
acl number 3001
rule 0 permit ip source 3.3.3.0 0.0.0.255 destination 1.1.2.0 0.0.0.255
rule 1 deny ip
#
ipsec policy test 1 isakmp
security acl 3001
ike-peer aa
transform-set 1
为保证SA的成功建立,建议将IPsec对等体上的访问控制列表镜像配置,即保证两端要保护的数据流范围是镜像的。例如,图1-5中Router A和Router B上的ACL配置都是完全镜像对称的,因此用于保护主机Host A与主机Host C之间、子网Network 1与子网Network 2之间流量的SA均可成功建立。
若IPsec对等体上的访问控制列表配置非镜像,那么只有一种情况下,SA的协商是可以建立的。这种情况就是,一端的访问控制列表规则定义的范围是另外一端的子集。如图1-6所示,Router A上的访问控制列表允许的范围(Host A->Host C)是Router B上访问控制列表(Network 2->Network 1)的子集。
但需要注意的是,在这种ACL配置下,并不是任何一端发起的SA协商都可以成功,仅当保护范围小(细粒度)的一端向保护范围大(粗粒度)的一端发起的协商才能成功,反之则协商失败。这是因为,协商响应方要求协商发起方发送过来的数据必须在响应方可以接受的范围之内。其结果就是,从细粒度一端向粗粒度一端发起的协商是可以成功的,例如Host A->Host C;从粗粒度一方向细粒度一方发起的协商是不能成功的,例如Host C->Host B、Host D->Host A等。
目前,设备支持的数据流的保护方式包括以下两种:
· 标准方式:一条隧道保护一条数据流。ACL中的每一个规则对应的数据流都会由一条单独创建的隧道来保护;
· 聚合方式:一条隧道保护ACL中定义的所有数据流。ACL中的所有规则对应的数据流只会由一条创建的隧道来保护。该方式目前仅在一端设备使用Comware V3软件版本,而另一端使用Comware V5软件版本时使用,且仅在IKE协商安全策略的情况下可配。
· ACL的具体配置请参见“ACL和QoS配置指导”中的“ACL”。
· 若在接口上同时使能IPsec和QoS,同一个IPsec安全联盟的数据流如果被QoS分类进入不同队列,会导致部分报文发送乱序。由于IPsec具有防重放功能,IPsec入方向上对于防重放窗口之外的报文会进行丢弃,从而导致丢包现象。因此当IPsec与QoS结合使用时,必须保证IPsec分类与QoS分类规则配置保持一致。IPsec的分类规则完全由引用的ACL规则确定,QoS分类规则的配置请参考“ACL和QoS配置指导”中的“QoS配置方式”。
IPsec安全提议是IPsec安全策略或者IPsec安全框架的一个组成部分,它用于保存IPsec需要使用的特定安全协议、加密/认证算法等,为IPsec协商SA提供各种安全参数。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
创建IPsec安全提议,并进入IPsec安全提议视图 |
ipsec transform-set transform-set-name |
必选 缺省情况下,没有任何IPsec安全提议存在 系统中最多可以创建10000个IPsec安全提议 |
|
配置IPsec安全提议采用的安全协议 |
transform { ah | ah-esp | esp } |
可选 缺省情况下,采用ESP协议 |
|
配置安全算法 |
配置ESP协议采用的加密算法 |
esp encryption-algorithm { 3des | aes-cbc-128 | aes-cbc-192 | aes-cbc-256 | des } |
三者至少选其一 缺省情况下,未指定安全算法 对于配置ESP协议采用的加密算法,在FIPS模式下,设备不支持DES和3DES算法,缺省加密算法为AES-128;在非FIPS模式下,缺省加密算法为DES 对于配置ESP协议采用的认证算法,在FIPS模式下,设备不支持MD5算法,缺省认证算法为SHA-1;在非FIPS模式下,缺省认证算法为MD5。 对于配置AH协议采用的认证算法,在FIPS模式下,设备不支持MD5算法,缺省认证算法为SHA-1,在非FIPS模式下,缺省认证算法为MD5。 在FIPS模式下,必须同时设置加密算法和认证算法 只有选择了相应的IPsec安全协议后,该安全协议所需的安全算法才可配置。例如,如果使用transform命令选择了esp,那么只有ESP所需的安全算法才可配置,而AH所需的安全算法则不能配置。ESP协议允许对报文同时进行加密和认证,或只加密,或只认证。 |
配置ESP协议采用的认证算法 |
esp authentication-algorithm { md5 | sha1 } |
||
配置AH协议采用的认证算法 |
ah authentication-algorithm { md5 | sha1 } |
||
配置安全协议对IP报文的封装形式 |
encapsulation-mode { transport | tunnel } |
可选 缺省情况下,安全协议采用隧道模式对IP报文进行封装 传输模式必须应用于数据流的源地址和目的地址与安全隧道两端地址相同的情况下 若要配置应用于IPv6路由协议的手工安全策略,则该安全策略引用的安全提议仅支持传输模式的封装模式 |
可对IPsec安全提议进行修改,但对已协商成功的SA,新修改的IPsec安全提议并不起作用,即SA仍然使用原来的IPsec安全提议(除非使用reset ipsec sa命令重置),只有新协商的SA将使用新的IPsec安全提议。
IPsec安全策略规定了对什么样的数据流采用什么样的安全提议。一条IPsec安全策略由“名字”和“顺序号”共同唯一确定。
IPsec安全策略分为以下几种类型:
· 手工配置方式:需要用户手工配置密钥、SPI等参数,在隧道模式下还需要手工配置安全隧道两个端点的IP地址。
· IKE协商方式:由IKE自动协商生成各参数。
· GDOI方式:由GM从KS上获取所在GDOI组的安全策略信息(保护的数据流信息、加密算法、认证算法、封装模式等)。
(1) 配置准备
手工配置IPsec安全策略时,除完成该安全策略需要引用的访问控制列表及IPsec安全提议的配置之外,为保证SA的协商成功,安全隧道两端的配置必须符合以下要求:
· IPsec安全策略引用的IPsec安全提议应采用相同的安全协议、安全算法和报文封装形式;
· 当前端点的对端地址与对端的本端地址应保持一致;
· 应分别设置出方向SA和入方向SA的参数,且保证SA的唯一性,即不同SA必须对应不同的SPI;
· 本端和对端SA的SPI及密钥必须是完全匹配的。即,本端的入方向SA的SPI及密钥必须和对端的出方向SA的SPI及密钥相同;本端的出方向SA的SPI及密钥必须和对端的入方向SA的SPI及密钥相同;
· 两端SA使用的密钥应当以相同的方式输入。即,一端以字符串方式输入密钥,另一端必须也以字符串方式输入密钥。而且,任何一端出入方向的SA使用的密钥也应当以相同的方式输入。
对于要应用于IPv6路由协议的IPsec安全策略,无需配置访问控制列表和隧道地址,但是应该符合以下要求:
· 本端出方向SA的SPI及密钥必须和本端入方向SA的SPI及密钥保持一致;
· 同一个范围内的,所有设备上的安全策略所引用的安全提议采用的安全协议、安全算法和报文封装形式要相同,而且所有设备上的SA的SPI及密钥均要保持一致。该范围与协议相关:对于OSPFv3,它是OSPFv3邻居之间或一个OSPFv3区域内;对于RIPng,它是RIPng直连邻居之间或一个RIPng进程内;对于IPv6 BGP,它是IPv6 BGP邻居之间或一个对等体组内。
(2) 手工配置IPsec安全策略
表1-3 手工配置IPsec安全策略
操作 |
命令 |
说明 |
||
进入系统视图 |
system-view |
- |
||
用手工方式创建一条IPsec安全策略,并进入IPsec安全策略视图 |
ipsec policy policy-name seq-number manual |
必选 缺省情况下,没有任何IPsec安全策略存在 |
||
配置IPsec安全策略引用的访问控制列表 |
security acl [ ipv6 ] acl-number |
若IPsec安全策略要应用于IPv6路由协议,则无需此配置,其它情况必选 缺省情况下,IPsec安全策略没有指定访问控制列表 可支持保护VPN间的数据流 一条IPsec安全策略只能引用一条访问控制列表,如果设置IPsec安全策略引用了多于一个访问控制列表,最后引用的那条访问控制列表才有效。 |
||
配置IPsec安全策略所引用的IPsec安全提议 |
transform-set transform-set-name |
必选 缺省情况下,IPsec安全策略没有引用任何IPsec安全提议 通过手工方式建立SA,一条IPsec安全策略只能引用一个安全提议,并且如果已经引用了IPsec安全提议,必须先取消原先的IPsec安全提议才能引用新的IPsec安全提议。 |
||
配置隧道的起点与终点 |
配置安全隧道的本端地址 |
tunnel local [ ipv6 ] ip-address |
若IPsec安全策略要应用于IPv6路由协议,则无需此配置,其它情况必选 缺省情况下,没有配置安全隧道的本端地址和对端地址
|
|
配置安全隧道的对端地址 |
tunnel remote [ ipv6 ] ip-address |
|||
配置SA的安全参数索引参数 |
sa spi { inbound | outbound } { ah | esp } spi-number |
必选 |
||
配置SA使用的密钥 |
配置AH协议的认证密钥(以16进制方式输入) |
sa authentication-hex { inbound | outbound } ah [ cipher | simple ] hex-key |
二者必选其一 sa string-key命令在FIPS模式下不可用 |
|
配置AH协议的认证密钥(以字符串方式输入) |
sa string-key { inbound | outbound } ah [ cipher | simple ] string-key |
|||
配置ESP协议的认证密钥和加密密钥(以字符串方式输入) |
sa string-key { inbound | outbound } esp [ cipher | simple ] string-key |
至少选其一 以字符串方式输入密钥时,系统会自动地同时生成认证算法的密钥和加密算法的密钥 sa string-key命令在FIPS模式下不可用 |
||
配置ESP协议的认证密钥(以16进制方式输入) |
sa authentication-hex { inbound | outbound } esp [ cipher | simple ] hex-key |
|||
配置ESP协议的加密密钥(以16进制方式输入) |
sa encryption-hex { inbound | outbound } esp [ cipher | simple ] hex-key |
|||
· 如果先后以不同的方式输入了密钥,则最后设定的密钥有效。
· 对于手工方式创建的IPsec安全策略,不能直接修改它的创建方式,而必须先删除该IPsec安全策略然后再重新创建。
在采用IKE方式配置IPsec安全策略时,有以下两种方式:
· 直接配置IPsec安全策略,在IPsec安全策略视图中定义需要协商的各参数;
· 引用IPsec安全策略模板创建IPsec安全策略,在IPsec安全策略模板中定义需要协商的各参数。应用了该类安全策略的设备不能发起协商,仅可以响应远端设备的协商请求。由于策略模板中未定义的可选参数由发起方来决定,而响应方会接受发起方的建议,因此这种方式适用于通信对端(例如对端的IP地址)未知的情况下,允许这些对端设备向本端设备主动发起协商。
(1) 配置准备
在配置IKE协商IPsec安全策略之前,需要完成以下配置:
· 配置所引用的访问控制列表和IPsec安全提议。
· 配置IKE对等体。具体配置请参见“2.5 配置IKE对等体”。
为保证IKE协商成功,IPsec安全策略中所有配置的参数必须在本端和对端相匹配。
(2) 配置使用IKE协商方式的安全策略
· 直接配置使用IKE协商方式的IPsec安全策略
表1-4 直接配置使用IKE协商方式的IPsec安全策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建一条IPsec安全策略,并进入IPsec安全策略视图 |
ipsec policy policy-name seq-number isakmp |
必选 缺省情况下,没有IPsec安全策略存在 |
配置用于描述IPsec安全策略的IPsec连接名 |
connection-name name |
可选 缺省情况下,无IPsec连接名 |
配置IPsec安全策略引用的访问控制列表 |
security acl [ ipv6 ] acl-number [ aggregation ] |
必选 缺省情况下,IPsec安全策略没有指定访问控制列表 |
配置IPsec安全策略所引用的IPsec安全提议 |
transform-set transform-set-name&<1-6> |
必选 缺省情况下,IPsec安全策略没有引用任何提议 通过IKE协商建立SA,一条IPsec安全策略最多可以引用六个IPsec安全提议,IKE协商将在安全隧道的两端搜索能够完全匹配的IPsec安全提议。如果IKE在两端找不到完全匹配的IPsec安全提议,则SA不能建立,需要被保护的报文将被丢弃。 |
在IPsec安全策略中引用IKE对等体 |
ike-peer peer-name |
必选 IPsec安全策略中不能引用已经被安全框架引用的IKE对等体,反之亦然 |
配置使用此IPsec安全策略发起协商时使用PFS特性 |
pfs { dh-group1 | dh-group2 | dh-group5 | dh-group14 } |
可选 缺省情况下,IPsec安全策略发起协商时没有使用PFS特性 如果本端配置了PFS特性,则发起协商的对端也必须配置PFS特性,而且本端和对端指定的DH组必须一致,否则协商会失败 PFS(Perfect Forward Secrecy,完善的前向安全性)特性请参见“2.1.1 IKE的安全机制” dh-group1参数在FIPS模式下不可用 |
配置SA的生存周期 |
sa duration { time-based seconds | traffic-based kilobytes } |
可选 缺省情况下,IPsec安全策略的SA生存周期为当前全局的SA生存周期值 IKE为IPsec协商建立SA时,采用本地设置的和对端提议的生存周期中较小的一个 |
使能IPsec安全策略 |
policy enable |
可选 缺省情况下,IPsec安全策略处于使能状态 |
退回系统视图 |
quit |
- |
配置全局SA的生存周期 |
ipsec sa global-duration { time-based seconds | traffic-based kilobytes } |
可选 缺省情况下,SA基于时间的生存周期为3600秒,基于流量的生存周期为1843200千字节 |
· 引用IPsec安全策略模板配置IKE协商方式的IPsec安全策略
IPsec安全策略模板可配置的参数与IKE方式的IPsec安全策略相同,只是很多参数是可选的。
· 必须配置的参数:IPsec安全提议和IKE对等体,
· 可选配的参数:访问控制列表、PFS特性和生存周期。与直接方式不同的是,用于定义保护对象范围的访问控制列表在这种方式下是可选的,该参数在未配置的情况下,相当于支持最大范围的保护,即接受协商发起端的访问控制列表设置。
表1-5 引用IPsec安全策略模板配置IKE协商方式的IPsec安全策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建一个IPsec安全策略模板,并进入IPsec安全策略模板视图 |
ipsec policy-template template-name seq-number |
必选 缺省情况下,没有任何IPsec安全策略模板存在 |
配置IPsec安全策略引用的访问控制列表 |
security acl [ ipv6 ] acl-number |
可选 缺省情况下,IPsec安全策略没有指定访问控制列表 |
配置IPsec安全策略所引用的安全提议 |
transform-set transform-set-name&<1-6> |
必选 缺省情况下,IPsec安全策略没有引用任何提议 通过IKE协商建立SA,一条IPsec安全策略最多可以引用六个IPsec安全提议,IKE协商将在安全隧道的两端搜索能够完全匹配的IPsec安全提议。如果IKE在两端找不到完全匹配的IPsec安全提议,则SA不能建立,需要被保护的报文将被丢弃 |
在IPsec安全策略中引用IKE对等体 |
ike-peer peer-name |
必选 |
配置使用此IPsec安全策略发起协商时使用PFS特性 |
pfs { dh-group1 | dh-group2 | dh-group5 | dh-group14 } |
可选 缺省情况下,IPsec安全策略发起协商时没有使用PFS特性 如果本端配置了PFS特性,则发起协商的对端也必须配置PFS特性,而且本端和对端指定的DH组必须一致,否则协商会失败 PFS(Perfect Forward Secrecy,完善的前向安全性)特性请参见“2.1.1 IKE的安全机制” dh-group1参数在FIPS模式下不可用 |
配置SA的生存周期 |
sa duration { time-based seconds | traffic-based kilobytes } |
可选 缺省情况下,IPsec安全策略的SA生存周期为当前全局的SA生存周期值 IKE为IPsec协商建立SA时,采用本地设置的和对端提议的生存周期中较小的一个 |
使能IPsec安全策略 |
policy enable |
可选 缺省情况下,IPsec安全策略处于使能状态 |
退回系统视图 |
quit |
- |
配置全局SA的生存周期 |
ipsec sa global-duration { time-based seconds | traffic-based kilobytes } |
可选 缺省情况下,SA基于时间的生存周期为3600秒,基于流量的生存周期为1843200千字节 |
引用IPsec安全策略模板创建一条IPsec安全策略 |
ipsec policy policy-name seq-number isakmp template template-name |
必选 缺省情况下,没有IPsec安全策略存在 |
使用IKE协商方式时,ACL只支持模糊匹配。
IPsec安全策略组是所有具有相同名字、不同顺序号的IPsec安全策略的集合。在同一个IPsec安全策略组中,顺序号越小的IPsec安全策略,优先级越高。
为使定义的SA生效,应在每个要加密的数据流和要解密的数据流所在接口(逻辑的或物理的)上应用一个IPsec安全策略组,以对数据进行保护。当取消IPsec安全策略组在接口上的应用后,此接口便不再具有IPsec的安全保护功能。
当从一个接口发送数据时,将按照从小到大的顺序号查找IPsec安全策略组中每一条安全策略。如果数据匹配了一条IPsec安全策略引用的访问控制列表,则使用这条IPsec安全策略对数据进行处理;如果数据没有匹配IPsec安全策略引用的访问控制列表,则继续查找下一条IPsec安全策略;如果数据与所有IPsec安全策略引用的访问控制列表都不匹配,则直接被发送(IPsec不对数据加以保护)。
IPsec安全策略除了可以应用到串口、以太网口等实际物理接口上之外,还能够应用到Tunnel、Virtual Template等虚接口上。这样就可以根据实际组网要求,在如GRE、L2TP等隧道上应用。
表1-6 在接口上应用IPsec安全策略组
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
应用指定的IPsec安全策略组 |
ipsec policy policy-name |
必选 |
一个接口只能应用一个IPsec安全策略组。通过IKE方式创建的IPsec安全策略可以应用到多个接口上,通过手工创建的IPsec安全策略只能应用到一个接口上。
加密引擎是设备上的一个协处理器,为IPsec的处理提供一个加/解密算法接口。分为两种情况:
· 若加密引擎功能处于使能状态,则由加密引擎进行IPsec处理;
· 若加密引擎功能处于禁止状态或加密引擎异常,并且主体软件备份功能处于使能状态,则由主体软件IPsec模块进行IPsec处理;若主体软件备份功能处于禁止状态,则报文被丢弃。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能加密引擎功能 |
cryptoengine enable [ slot slot-number ] |
可选 缺省情况下,加密引擎功能处于使能状态 |
在隧道模式下,对于解封装之后的入方向IPsec报文,有可能出现报文的内部IP头不在当前IPsec安全策略配置的ACL保护范围内的情况,如网络中恶意构造的攻击报文头可能不在此范围,所以需要重新检查报文内部IP头是否在ACL保护范围内。使能该功能后可以保证ACL检查不通过的报文被丢弃,从而提高网络安全性。
表1-8 使能解封装后IPsec报文的ACL检查功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能解封装后IPsec报文的ACL检查功能 |
ipsec decrypt check |
可选 缺省情况下,解封装后IPsec报文的ACL检查功能处于使能状态 |
通常,重放报文是指已经处理过的报文。IPsec通过滑动窗口(抗重放窗口)机制检测重放报文。AH和ESP协议报文中带有序列号,如果收到报文的序列号与已经解封装过的报文序列号相同,或报文的序列号出现得较早,即已经超过了抗重放窗口的范围,则认为该报文为重放报文。
由于对重放报文的解封装无实际作用,并且解封装过程涉及密码学运算,会消耗设备大量的资源,导致业务可用性下降,实际上构成了拒绝服务攻击。通过使能IPsec抗重放检测功能,将检测到的重放报文在解封装处理之前丢弃,可以降低设备资源的消耗。
另外,在某些特定环境下,业务数据报文的序列号顺序可能与正常的顺序差别较大,虽然并非有意的重放攻击,但会被抗重放检测认为是重放报文,导致业务数据报文被丢弃,影响业务的正常运行。因此,这种情况下就可以通过关闭IPsec抗重放检测功能来避免业务数据报文的错误丢弃,也可以通过适当地增大抗重放窗口的宽度,来适应业务正常运行的需要。
表1-9 配置IPsec抗重放功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IPsec抗重放检测功能 |
ipsec anti-replay check |
可选 缺省情况下,IPsec抗重放检测功能处于使能状态 |
配置IPsec抗重放窗口宽度 |
ipsec anti-replay window width |
可选 缺省情况下,IPsec抗重放窗口宽度为32 |
· IPsec抗重放检测功能缺省是使能的,是否关闭该功能请根据实际需求慎重使用。
· 使用较大的抗重放窗口宽度会引起系统开销增大,导致系统性能下降,与抗重放检测用于降低系统在接收重放报文时的开销的初衷不符,因此建议在能够满足业务运行需要的情况下,使用较小的抗重放窗口宽度。
按照IPsec协议,只有IKE协商的IPsec SA才能够支持抗重放检测,手工方式生成的IPsec SA不支持抗重放检测。因此该功能使能与否与对手工方式生成的IPsec SA没有影响。
当在接口上同时应用了IPsec安全策略与QoS策略时,缺省情况下,QoS使用被封装报文的外层IP头信息来对报文进行分类。但如果希望QoS基于被封装报文的原始IP头信息对报文进行分类,则需要配置报文信息预提取功能来实现。
关于QoS策略及QoS分类的相关介绍请参见“ACL和QoS配置指导”中的“QoS配置方式”。
表1-10 配置报文信息预提取功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入安全策略视图/安全策略模板视图 |
ipsec policy policy-name seq-number [ isakmp | manual ] |
二者必选其一 |
ipsec policy-template template-name seq-number |
||
配置报文信息预提取功能 |
qos pre-classify |
必选 缺省情况下,报文信息预提取功能处于关闭状态 |
当IPsec隧道一端的安全网关出现问题(例如安全网关重启)导致本端IPsec SA丢失时,会造成IPsec流量黑洞现象:一端(接收端)的IPsec SA已经完全丢失,而另一端(发送端)还持有对应的IPsec SA且不断地向对端发送报文,当接收端收到发送端使用此IPsec SA封装的IPsec报文时,就会因为找不到对应的SA而持续丢弃报文,形成流量黑洞。该现象造成IPsec通信链路长时间得不到恢复(只有等到发送端旧的IPsec SA生命周期超时,并重建IPsec SA后,两端的IPsec流量才能得以恢复),因此需要采取有效的IPsec SA恢复手段来快速恢复中断的IPsec通信链路。
SA由SPI唯一标识,接收方根据IPsec报文中的SPI在SA数据库中查找对应的SA,若接收方找不到处理该报文的SA,则认为此报文的SPI无效。使能了IPsec无效SPI恢复功能的接收端收到无效SPI的IPsec报文后,就触发本端IKE向对端发送INVALID SPI NOTIFY消息。发送端IKE接收到此通知消息后,就会立即删除此无效SPI对应的IPsec SA。之后,当发送端需要继续向接收端发送报文时,就会触发两端重建IPsec SA,使得中断的IPsec通信链路得以恢复。
由于IKE向对方发送INVALID SPI NOTIFY消息有可能会给设备带来发生DoS(Denial of Sevice)攻击的风险,因此缺省情况下的IPsec无效SPI恢复功能是关闭的,接收端将默认丢弃无效SPI的IPsec报文。
表1-11 配置IPsec无效SPI恢复功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IPsec无效SPI恢复功能 |
ipsec invalid-spi-recovery enable |
可选 缺省情况下,IPsec无效SPI恢复功能处于关闭状态 |
RRI只需要在企业总部网关设备上的IPsec策略视图或者IPsec安全策略模板视图下配置。
RRI有静态和动态两种工作机制,配置了RRI的设备采用哪种工作机制,由reverse-route命令中是否指定了参数static决定。
· 静态工作机制(指定static参数):RRI基于IPsec安全策略引用的ACL中各规则的目的配置信息来静态生成静态路由(对ACL规则中的不同目的信息会生成不同的路由)。该静态路由的下一跳地址可以通过reverse-route命令中的参数remote-peer ip-address来指定,不指定该参数的情况下为配置的隧道对端的IP地址。当IPsec策略中的RRI功能被关闭,或者策略中引用的ACL、对端安全网关的IP地址配置被删除时,该IPsec策略下由RRI生成的所有静态路由表项会被删除。当企业分支网络结构基本不变时,可以配置此类型的RRI添加到达分支的静态路由。
· 动态工作机制(未指定static参数):RRI基于与分支通信的IPsec SA的建立而动态生成静态路由。该静态路由的目的地址为本端学习到的被保护的分支网络地址,下一跳地址可通过reverse-route命令中的参数remote-peer ip-address来指定,不指定该参数的情况下为本端在IPsec SA协商过程中学习到的隧道的对端地址。当IPsec SA被删除时,相应的静态路由表项也会同时被删除。当企业分支结构容易发生变化时,如分支用户使用拨号方式动态获取IP地址接入Internet,则可以配置此类型的RRI动态添加到达分支的静态路由,可减少因分支变动而对总部网关配置的频繁调整。
对于RRI生成的静态路由,可以为其配置优先级,从而更灵活地应用路由管理策略。例如:当设备上还有其它方式配置的到达相同目的地的路由时,如果为它们指定相同优先级,则可实现负载分担,如果指定不同优先级,则可实现路由备份。同时,还可以通过修改静态路由的Tag属性值,使得设备能够在路由策略中根据Tag值对这些RRI生成的静态路由进行灵活的控制。
表1-12 配置IPsec反向路由注入功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入安全策略视图/安全策略模板视图 |
ipsec policy policy-name seq-number [ isakmp | manual ] |
二者必选其一 |
ipsec policy-template template-name seq-number |
||
开启IPsec反向路由注入功能 |
reverse-route [ remote-peer ip-address [ gateway | static ] | static ] |
必选 缺省情况下,IPsec反向路由注入功能处于关闭状态 |
配置IPsec反向路由注入生成的静态路由的优先级 |
reverse-route preference preference-value |
可选 缺省情况下,IPsec反向路由注入功能生成的静态路由的优先级为60 |
配置IPsec反向路由注入生成的静态路由的Tag值 |
reverse-route tag tag-value |
可选 缺省情况下,IPsec反向路由注入功能生成的静态路由的Tag值为0 |
· IPsec反向路由注入功能在隧道模式和传输模式下都支持。
· 若对IPsec反向路由注入静态路由属性进行修改,则在静态工作机制下的RRI会根据新的路由属性重新生成静态路由,而在动态工作机制下的RRI不会修改已生成的静态路由的路由属性,修改后的静态路由属性仅对新增的静态路由有效。
加密前分片功能是指,如果待封装报文封装后的大小超过接口MTU值,则对报文先分片再封装。
加密后分片功能是指,对待封装报文先进行封装,封装后的报文尺寸如果超过接口MTU值,则再进行分片。
若设备的某接口上应用了IPsec GDOI安全策略,则必须使能加密前分片功能,否则会导致本端接口上封装后被分片的报文在对端因无法重组而解密失败。
表1-13 使能加密前/加密后分片功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能加密前分片功能 |
ipsec fragmentation before-encryption enable |
二者可选其一 缺省情况下,加密前分片功能处于开启状态 只有隧道模式支持加密前分片,传输模式不支持 |
使能加密后分片功能 |
undo ipsec fragmentation before-encryption enable |
IPsec GDOI安全策略的相关介绍请参见“安全配置指导”中的“Group Domain VPN”。
基于IPsec虚拟隧道接口建立IPsec安全隧道的基本配置思路如下:
(1) 通过配置IPsec安全提议,指定安全协议、认证算法和加密算法、封装模式等;
(2) 通过配置IPsec安全框架,选择保护数据流时使用的安全提议,设置IKE对等体的参数(即IKE协商的模式、所需要的密钥等)和SA的生存周期等;
(3) 通过配置IPsec虚拟隧道接口,并在IPsec虚拟隧道接口视图下应用IPsec安全框架使得IPsec虚拟隧道的配置生效。
与使用IPsec安全策略建立IPsec隧道相比,定义IPsec安全框架时无须指定需要保护的数据流的范围,即IPsec安全框架默认保护流的范围是所有流。
表1-14 IPsec虚拟隧道接口配置任务简介
配置任务 |
说明 |
详细配置 |
配置IPsec安全提议 |
必选 IPsec虚拟隧道接口引用的IPsec安全提议只能支持隧道模式 |
|
配置IPsec安全框架 |
必选 |
|
配置IPsec虚拟隧道接口 |
必选 |
|
在IPsec虚拟隧道接口上配置QoS报文信息预提取功能 |
可选 |
|
在IPsec虚拟隧道接口上配置QoS策略 |
可选 |
|
使能加密引擎功能 |
可选 |
|
配置IPsec抗重放功能 |
可选 |
由前文可知,IPsec安全策略由“名字”和“顺序号”共同唯一确定,相同名字的策略为一个IPsec策略组。每条策略可以通过ACL配置来保护不同的数据流。将IPsec安全策略组应用到接口上后,当有用户流量经该接口转发时,IPsec会根据各策略来筛选感兴趣的流来进行保护,这样在一个接口下会生成多条IPsec隧道。
一个IPsec安全框架相当于一个IPsec安全策略,与IPsec安全策略不同的是,IPsec安全框架由“名字”唯一确定,且不支持配置ACL。IPsec安全框架定义了对数据流进行IPsec保护所使用的IPsec安全提议,以及用于自动协商SA所需要的IKE协商参数。在IPsec虚拟隧道接口下应用IPsec安全框架后只会生成一条IPsec隧道,并对所有路由到该隧道接口的数据流进行IPsec保护。
目前,IPsec安全框架只能应用于DVPN虚拟隧道接口和IPsec虚拟隧道接口下,根据IPsec安全框架协商出的SA将会对所有路由到隧道接口下的IP流量进行IPsec保护。
在配置IPsec安全框架之前,需要完成以下任务:
· 配置需要引用的IPsec安全提议。具体配置请参见“1.3.3 配置IPsec安全提议”。
· 配置IKE对等体。具体配置请参见“2.5 配置IKE对等体”。
为保证IKE协商成功,IPsec安全框架中所有配置的参数必须在本端和对端相匹配。
· 根据IPsec安全框架进行IKE协商时,选用的本端地址是通过IPsec虚拟隧道接口的源地址来指定的,IPsec安全框架所引用的IKE对等体中的local-address配置不生效。
· 根据IPsec安全框架进行IKE协商时,使用的对端地址是通过IPsec虚拟隧道接口的目的地址指定的,IPsec安全框架所引用的IKE对等体中的remote-address配置不生效。当IPsec虚拟隧道接口的目的地址未配置的时候,本端不能作为发起方主动发起IKE协商,只能被动接受对端发起的协商。
· DVPN(Dynamic Virtual Private Network,动态虚拟私有网络)是企业网各分支机构使用动态地址接入公网的情况下,在各分支机构间建立的一种动态VPN。DVPN虚拟隧道接口的相关介绍请参见“三层技术-IP业务配置指导”中的“DVPN”。
表1-15 配置IPsec安全框架
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建一个IPsec安全框架,并进入IPsec安全框架视图 |
ipsec profile profile-name |
必选 缺省情况下,没有IPsec安全框架存在 |
配置IPsec安全框架引用的IPsec安全提议 |
transform-set transform-name&<1-6> |
必选 缺省情况下,IPsec安全框架没有引用任何IPsec安全提议 |
在IPsec安全框架中引用IKE对等体 |
ike-peer peer-name |
必选 IPsec安全框架中不能引用已经被IPsec安全策略引用的IKE对等体,反之亦然 |
配置使用此IPsec安全框架发起协商时使用PFS特性 |
pfs { dh-group1 | dh-group2 | dh-group5 | dh-group14 } |
可选 缺省情况下,IPsec安全框架发起协商时没有使用PFS特性 PFS(Perfect Forward Secrecy,完善的前向安全性)特性请参见“2.1.1 IKE的安全机制” dh-group1参数在FIPS模式下不可用 |
配置SA的生存周期 |
sa duration { time-based seconds | traffic-based kilobytes } |
可选 缺省情况下,IPsec安全框架的SA生存周期为当前全局的SA生存周期值 |
退回系统视图 |
quit |
- |
配置全局SA的生存周期 |
ipsec sa global-duration { time-based seconds | traffic-based kilobytes } |
可选 缺省情况下,SA基于时间的生存周期为3600秒,基于流量的生存周期为1843200千字节 |
IPsec虚拟隧道接口就是采用IPsec协议对报文进行封装的隧道接口。
使用IPsec虚拟隧道接口保护数据流的基本配置思路如下:
(1) 创建一个Tunnel接口,并在Tunnel接口视图下指定当前隧道的封装模式为IPsec虚拟隧道接口;
(2) 配置IPsec虚拟隧道接口的源地址,此地址将作为IKE协商时本端身份的标识;
(3) 若希望本端IPsec虚拟隧道接口主动发起IKE协商,则需要配置Tunnel接口的目的地址;若只希望被动接纳对端发起的IKE协商,则可以不配置Tunnel接口目的地址。
(4) 在IPsec虚拟隧道接口上应用安全框架,使其具有IPsec的安全保护功能。当取消应用在IPsec虚拟隧道接口上的安全框架后,IPsec虚拟隧道接口将不再具有IPsec的安全保护功能。
仅当IPsec虚拟隧道接口链路状态up时,才能表示该接口具备了IPsec的安全保护功能。IPsec虚拟隧道接口链路状态up的条件包括:
· Tunnel接口源地址为设备上有效的本地地址;
· Tunnel接口上应用了配置正确的IPsec安全框架;
· 本端安全网关已经与对端安全网关协商生成了有效的SA(执行display ike sa能看到第一阶段IKE SA和第二阶段IPsec SA已经存在)。
表1-16 配置IPsec虚拟隧道接口
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
创建一个Tunnel接口,并进入Tunnel接口视图 |
interface tunnel number |
必选 缺省情况下,设备上无隧道接口 |
|
配置Tunnel接口的IPv4私网地址 |
ip address ip-address { mask | mask-length } [ sub ] |
必选其一 缺省情况下,Tunnel接口上没有设置任何私网地址 |
|
配置Tunnel接口的IPv6私网地址 |
配置IPv6全球单播地址或站点本地地址 |
ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } |
|
ipv6 address ipv6-address/prefix-length eui-64 |
|||
配置IPv6链路本地地址 |
ipv6 address auto link-local |
||
ipv6 address ipv6-address link-local |
|||
配置隧道封装模式为IPsec虚拟隧道 |
tunnel-protocol ipsec { ipv4 | ipv6 } |
必选 缺省情况下,隧道的封装模式为GRE |
|
配置Tunnel接口的源地址或源接口,即发送IPsec报文的实际物理接口地址 |
source { ip-address | interface-type interface-number } |
必选 缺省情况下,Tunnel接口上未配置源地址或源接口 若采用配置源接口的形式,则Tunnel接口的源地址为源接口的主IP地址 |
|
配置Tunnel接口的目的地址 |
destination ip-address |
可选 缺省情况下,Tunnel接口上未配置目的地址 对于IKE协商的发起方,目的地址必须配置;对于IKE协商的响应方,目的地址可选择配置 |
|
在Tunnel接口上应用安全框架 |
ipsec profile profile-name |
必选 应用的安全框架必须是已经存在的,且未应用在DVPN隧道接口上 |
· interface tunnel、tunnel-protocol、source和destination命令的详细介绍请参见“三层技术-IP业务命令参考”中的“隧道”。
· IPsec安全框架既可以应用在IPsec虚拟隧道接口上,也可以应用在DVPN虚拟隧道接口上,但是同一个IPsec安全框架不能同时应用于两种类型的隧道接口上。
· 一个Tunnel接口上只能应用一个IPsec安全框架。
· 一个IPsec安全框架可应用在多个IPsec虚拟隧道接口上,但同时只能在一个IPsec虚拟隧道接口上生效,因此通常建议一个IPsec安全框架仅应用在一个IPsec虚拟隧道接口上。
由于IPsec的隧道封装将会隐藏原始IP数据流的五元组信息(源IP地址、目的IP地址、源端口、目的端口、协议类型),为了能够利用原始数据流的信息对加封装后的IPsec报文进行QoS处理,需要在隧道加封装之前提取出原始IP数据流的五元组信息。
通过在IPsec虚拟隧道接口上配置报文信息预提取功能,可以满足以上需求。IPsec虚拟隧道接口上预先提取出的报文信息可用来作为物理出接口上实施QoS策略(例如,进行流分类、设置IP报文的服务优先级、物理接口限速以及拥塞处理等)的依据。
需要注意的是,仅在IPsec虚拟隧道接口上单独使用报文信息预提取功能并无实际意义,必须与物理出接口上应用QoS策略一起组合使用才有效果,即需要满足以下两个配置才能真正实现对IPsec报文的QoS处理:
· IPsec虚拟隧道接口配置报文信息预提取功能;
· IPsec虚拟隧道接口对应的物理接口上应用QoS策略。关于接口上应用QoS策略的具体配置请参考“ACL和QoS配置指导”中的“QoS配置方式”。
表1-17 IPsec虚拟隧道接口上配置报文信息预提取功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入Tunnel接口视图 |
interface tunnel number |
- |
配置报文信息预提取功能 |
qos pre-classify |
必选 缺省情况下,未配置报文信息预提取功能 该命令的详细介绍请参考“ACL和QoS命令参考”中的“QoS拥塞管理” |
当应用在物理出接口上的QoS策略提供拥塞服务时,这种配合实施的QoS方案可能会导致IPsec报文乱序。其可能的影响是,未能以IPsec报文头中序列号要求的顺序到达对端IPsec网关的IPsec报文,会被对端IPsec网关进行的抗重放检测当作重放报文丢弃。关于IPsec抗重放功能的介绍及配置请参见“1.3.8 配置IPsec抗重放功能”。
“IPsec虚拟隧道接口上应用QoS策略”方案与“IPsec虚拟隧道接口上配置报文信息预提取+物理接口上应用QoS策略”方案的实施效果相同,但前者更为简洁有效。
在IPsec虚拟隧道接口上应用QoS策略后,QoS策略将在IPsec隧道加封装之前的原始报文上实施,并且内外层IP报文头的服务优先级设置相同。而且,由于QoS的拥塞服务是在IPsec隧道封装之前的报文上生效,因此加封装后的报文顺序与原始报文经过QoS拥塞处理后的顺序无关,会按照正常的顺序到达对端,也就不会因为QoS拥塞处理而产生乱序。
表1-18 在IPsec虚拟隧道接口上配置QoS策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入Tunnel接口视图 |
interface tunnel number |
- |
在Tunnel上应用QoS策略 |
qos apply policy policy-name { inbound | outbound } |
必选 该命令的详细介绍请参考“ACL和QoS命令参考”中的“QoS配置方式” |
使用IPsec安全策略建立IPsec安全隧道保护IPv6路由协议的基本配置思路如下:
(1) 配置IPsec安全提议:指定安全协议、认证算法和加密算法、封装模式等;
(2) 配置手工方式的IPsec安全策略:指定SA的SPI和密钥;
(3) 在路由协议上应用IPsec安全策略。
表1-19 IPsec虚拟隧道接口配置任务简介
配置任务 |
说明 |
详细配置 |
配置IPsec安全提议 |
必选 |
|
配置手工方式的IPsec安全策略 |
必选 无需配置访问控制列表和隧道地址 |
|
在路由协议上应用IPsec安全策略 |
必选 |
分别参考“三层技术-IP路由配置指导”中的“IPv6 BGP”、“OSPFv3”和“RIPng” |
请不要将一个保护IPv6路由协议的安全策略同时应用到接口上。如果同时应用,则接口收到经IPsec保护的IPv6路由协议报文后,会因ACL检测失败而将其丢弃。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IPsec的运行情况,通过查看显示信息认证配置的效果。
在用户视图下执行reset命令可以清除IPsec统计信息。
表1-20 IPsec显示和维护
操作 |
命令 |
显示IPsec安全策略的信息 |
display ipsec policy [ brief | name policy-name [ seq-number ] ] [ | { begin | exclude | include } regular-expression ] |
显示IPsec安全策略模板的信息 |
display ipsec policy-template [ brief | name template-name [ seq-number ] ] [ | { begin | exclude | include } regular-expression ] |
显示IPsec安全框架的配置信息 |
display ipsec profile [ name profile-name ] [ | { begin | exclude | include } regular-expression ] |
显示IPsec安全提议的信息 |
display ipsec transform-set [ transform-set-name ] [ | { begin | exclude | include } regular-expression ] |
显示SA的相关信息 |
display ipsec sa [ brief | policy policy-name [ seq-number ] | remote [ ipv6 ] ip-address ] [ | { begin | exclude | include } regular-expression ] |
显示IPsec处理报文的统计信息 |
display ipsec statistics [ tunnel-id integer ] [ | { begin | exclude | include } regular-expression ] |
显示IPsec隧道的信息 |
display ipsec tunnel [ | { begin | exclude | include } regular-expression ] |
清除已经建立的SA |
reset ipsec sa [ parameters [ ipv6 ] dest-address protocol spi | policy policy-name [ seq-number ] | remote [ ipv6 ] ip-address ] |
清除IPsec的报文统计信息 |
reset ipsec statistics |
· 在Router A和Router B之间建立一个安全隧道,对Host A所在的子网(10.1.1.0/24)与Host B所在的子网(10.1.2.0/24)之间的数据流进行安全保护。
· 安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96。
图1-7 IPsec配置组网图
(1) 配置Router A
# 配置一个访问控制列表,定义由子网10.1.1.0/24去子网10.1.2.0/24的数据流。
<RouterA> system-view
[RouterA] acl number 3101
[RouterA-acl-adv-3101] rule permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255
[RouterA-acl-adv-3101] quit
# 配置到Host B的静态路由。
[RouterA] ip route-static 10.1.2.0 255.255.255.0 serial 2/1/1
# 创建名为tran1的IPsec安全提议。
[RouterA] ipsec transform-set tran1
# 报文封装形式采用隧道模式。
[RouterA-ipsec-transform-set-tran1] encapsulation-mode tunnel
# 安全协议采用ESP协议。
[RouterA-ipsec-transform-set-tran1] transform esp
# 选择算法。
[RouterA-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterA-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterA-ipsec-transform-set-tran1] quit
# 创建一条IPsec安全策略,协商方式为manual。
[RouterA] ipsec policy map1 10 manual
# 引用访问控制列表。
[RouterA-ipsec-policy-manual-map1-10] security acl 3101
# 引用IPsec安全提议。
[RouterA-ipsec-policy-manual-map1-10] transform-set tran1
# 配置对端地址。
[RouterA-ipsec-policy-manual-map1-10] tunnel remote 2.2.3.1
# 配置本端地址。
[RouterA-ipsec-policy-manual-map1-10] tunnel local 2.2.2.1
# 配置SPI。
[RouterA-ipsec-policy-manual-map1-10] sa spi outbound esp 12345
[RouterA-ipsec-policy-manual-map1-10] sa spi inbound esp 54321
# 配置密钥。
[RouterA-ipsec-policy-manual-map1-10] sa string-key outbound esp abcdefg
[RouterA-ipsec-policy-manual-map1-10] sa string-key inbound esp gfedcba
[RouterA-ipsec-policy-manual-map1-10] quit
# 配置串口的IP地址。
[RouterA] interface serial 2/1/1
[RouterA-Serial2/1/1] ip address 2.2.2.1 255.255.255.0
# 在串口上应用IPsec安全策略组。
[RouterA-Serial2/1/1] ipsec policy map1
(2) 配置Router B
# 配置一个访问控制列表,定义由子网10.1.2.0/24去子网10.1.1.0/24的数据流。
<RouterB> system-view
[RouterB] acl number 3101
[RouterB-acl-adv-3101] rule permit ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
[RouterB-acl-adv-3101] quit
# 配置到HostA的静态路由。
[RouterB] ip route-static 10.1.1.0 255.255.255.0 serial 2/1/2
# 创建名为tran1的IPsec安全提议。
[RouterB] ipsec transform-set tran1
# 报文封装形式采用隧道模式。
[RouterB-ipsec-transform-set-tran1] encapsulation-mode tunnel
# 安全协议采用ESP协议。
[RouterB-ipsec-transform-set-tran1] transform esp
# 选择算法。
[RouterB-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterB-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterB-ipsec-transform-set-tran1] quit
# 创建一条IPsec安全策略,协商方式为manual。
[RouterB] ipsec policy use1 10 manual
# 引用访问控制列表。
[RouterB-ipsec-policy-manual-use1-10] security acl 3101
# 引用IPsec安全提议。
[RouterB-ipsec-policy-manual-use1-10] transform-set tran1
# 配置对端地址。
[RouterB-ipsec-policy-manual-use1-10] tunnel remote 2.2.2.1
# 配置本端地址。
[RouterB-ipsec-policy-manual-use1-10] tunnel local 2.2.3.1
# 配置SPI。
[RouterB-ipsec-policy-manual-use1-10] sa spi outbound esp 54321
[RouterB-ipsec-policy-manual-use1-10] sa spi inbound esp 12345
# 配置密钥。
[RouterB-ipsec-policy-manual-use1-10] sa string-key outbound esp gfedcba
[RouterB-ipsec-policy-manual-use1-10] sa string-key inbound esp abcdefg
[RouterB-ipsec-policy-manual-use1-10] quit
# 配置串口的IP地址。
[RouterB] interface serial 2/1/2
[RouterB-Serial2/1/2] ip address 2.2.3.1 255.255.255.0
# 在串口上应用IPsec安全策略组。
[RouterB-Serial2/1/2] ipsec policy use1
以上配置完成后,Router A和Router B之间的安全隧道就建立好了,子网10.1.1.0/24与子网10.1.2.0/24之间的数据流将被加密传输。
· 如图1-7所示,在Router A和Router B之间建立一个安全隧道,对Host A所在的子网(10.1.1.0/24)与Host B所在的子网(10.1.2.0/24)之间的数据流进行安全保护。
· 安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96。
见图1-7。
(1) 配置Router A
# 配置一个访问控制列表,定义由子网10.1.1.0/24去子网10.1.2.0/24的数据流。
<RouterA> system-view
[RouterA] acl number 3101
[RouterA-acl-adv-3101] rule permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255
[RouterA-acl-adv-3101] quit
# 配置到Host B的静态路由。
[RouterA] ip route-static 10.1.2.0 255.255.255.0 serial 2/1/1
# 创建名为tran1的IPsec安全提议。
[RouterA] ipsec transform-set tran1
# 报文封装形式采用隧道模式。
[RouterA-ipsec-transform-set-tran1] encapsulation-mode tunnel
# 安全协议采用ESP协议。
[RouterA-ipsec-transform-set-tran1] transform esp
# 选择算法。
[RouterA-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterA-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterA-ipsec-transform-set-tran1] quit
# 配置IKE对等体。
[RouterA] ike peer peer
[RouterA-ike-peer-peer] pre-shared-key abcde
[RouterA-ike-peer-peer] remote-address 2.2.3.1
[RouterA-ike-peer-peer] quit
# 创建一条IPsec安全策略,协商方式为isakmp。
[RouterA] ipsec policy map1 10 isakmp
# 引用IPsec安全提议。
[RouterA-ipsec-policy-isakmp-map1-10] transform-set tran1
# 引用访问控制列表。
[RouterA-ipsec-policy-isakmp-map1-10] security acl 3101
# 引用IKE对等体。
[RouterA-ipsec-policy-isakmp-map1-10] ike-peer peer
[RouterA-ipsec-policy-isakmp-map1-10] quit
# 配置串口的IP地址。
[RouterA] interface serial 2/1/1
[RouterA-Serial2/1/1] ip address 2.2.2.1 255.255.255.0
# 在串口上应用IPsec安全策略组。
[RouterA-Serial2/1/1] ipsec policy map1
(2) 配置Router B
# 配置一个访问控制列表,定义由子网10.1.2.0/24去子网10.1.1.0/24的数据流。
<RouterB> system-view
[RouterB] acl number 3101
[RouterB-acl-adv-3101] rule permit ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
[RouterB-acl-adv-3101] quit
# 配置到Host A的静态路由。
[RouterB] ip route-static 10.1.1.0 255.255.255.0 serial 2/1/2
# 创建名为tran1的IPsec安全提议。
[RouterB] ipsec transform-set tran1
# 报文封装形式采用隧道模式。
[RouterB-ipsec-transform-set-tran1] encapsulation-mode tunnel
# 安全协议采用ESP协议。
[RouterB-ipsec- transform-set -tran1] transform esp
# 选择算法。
[RouterB-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterB-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterB-ipsec-transform-set-tran1] quit
# 配置IKE对等体。
[RouterB] ike peer peer
[RouterB-ike-peer-peer] pre-shared-key abcde
[RouterB-ike-peer-peer] remote-address 2.2.2.1
[RouterB-ike-peer-peer] quit
# 创建一条IPsec安全策略,协商方式为isakmp。
[RouterB] ipsec policy use1 10 isakmp
# 引用访问控制列表。
[RouterB-ipsec-policy-isakmp-use1-10] security acl 3101
# 引用IPsec安全提议。
[RouterB-ipsec-policy-isakmp-use1-10] transform-set tran1
# 引用IKE对等体。
[RouterB-ipsec-policy-isakmp-use1-10] ike-peer peer
[RouterB-ipsec-policy-isakmp-use1-10] quit
# 配置串口的IP地址。
[RouterB] interface serial 2/1/2
[RouterB-Serial2/1/2] ip address 2.2.3.1 255.255.255.0
# 在串口上应用IPsec安全策略组。
[RouterB-Serial2/1/2] ipsec policy use1
以上配置完成后,Router A和Router B之间如果有子网10.1.1.0/24与子网10.1.2.0/24之间的报文通过,将触发IKE进行协商建立SA。IKE协商成功并创建了SA后,子网10.1.1.0/24与子网10.1.2.0/24之间的数据流将被加密传输。
· 如图1-8所示,在Router A和Router B之间建立一个安全隧道,对Host A所在的子网(333::0/64)与Host B所在的子网(555::0/64)之间的数据流进行安全保护。
· 安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96。
图1-8 保护IPv6报文的IPsec隧道配置组网图
(1) 配置Router A
# 配置各接口的IP地址,具体略。
# 配置一个访问控制列表,定义由子网333::0/64去子网555::0/64的数据流。
<RouterA> system-view
[RouterA] acl ipv6 number 3101
[RouterA-acl-adv-3101] rule permit ipv6 source 333::0 64 destination 555::0 64
[RouterA-acl-adv-3101] quit
# 配置到Host B的静态路由。
[RouterA] ipv6 route-static 555::0 64 222::1
# 创建名为tran1的IPsec安全提议。
[RouterA] ipsec transform-set tran1
# 报文封装形式采用隧道模式。
[RouterA-ipsec-transform-set-tran1] encapsulation-mode tunnel
# 安全协议采用ESP协议。
[RouterA-ipsec-transform-set-tran1] transform esp
# 选择算法。
[RouterA-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterA-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterA-ipsec-transform-set-tran1] quit
# 配置IKE对等体。
[RouterA] ike peer peer
[RouterA-ike-peer-peer] pre-share-key abcde
[RouterA-ike-peer-peer] remote-address ipv6 222::1
[RouterA-ike-peer-peer] quit
# 创建一条IPsec安全策略,协商方式为isakmp。
[RouterA] ipsec policy map1 10 isakmp
# 引用IPsec安全提议。
[RouterA-ipsec-policy-isakmp-map1-10] transform-set tran1
# 引用访问控制列表。
[RouterA-ipsec-policy-isakmp-map1-10] security acl ipv6 3101
# 引用IKE对等体。
[RouterA-ipsec-policy-isakmp-map1-10] ike-peer peer
[RouterA-ipsec-policy-isakmp-map1-10] quit
# 在接口GigabitEthernet3/0/2上应用IPsec安全策略组。
[RouterA] interface gigabitethernet 3/0/2
[RouterA-GigabitEthernet3/0/2] ipsec policy map1
(2) 配置Router B
# 配置各接口的IP地址,具体略。
# 配置一个访问控制列表,定义由子网555::0/64去子网333::0/64的数据流。
<RouterB> system-view
[RouterB] acl ipv6 number 3101
[RouterB-acl-adv-3101] rule permit ipv6 source 555::/64 destination 333::/64
[RouterB-acl-adv-3101] quit
# 配置到Host A的静态路由。
[RouterB] ipv6 route-static 333::0 64 111::1
# 创建名为tran1的IPsec安全提议。
[RouterB] ipsec transform-set tran1
# 报文封装形式采用隧道模式。
[RouterB-ipsec-transform-set-tran1] encapsulation-mode tunnel
# 安全协议采用ESP协议。
[RouterB-ipsec-transform-set-tran1] transform esp
# 选择算法。
[RouterB-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterB-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterB-ipsec-transform-set-tran1] quit
# 配置IKE对等体。
[RouterB] ike peer peer
[RouterB-ike-peer-peer] pre-share-key abcde
[RouterB-ike-peer-peer] remote-address ipv6 111::1
[RouterB-ike-peer-peer] quit
# 创建一条IPsec安全策略,协商方式为isakmp。
[RouterB] ipsec policy use1 10 isakmp
# 引用访问控制列表。
[RouterB-ipsec-policy-isakmp-use1-10] security acl ipv6 3101
# 引用IPsec安全提议。
[RouterB-ipsec-policy-isakmp-use1-10] transform-set tran1
# 引用IKE对等体。
[RouterB-ipsec-policy-isakmp-use1-10] ike-peer peer
[RouterB-ipsec-policy-isakmp-use1-10] quit
# 在接口GigabitEthernet3/0/2上应用IPsec安全策略组。
[RouterB] interface gigabitethernet 3/0/2
[RouterB-GigabitEthernet3/0/2] ipsec policy use1
以上配置完成后,当Router A和Router B之间有子网333::0/64与子网555::0/64之间的报文通过时,将触发IKE进行协商建立SA。IKE协商成功并创建了SA后,子网333::0/64与子网555::0/64之间的数据流将被加密传输。
如图1-9所示,某企业分支使用拨号方式获取动态IP地址接入Internet,企业总部使用固定的IP地址接入Internet。现有如下组网要求:
· 企业分支与企业总部之间的所有流量通过IPsec安全隧道进行传送;
· 当企业分支的私网IP地址段调整时,不需要改变企业总部网关的IPsec配置。
为实现如上组网需求,可采用如下配置思路实现:
· 在Router A和Router B之间使用IPsec虚拟隧道接口建立IPsec连接,将发送给对端私网的数据流路由到IPsec虚拟隧道接口上,由IPsec虚拟隧道接口上动态协商建立的IPsec安全隧道对分支子网(172.17.17.0/24)与总部子网(192.168.1.0/24)之间的所有数据流进行安全保护。
图1-9 IPsec虚拟隧道接口配置组网图
(1) 配置Router A
# 配置本端安全网关的名字为routera。
<RouterA> system-view
[RouterA] ike local-name routera
# 配置IKE对等体atob。由于隧道本端的IP地址为动态获取,因此需要选择协商模式为aggressive。
[RouterA] ike peer atob
[RouterA-ike-peer-atob] exchange-mode aggressive
[RouterA-ike-peer-atob] pre-shared-key simple aabb
[RouterA-ike-peer-atob] id-type name
[RouterA-ike-peer-atob] remote-name routerb
[RouterA-ike-peer-atob] quit
# 创建名字为method1的IPsec安全提议,采用缺省的参数设置:安全协议为ESP;加密算法为DES;认证算法为MD5。
[RouterA] ipsec transform-set method1
[RouterA-ipsec-transform-set-method1] transform esp
[RouterA-ipsec-transform-set-method1] esp encryption-algorithm des
[RouterA-ipsec-transform-set-method1] esp authentication-algorithm md5
[RouterA-ipsec-transform-set-method1] quit
# 创建名字为atob的IPsec安全框架,用于保护Router A和Router B之间的数据流。
[RouterA] ipsec profile atob
# 引用IKE对等体atob。
[RouterA-ipsec-profile-atob] ike-peer atob
# 引用IPsec安全提议method1。
[RouterA-ipsec-profile-atob] transform-set method1
[RouterA-ipsec-profile-atob] quit
# 创建一个IPsec虚拟隧道接口Tunnel1,此接口将用于保护Router A和Router B之间的数据流。
[RouterA] interface tunnel 1
# 配置Tunnel1的IPv4地址为10.1.1.1/24。
[RouterA–Tunnel1] ip address 10.1.1.1 24
# 配置Tunnel1的隧道模式为IPsec over IPv4。
[RouterA–Tunnel1] tunnel-protocol ipsec ipv4
# 配置Tunnel1的源接口为Serial2/1/1。
[RouterA–Tunnel1] source serial 2/1/1
# 配置Tunnel1的目的地址为1.1.1.1(对端安全网关的隧道接口的源地址)。
[RouterA–Tunnel1] destination 1.1.1.1
# 在Tunnel1上应用IPsec安全框架atob。
[RouterA–Tunnel1] ipsec profile atob
[RouterA–Tunnel1] quit
# 配置Router A到Router B的静态路由。
[RouterA] ip route-static 192.168.1.0 255.255.255.0 tunnel 1
(2) 配置Router B
# 配置接口Serial2/1/1的IP地址。
<RouterB> system-view
[RouterB] interface serial 2/1/1
[RouterB-Serial2/1/1] ip address 1.1.1.1 24
[RouterB-Serial2/1/1] quit
# 配置本端安全网关的名字为routerb。
[RouterB] ike local-name routerb
# 配置IKE对等体btoa。由于隧道对端的IP地址为动态获取,因此需要选择协商模式为aggressive。
[RouterB] ike peer btoa
[RouterB-ike-peer-btoa] exchange-mode aggressive
[RouterB-ike-peer-btoa] pre-shared-key simple aabb
[RouterB-ike-peer-btoa] id-type name
[RouterB-ike-peer-btoa] remote-name routera
[RouterB-ike-peer-btoa] quit
# 创建名字为method1的IPsec安全提议,采用缺省的参数设置:安全协议为ESP;加密算法为DES;认证算法为MD5。
[RouterB] ipsec transform-set method1
[RouterB-ipsec-transform-set-method1] transform esp
[RouterB-ipsec-transform-set-method1] esp encryption-algorithm des
[RouterB-ipsec-transform-set-method1] esp authentication-algorithm md5
[RouterB-ipsec-transform-set-method1] quit
# 创建名字为btoa的IPsec安全框架,用于保护Router B和Router A之间的数据流。
[RouterB] ipsec profile btoa
# 引用IKE对等体btoa。
[RouterB-ipsec-profile-btoa] ike-peer btoa
# 引用IPsec安全提议method1。
[RouterB-ipsec-profile-btoa] transform-set method1
[RouterB-ipsec-profile-btoa] quit
# 创建一个IPsec虚拟隧道接口Tunnel1,此接口将用于保护Router B和Router A之间的数据流。由于对端的公网地址未知,因此隧道接口下不需要配置目的地址。
[RouterB] interface tunnel 1
# 配置Tunnel1的IPv4地址为10.1.1.2/24。
[RouterB–Tunnel1] ip address 10.1.1.2 24
# 配置Tunnel1的隧道模式为IPsec over IPv4。
[RouterB–Tunnel1] tunnel-protocol ipsec ipv4
# 配置Tunnel1的源接口为Serial2/1/1。
[RouterB–Tunnel1] source serial 2/1/1
# 在Tunnel1上应用IPsec安全框架btoa。
[RouterB–Tunnel1] ipsec profile btoa
[RouterB–Tunnel1] quit
# 配置Router B到Router A的静态路由。
[RouterB] ip route-static 172.17.17.0 255.255.255.0 tunnel 1
以上配置完成之后,当Router A的接口Serial2/1/1完成自动拨号后,Router A会自动发起与Router B之间的IKE协商。当IKE协商完成之后,Router A和Router B上的IPsec虚拟隧道接口链路状态都将up,即可以满足上述组网需求,对总部和分支的数据流进行安全保护。
可以通过如下显示信息看到Router B上的IPsec虚拟隧道接口链路状态已经up。
[RouterB] display interface tunnel 1 brief
The brief information of interface(s) under route mode:
Interface Link Protocol-link Protocol type Main IP
Tun1 UP UP TUNNEL 10.1.1.2
可以通过如下显示信息看到,RouterB作为响应方已与Router A协商生成了两个阶段的SA。
[RouterB] display ike sa
total phase-1 SAs: 1
connection-id peer flag phase doi
----------------------------------------------------------
1 1.1.1.2 RD 1 IPSEC
2 1.1.1.2 RD 2 IPSEC
flag meaning
RD--READY ST--STAYALIVE RL--REPLACED FD--FADING TO—TIMEOUT RK-REKEY
可以通过如下显示信息查看协商生成的IPsec SA。
[RouterB] display ipsec sa
===============================
Interface: Tunnel1
path MTU: 1443
===============================
-----------------------------
IPsec policy name: "btoa"
sequence number: 1
acl version: ACL4
mode: tunnel
-----------------------------
PFS: N, DH group: none
tunnel:
local address: 1.1.1.1
remote address: 1.1.1.2
flow :
sour addr: 0.0.0.0/0.0.0.0 port: 0 protocol: IP
dest addr: 0.0.0.0/0.0.0.0 port: 0 protocol: IP
[inbound ESP SAs]
spi: 0x75b6ef44 (1974923076)
transform: ESP-ENCRYPT-DES ESP-AUTH-MD5
in use setting: Tunnel
connection id: 15
sa duration (kilobytes/sec): 1843200/3600
sa remaining duration (kilobytes/sec): 1843199/3503
anti-replay detection: Enabled
anti-replay window size(counter based): 32
udp encapsulation used for nat traversal: N
[outbound ESP SAs]
spi: 0x8cf16c54(2364632148)
transform: ESP-ENCRYPT-DES ESP-AUTH-MD5
sa duration (kilobytes/sec): 1843200/3600
sa remaining duration (kilobytes/sec): 1843199/3503
anti-replay detection: Enabled
anti-replay window size(counter based) : 32
udp encapsulation used for nat traversal: N
在Router B上可以ping通Router A连接的分支私网地址。
[RouterB] ping -a 192.168.1.1 172.17.17.1
PING 172.17.17.1: 56 data bytes, press CTRL_C to break
Reply from 172.17.17.1: bytes=56 Sequence=1 ttl=255 time=15 ms
Reply from 172.17.17.1: bytes=56 Sequence=2 ttl=255 time=10 ms
Reply from 172.17.17.1: bytes=56 Sequence=3 ttl=255 time=10 ms
Reply from 172.17.17.1: bytes=56 Sequence=4 ttl=255 time=5 ms
Reply from 172.17.17.1: bytes=56 Sequence=5 ttl=255 time=4 ms
--- 172.17.17.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 4/8/15 ms
同样,在Router A上可以通过以上显示命令来查看配置的生效情况,由于其上的显示信息形式与Router B的类似,此处不再详述。
IPsec保护其它IPv6路由协议(OSPFv3、IPv6 BGP)的具体配置与本例类似,具体内容请参考“三层技术-IP路由配置指导”中的“OSPFv3”和“IPv6 BGP”。
如图1-10所示,Router A、Router B和Router C相连,并通过RIPng来学习网络中的IPv6路由信息。具体组网要求如下:
· 在各设备之间建立IPsec安全隧道,对它们收发的RIPng报文进行安全保护;
· 安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96。
配置思路:
· 配置RIPng的基本功能
· 配置手工方式的IPsec安全策略
· 在RIPng进程下或接口上应用IPsec安全策略(进程下配置的IPsec安全策略对该进程的所有报文有效,接口下的IPsec安全策略只对接口下的报文有效)
图1-10 配置IPsec保护RIPng报文组网图
RIPng配置的详细介绍请参考“三层技术-IP路由配置指导”中的“RIPng”。
(1) 配置Router A
· 配置各接口的IPv6地址(略)
· 配置RIPng的基本功能
<RouterA> system-view
[RouterA] ripng 1
[RouterA-ripng-1] quit
[RouterA] interface gigabiethernet 3/0/1
[RouterA-GigabitEthernet3/0/1] ripng 1 enable
[RouterA-GigabitEthernet3/0/1] quit
· 配置IPsec安全策略
# 创建并配置名为tran1的IPsec安全提议(报文封装形式采用传输模式,安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96)。
[RouterA] ipsec transform-set tran1
[RouterA-ipsec-transform-set-tran1] encapsulation-mode transport
[RouterA-ipsec-transform-set-tran1] transform esp
[RouterA-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterA-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterA-ipsec-transform-set-tran1] quit
# 创建并配置名为policy001的IPsec安全策略(协商方式为manual,出入方向SA的SPI均为123456,出入方向SA的密钥均为abcdefg)。
[RouterA] ipsec policy policy001 10 manual
[RouterA-ipsec-policy-manual-policy001-10] transform-set tran1
[RouterA-ipsec-policy-manual-policy001-10] sa spi outbound esp 123456
[RouterA-ipsec-policy-manual-policy001-10] sa spi inbound esp 123456
[RouterA-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg
[RouterA-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg
[RouterA-ipsec-policy-manual-policy001-10] quit
· 在RIPng进程上应用IPsec安全策略
[RouterA] ripng 1
[RouterA-ripng-1] enable ipsec-policy policy001
[RouterA-ripng-1] quit
(2) 配置Router B
· 配置各接口的IPv6地址(略)
· 配置RIPng的基本功能
<RouterB> system-view
[RouterB] ripng 1
[RouterB-ripng-1] quit
[RouterB] interface gigabitethernet 3/0/1
[RouterB-GigabitEthernet3/0/1] ripng 1 enable
[RouterB-GigabitEthernet3/0/1] quit
[RouterB] interface gigabitethernet 3/0/2
[RouterB-GigabitEthernet3/0/2] ripng 1 enable
[RouterB-GigabitEthernet3/0/2] quit
· 配置IPsec安全策略
# 创建并配置名为tran1的IPsec安全提议(报文封装形式采用传输模式,安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96)。
[RouterB] ipsec transform-set tran1
[RouterB-ipsec-transform-set-tran1] encapsulation-mode transport
[RouterB-ipsec-transform-set-tran1] transform esp
[RouterB-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterB-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterB-ipsec-transform-set-tran1] quit
# 创建并配置名为policy001的IPsec安全策略(协商方式为manual,出入方向SA的SPI均为123456,出入方向SA的密钥均为abcdefg)。
[RouterB] ipsec policy policy001 10 manual
[RouterB-ipsec-policy-manual-policy001-10] transform-set tran1
[RouterB-ipsec-policy-manual-policy001-10] sa spi outbound esp 123456
[RouterB-ipsec-policy-manual-policy001-10] sa spi inbound esp 123456
[RouterB-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg
[RouterB-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg
[RouterB-ipsec-policy-manual-policy001-10] quit
· 在RIPng进程上应用IPsec安全策略
[RouterB] ripng 1
[RouterB-ripng-1] enable ipsec-policy policy001
[RouterB-ripng-1] quit
(3) 配置Router C
· 配置各接口的IPv6地址(略)
· 配置RIPng的基本功能
<RouterC> system-view
[RouterC] ripng 1
[RouterC-ripng-1] quit
[RouterC] interface gigabitethernet 3/0/1
[RouterC-GigabitEthernet3/0/1] ripng 1 enable
[RouterC-GigabitEthernet3/0/1] quit
· 配置IPsec安全策略
# 创建并配置名为tran1的IPsec安全提议(报文封装形式采用传输模式,安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96)。
[RouterC] ipsec transform-set tran1
[RouterC-ipsec-transform-set-tran1] encapsulation-mode transport
[RouterC-ipsec-transform-set-tran1] transform esp
[RouterC-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterC-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterC-ipsec-transform-set-tran1] quit
# 创建并配置名为policy001的IPsec安全策略(协商方式为manual,出入方向SA的SPI均为123456,出入方向SA的密钥均为abcdefg)。
[RouterC] ipsec policy policy001 10 manual
[RouterC-ipsec-policy-manual-policy001-10] transform-set tran1
[RouterC-ipsec-policy-manual-policy001-10] sa spi outbound esp 123456
[RouterC-ipsec-policy-manual-policy001-10] sa spi inbound esp 123456
[RouterC-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg
[RouterC-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg
[RouterC-ipsec-policy-manual-policy001-10] quit
· 在RIPng进程上应用IPsec安全策略
[RouterC] ripng 1
[RouterC-ripng-1] enable ipsec-policy policy001
[RouterC-ripng-1] quit
以上配置完成后,Router A、Router B和Router C将通过RIPng协议学习到网络中的IPv6路由信息,且分别产生用于保护RIPng报文的SA。
可以通过如下display命令查看Router A上RIPng的配置信息。如下显示信息表示RIPng进程1上已成功应用了IPsec策略,且携带了有效的SPI值。
<RouterA> display ripng 1
Public vpn-instance name :
RIPng process : 1
Preference : 100
Checkzero : Enabled
Default Cost : 0
Maximum number of balanced paths : 8
Update time : 30 sec(s) Timeout time : 180 sec(s)
Suppress time : 120 sec(s) Garbage-Collect time : 120 sec(s)
Number of periodic updates sent : 186
Number of trigger updates sent : 1
IPsec policy name: policy001, SPI: 123456
可以通过如下display命令查看Router A上生成的SA。
<RouterA> display ipsec sa
===============================
Protocol: RIPng
===============================
-----------------------------
IPsec policy name: "policy001"
sequence number: 10
acl version: None
mode: manual
-----------------------------
PFS: N, DH group: none
tunnel:
flow:
[inbound ESP SAs]
spi: 0x3039(123456)
transform: ESP-ENCRYPT-DES ESP-AUTH-SHA1
in use setting: Transport
connection id: 13
No duration limit for this sa
[outbound ESP SAs]
spi: 0x3039(123456)
transform: ESP-ENCRYPT-DES ESP-AUTH-SHA1
in use setting: Transport
connection id: 14
No duration limit for this sa
Router B和Router C上也会生成相应的SA来保护RIPng报文,查看方式与Router A同,此处略。
企业分支通过IPsec VPN接入企业总部,有如下具体需求:
· 在总部网关Router A和分支网关Router B之间建立一个安全隧道,对总部网络10.4.4.0/24与分支网络10.5.5.0/24之间的数据流进行安全保护。
· 使用IKE自动协商方式建立SA,安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96。
· 在Router A上开启IPsec反向路由注入功能,实现总部到分支的静态路由随IPsec SA的建立而动态生成,并指定下一跳地址为1.1.1.2。
图1-11 IPsec反向路由注入功能配置组网图
请按照图中所示配置各接口的IPv4地址,并保证Router A和Router B之间路由可达(略)。
(1) 配置Router A
# 配置访问控制列表3101,定义由子网10.4.4.0/24去子网10.5.5.0/24的数据流。
<RouterA> system-view
[RouterA] acl number 3101
[RouterA-acl-adv-3101] rule permit ip source 10.4.4.0 0.0.0.255 destination 10.5.5 0 0.0.0.255
[RouterA-acl-adv-3101] quit
# 创建名为tran1的IPsec安全提议。
[RouterA] ipsec transform-set tran1
# 报文封装形式采用隧道模式。
[RouterA-ipsec-transform-set-tran1] encapsulation-mode tunnel
# 配置采用ESP安全协议。
[RouterA-ipsec-transform-set-tran1] transform esp
# 配置加密算法为DES,认证算法为SHA1-HMAC-96。
[RouterA-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterA-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterA-ipsec-transform-set-tran1] quit
# 配置IKE对等体。
[RouterA] ike peer peer
[RouterA-ike-peer-peer] pre-shared-key abcde
[RouterA-ike-peer-peer] remote-address 2.2.2.2
[RouterA-ike-peer-peer] quit
# 创建IPsec安全策略map1,其协商方式为isakmp。
[RouterA] ipsec policy map1 10 isakmp
# 引用IPsec安全提议。
[RouterA-ipsec-policy-isakmp-map1-10] transform-set tran1
# 引用访问控制列表。
[RouterA-ipsec-policy-isakmp-map1-10] security acl 3101
# 引用IKE对等体。
[RouterA-ipsec-policy-isakmp-map1-10] ike-peer peer
# 开启动态方式的IPsec反向路由注入功能,并指定下一跳地址为1.1.1.2。
[RouterA-ipsec-policy-isakmp-map1-10] reverse-route remote-peer 1.1.1.2
[RouterA-ipsec-policy-isakmp-map1-10] quit
# 在接口GigabitEthernet3/0/1上应用IPsec安全策略组map1。
[RouterA] interface gigabitethernet 3/0/1
[RouterA-GigabitEthernet3/0/1] ipsec policy map1
[RouterA-GigabitEthernet3/0/1] quit
(2) 配置Router B
# 配置一访问控制列表3101,定义由子网10.5.5.0/24去子网10.4.4.0/24的数据流。
<RouterB> system-view
[RouterB] acl number 3101
[RouterB-acl-adv-3101] rule permit ip source 10.5.5.0 0.0.0.255 destination 10.4.4.0 0.0.0.255
[RouterB-acl-adv-3101] quit
# 配置到Host A所在网段的静态路由。
[RouterB] ip route-static 10.4.4.0 255.255.255.0 1.1.1.1
# 创建名为tran1的IPsec安全提议。
[RouterB] ipsec transform-set tran1
# 报文封装形式采用隧道模式。
[RouterB-ipsec-transform-set-tran1] encapsulation-mode tunnel
# 配置采用ESP安全协议。
[RouterB-ipsec-transform-set-tran1] transform esp
# 配置加密算法为DES,认证算法为SHA1-HMAC-96。
[RouterB-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterB-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterB-ipsec-transform-set-tran1] quit
# 配置IKE对等体。
[RouterB] ike peer peer
[RouterB-ike-peer-peer] pre-shared-key abcde
[RouterB-ike-peer-peer] remote-address 1.1.1.1
[RouterB-ike-peer-peer] quit
# 创建IPsec安全策略use1,其协商方式为isakmp。
[RouterB] ipsec policy use1 10 isakmp
# 引用访问控制列表。
[RouterB-ipsec-policy-isakmp-use1-10] security acl 3101
# 引用IPsec安全提议。
[RouterB-ipsec-policy-isakmp-use1-10] transform-set tran1
# 引用IKE对等体。
[RouterB-ipsec-policy-isakmp-use1-10] ike-peer peer
[RouterB-ipsec-policy-isakmp-use1-10] quit
# 在接口GigabitEthernet3/0/1上应用IPsec安全策略组use1。
[RouterB] interface gigabitethernet 3/0/1
[RouterB-GigabitEthernet3/0/1] ipsec policy use1
以上配置完成后,Router A和Router B之间如果有子网10.5.5.0/24与子网10.4.4.0/24之间的报文通过,将触发IKE进行协商建立SA。
IKE协商成功并创建了IPsec SA后,子网10.5.5.0/24与子网10.4.4.0/24之间的数据流将被加密传输,Router A上同时生成静态路由表项,目的地址为分支网络地址10.5.5.0/24,下一跳地址为1.1.1.2,可通过如下显示信息查看。
[RouterA] display ip routing-table
Routing Tables: Public
Destinations : 8 Routes : 8
Destination/Mask Proto Pre Cost NextHop Interface
1.1.0.0/16 Direct 0 0 1.1.1.1 GE3/0/1
1.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
2.2.2.0/24 Static 60 0 1.1.1.2 GE3/0/1
10.4.4.0/24 Direct 0 0 10.4.4.1 GE3/0/2
10.4.4.4/32 Direct 0 0 127.0.0.1 InLoop0
10.5.5.0/24 Static 60 0 1.1.1.2 GE3/0/1
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
若删除对应的IPsec SA,则该静态路由也会被同时删除。
若无特殊说明,本文中的IKE均指第1版本的IKE协议。
在实施IPsec的过程中,可以使用IKE(Internet Key Exchange,互联网密钥交换)协议来建立SA,该协议建立在由ISAKMP(Internet Security Association and Key Management Protocol,互联网安全联盟和密钥管理协议)定义的框架上。IKE为IPsec提供了自动协商交换密钥、建立SA的服务,能够简化IPsec的使用和管理,大大简化IPsec的配置和维护工作。
IKE不是在网络上直接传输密钥,而是通过一系列数据的交换,最终计算出双方共享的密钥,并且即使第三方截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。
IKE具有一套自保护机制,可以在不安全的网络上安全地认证身份、分发密钥、建立IPsec SA。
数据认证有如下两方面的概念:
· 身份认证:身份认证确认通信双方的身份。支持两种认证方法:预共享密钥(pre-shared-key)认证和基于PKI的数字签名(rsa-signature)认证。
· 身份保护:身份数据在密钥产生之后加密传送,实现了对身份数据的保护。
DH(Diffie-Hellman,交换及密钥分发)算法是一种公共密钥算法。通信双方在不传输密钥的情况下通过交换一些数据,计算出共享的密钥。即使第三方(如黑客)截获了双方用于计算密钥的所有交换数据,由于其复杂度很高,也不足以计算出真正的密钥。所以,DH交换技术可以保证双方能够安全地获得公有信息。
PFS(Perfect Forward Secrecy,完善的前向安全性)特性是一种安全特性,指一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。对于IPsec,是通过在IKE阶段2协商中增加一次密钥交换来实现的。PFS特性是由DH算法保障的。
IKE使用了两个阶段为IPsec进行密钥协商并建立SA:
(1) 第一阶段,通信各方彼此间建立了一个已通过身份认证和安全保护的通道,即建立一个ISAKMP SA。第一阶段有主模式(Main Mode)和野蛮模式(Aggressive Mode)两种IKE交换方法。
(2) 第二阶段,用在第一阶段建立的安全隧道为IPsec协商安全服务,即为IPsec协商具体的SA,建立用于最终的IP数据安全传输的IPsec SA。
如图2-1所示,第一阶段主模式的IKE协商过程中包含三对消息:
· 第一对叫SA交换,是协商确认有关安全策略的过程;
· 第二对消息叫密钥交换,交换Diffie-Hellman公共值和辅助数据(如:随机数),密钥材料在这个阶段产生;
· 最后一对消息是ID信息和认证数据交换,进行身份认证和对整个第一阶段交换内容的认证。
野蛮模式交换与主模式交换的主要差别在于,野蛮模式不提供身份保护,只交换3条消息。在对身份保护要求不高的场合,使用交换报文较少的野蛮模式可以提高协商的速度;在对身份保护要求较高的场合,则应该使用主模式。
· 因为有了IKE,IPsec很多参数(如:密钥)都可以自动建立,降低了手工配置的复杂度。
· IKE协议中的DH交换过程,每次的计算和产生的结果都是不相关的。每次SA的建立都运行DH交换过程,保证了每个SA所使用的密钥互不相关。
· IPsec使用AH或ESP报文头中的序列号实现防重放。此序列号是一个32比特的值,此数溢出后,为实现防重放,SA需要重新建立,这个过程需要IKE协议的配合。
· 对安全通信的各方身份的认证和管理,将影响到IPsec的部署。IPsec的大规模使用,必须有CA(Certificate Authority,证书颁发机构)或其他集中管理身份数据的机构的参与。
· IKE提供端与端之间动态认证。
图2-2 IPsec与IKE的关系图
从图2-2中我们可以看出IKE和IPsec的关系:
· IKE是UDP之上的一个应用层协议,是IPsec的信令协议;
· IKE为IPsec协商建立SA,并把建立的参数及生成的密钥交给IPsec;
· IPsec使用IKE建立的SA对IP报文加密或认证处理。
与IKE相关的协议规范有:
· RFC2408:Internet Security Association and Key Management Protocol (ISAKMP)
· RFC2409:The Internet Key Exchange (IKE)
· RFC2412:The OAKLEY Key Determination Protocol
进行IKE配置之前,用户需要确定以下几个因素,以便配置过程的顺利进行。
· 确定IKE交换过程中算法的强度,即确定安全保护的强度(包括身份认证方法、加密算法、认证算法、DH组):不同的算法的强度不同,算法强度越高,受保护数据越难被破解,但消耗的计算资源越多。一般来说,密钥越长的算法强度越高。
· 确定通信双方预先约定的预共享密钥或所属的PKI域。关于PKI的配置,请参见“安全配置指导”中的“PKI”。
表2-1 IKE配置任务简介
配置任务 |
说明 |
详细配置 |
配置本端安全网关的名字 |
可选 |
|
配置IKE安全提议 |
可选 若IKE对等体中需要指定IKE安全提议,则必配 |
|
配置IKE对等体 |
必选 |
|
配置Keepalive定时器 |
可选 |
|
配置NAT Keepalive定时器 |
可选 |
|
配置对等体存活检测 |
可选 |
|
配置取消对next payload域的检查 |
可选 |
当IKE协商的发起端使用FQDN (Fully Qualified Domain Name,完全合格域名)或者User FQDN类型的安全网关名字进行协商时(即配置了id-type name或id-type user-fqdn),本端需要配置本端安全网关的名字,该名字既可以在系统视图下进行配置,也可以在IKE对等体视图下配置,若两个视图下都配置了本端安全网关的名字,则采用IKE对等体视图下的配置。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置本端安全网关的名字 |
ike local-name name |
可选 缺省情况下,使用设备名作为本端安全网关的名字 |
IKE安全提议定义了一套属性数据来描述IKE协商怎样进行安全通信。用户可以创建多条不同优先级的IKE提议,优先级由IKE提议的序号表示,数值越小,优先级越高。
协商双方必须至少有一条匹配的IKE提议才能协商成功。在进行IKE协商时,协商发起方会将自己的安全提议发送给对端,由对端进行匹配,协商响应方则从自己优先级最高(序号最小)的IKE提议开始,按照优先级顺序与对端发送的安全提议进行匹配,直到找到一个匹配的安全提议来使用。匹配的IKE提议将被用来建立安全隧道。
以上IKE安全提议的匹配原则是:协商双方具有相同的加密算法、认证方法、认证算法和DH组标识。匹配的IKE提议的ISAKMP SA存活时间则取两端的最小值。
缺省情况下,系统提供一条缺省的IKE提议。此缺省的IKE提议具有最低的优先级,具有缺省的加密算法、认证方法、认证算法、DH组标识和ISAKMP SA存活时间。
IPsec流量超时时,非FIPS模式下只进行IPsec SA重协商,FIPS模式下同时进行IPsec SA与和它对应的IKE SA重协商。
表2-3 配置IKE安全提议
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建IKE提议,并进入IKE提议视图 |
ike proposal proposal-number |
必选 |
指定一个供IKE提议使用的加密算法 |
encryption-algorithm { 3des-cbc | aes-cbc [ key-length ] | des-cbc } |
可选 缺省情况下: · 在FIPS模式下,设备不支持DES-CBC和3DES-CBC,IKE提议使用CBC模式的128-bit AES-CBC加密算法。 · 在非FIPS模式下,IKE提议使用CBC模式的56-bit DES加密算法。 |
指定一个供IKE提议使用的认证方法 |
authentication-method { pre-share | rsa-signature } |
可选 缺省情况下,IKE提议使用预共享密钥的认证方法 |
指定一个供IKE提议使用的认证算法 |
authentication-algorithm { md5 | sha } |
可选 缺省情况下,IKE提议使用SHA1认证算法 在FIPS模式下不支持MD5算法 |
配置IKE阶段1密钥协商时所使用的DH密钥交换参数 |
dh { group1 | group2 | group5 | group14 } |
可选 缺省情况下: · 在FIPS模式下,IKE阶段1密钥协商时所使用的DH密钥交换参数为group2,即1024-bit的Diffie-Hellman组。 · 在非FIPS模式下,IKE阶段1密钥协商时所使用的DH密钥交换参数为group1,即768-bit的Diffie-Hellman组。 |
指定一个IKE提议的ISAKMP SA存活时间 |
可选 缺省情况下,IKE提议的ISAKMP SA存活时间为86400秒 |
如果存活时间超时,ISAKMP SA将自动更新。因为IKE协商需要进行DH计算,在低端设备上需要经过较长的时间,为使ISAKMP SA的更新不影响安全通信,建议设置存活时间大于10分钟。
在采用IKE方式配置安全策略时,需要指定IKE对等体。IKE对等体中主要包括以下配置:
· 本端作为发起方时所使用的协商模式(主模式、野蛮模式)。本端作为响应方时,将自动适配发起方的协商模式。当对端的IP地址为动态获取,且采用预共享密钥认证方式时,建议将本端的IKE的协商模式配置为野蛮模式。
· 本端作为发起方时可以使用的IKE安全提议(可指定多个)。本端作为响应方时,将使用系统视图下已经配置的安全提议与对端发送的安全提议进行协商。
· 根据IKE提议使用的认证方法不同,选择所使用的预共享密钥或者PKI域。
· 本端在IKE第一阶段协商时,所使用的ID类型(IP地址、FQDN名、User FQDN名)。在预共享密钥认证的主模式下,只能使用IP地址类型的ID。
· 本端安全网关的名字或IP地址。一般情况下本端安全网关的IP地址不需要配置,只有要指定特殊的本端安全网关地址时(如指定loopback接口地址)才需要配置。
· 对端安全网关的名字或IP地址。若本端作为发起方,则需要配置对端安全网关名字或对端安全网关IP地址,它们用于发起方在协商过程中寻找对端。
· NAT穿越功能。当IPsec/IKE隧道中存在NAT设备时,导致隧道一端为公网地址,另一端为私网地址,则必须在隧道两端均配置NAT穿越功能,保证隧道能够正常协商建立。
· 用于IKE对等体存活状态检测的DPD名称。
表2-4 配置IKE对等体
操作 |
命令 |
说明 |
||
进入系统视图 |
system-view |
- |
||
创建一个IKE对等体,并进入IKE-Peer视图 |
ike peer peer-name |
必选 |
||
配置IKE第一阶段的协商模式 |
exchange-mode { aggressive | main } |
可选 缺省情况下,IKE阶段的协商模式使用主模式 在FIPS模式下,设备不支持aggressive协商模式 |
||
配置IKE对等体引用的IKE安全提议 |
proposal proposal-number&<1-6> |
可选 缺省情况下,IKE对等体未引用任何IKE安全提议,使用系统视图下已配置的IKE安全提议进行IKE协商 |
||
配置采用预共享密钥认证时,所使用的预共享密钥 |
pre-shared-key [ [ cipher | simple ] key ] |
二者必选其一 根据IKE提议使用的认证方法选择其中一个配置 在FIPS模式下,仅支持以cipher和交互式方式设置预共享密钥,密钥至少需要设置为8位,包含数字、大写字母、小写字母和特殊符号。 |
||
配置采用数字签名认证时,证书所属的PKI域 |
certificate domain domain-name |
|||
选择IKE第一阶段的协商过程中使用ID的类型 |
id-type { ip | name | user-fqdn } |
可选 缺省情况下,使用IP地址作为IKE协商过程中使用的ID |
||
配置本端及对端安全网关的名字 |
配置本端安全网关的名字 |
local-name name |
可选 对端使用remote-name配置的网关名字应与IKE协商发起端所配置的本端安全网关名字保持一致 缺省情况下,未定义本端安全网关的名字,使用系统视图下本端安全网关的名字 |
|
配置对端安全网关的名字 |
remote-name name |
|||
配置本端及对端安全网关的IP地址 |
配置本端安全网关的IP地址 |
local-address [ ipv6 ] ip-address |
可选 对端使用remote-address配置的IP地址应与IKE协商发起端使用local-address命令所配的安全网关IP地址保持一致 缺省情况下,IKE协商时的本端安全网关IP地址使用应用IPsec安全策略的接口的主IP地址 |
|
配置对端安全网关的IP地址 |
remote-address [ ipv6 ] { hostname [ dynamic ] | low-ip-address [ high-ip-address ] } |
|||
配置IKE/IPsec的NAT穿越功能 |
nat traversal |
可选 在IPsec/IKE组建的VPN隧道中,若存在NAT安全网关设备,则必须配置IPsec/IKE的NAT穿越功能 缺省情况下,没有配置NAT穿越功能 |
||
配置本端及对端安全网关的子网类型 |
配置本端安全网关子网类型 |
local { multi-subnet | single-subnet } |
可选 缺省情况下,为单子网类型。这两条命令仅在与NETSCREEN的设备互通时使用 |
|
配置对端安全网关子网类型 |
peer { multi-subnet | single-subnet } |
|||
为IKE对等体应用一个DPD |
dpd dpd-name |
可选 缺省情况下,IKE对等体没有应用DPD |
||
修改IKE对等体配置之后,要执行命令reset ipsec sa、reset ike sa来清除原有的IPsec SA与IKE SA,否则重新协商SA会失败。
IKE通过Keepalive报文维护ISAKMP SA的链路状态。一般在对端配置了等待Keepalive报文的超时时间后,必须在本端配置此Keepalive报文发送时间间隔。当对端在配置的超时时间内未收到此Keepalive报文时,如果该ISAKMP SA带有TIMEOUT标记,则删除该ISAKMP SA以及由其协商的IPsec SA;否则,将其标记为TIMEOUT。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置ISAKMP SA向对端发送Keepalive报文的时间间隔 |
ike sa keepalive-timer interval seconds |
必选 缺省情况下,ISAKMP SA不向对端发送Keepalive报文 |
配置ISAKMP SA等待对端发送Keepalive报文的超时时间 |
ike sa keepalive-timer timeout seconds |
必选 缺省情况下,ISAKMP SA不向对端发送Keepalive报文 |
本端配置的Keepalive报文的等待超时时间要大于对端发送的时间间隔。由于网络中一般不会出现超过连续三次的报文丢失,所以,本端的超时时间可以配置为对端配置的Keepalive报文发送时间间隔的三倍。
在IPsec/IKE组建的VPN隧道中,若存在NAT安全网关设备,需配置NAT穿越功能来实现NAT穿越,但由于在NAT网关上的NAT映射会话有一定存活时间,因此一旦安全隧道建立后如果长时间没有报文穿越,NAT会话表项会被删除,这样将导致在NAT网关外侧的隧道无法继续传输数据。为防止NAT表项老化,NAT网关内网侧的ISAKMP SA会以一定的时间间隔向对端发送NAT Keepalive报文,以维持NAT会话的存活。
表2-6 配置NAT Keepalive定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置ISAKMP SA向对端发送NAT Keepalive报文的时间间隔 |
ike sa nat-keepalive-timer interval seconds |
必选 缺省情况下,ISAKMP SA向对端发送NAT Keepalive报文的时间间隔为20秒 |
DPD(Dead Peer Detection,对等体存活检测)用于IKE对等体存活状态检测。启动DPD功能后,当本端需要向对端发送IPsec报文时,若判断当前距离最后一次收到对端IPsec报文已经超过触发DPD的时间间隔(interval-time interval-time),则触发DPD查询,本端主动向对端发送DPD请求报文,对IKE对等体是否存活进行检测。如果本端在DPD报文的重传时间间隔(time-out time-out)内未收到对端发送的DPD回应报文,则重传DPD请求,缺省重传两次之后,若仍然没有收到对端的DPD回应报文,则删除该IKE SA和对应的IPsec SA。
DPD和Keepalive的区别:
· Keepalive定期发送查询;
· DPD只在要发送加密报文前并且长时间(触发DPD的时间间隔)未收到对端IPsec报文时发送查询。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建一个DPD,并进入DPD视图 |
ike dpd dpd-name |
必选 |
配置触发DPD的时间间隔 |
interval-time interval-time |
可选 缺省情况下,触发DPD的时间间隔为10秒 |
配置DPD报文的重传时间间隔 |
time-out time-out |
可选 缺省情况下,DPD报文的重传时间间隔为5秒 |
next payload域是在IKE协商报文(由几个payload组装而成)的最后一个payload的通用头中的一个域。按协议规定如果当前载荷处于消息的最后,该域必须为0,但某些公司的设备会将该域赋其它值,为增强设备的互通性,可以通过下面的配置取消IKE协商过程对该域的检查。
表2-8 配置取消对next payload域的检查
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置在IKE协商过程中取消对next payload域的检查 |
ike next-payload check disabled |
必选 缺省情况下,在IPsec协商过程中对next payload域进行检查 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后IKE的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以删除IKE建立的安全隧道。
表2-9 IKE显示和维护
操作 |
命令 |
显示DPD配置的参数 |
display ike dpd [ dpd-name ] [ | { begin | exclude | include } regular-expression ] |
显示IKE对等体配置的参数 |
display ike peer [ peer-name ] [ | { begin | exclude | include } regular-expression ] |
显示当前IKE SA的信息 |
display ike sa [ verbose [ connection-id connection-id | remote-address [ ipv6 ] remote-address ] ] [ | { begin | exclude | include } regular-expression ] |
显示每个IKE提议配置的参数 |
display ike proposal [ | { begin | exclude | include } regular-expression ] |
清除IKE建立的安全隧道 |
reset ike sa [ connection-id ] |
· 在Router A和Router B之间建立一个安全隧道,对Host A所在的子网(10.1.1.0/24)与Host B所在的子网(10.1.2.0/24)之间的数据流进行安全保护。
· 在Router A上配置一条IKE提议,其提议号为10,使用的认证算法为MD5。Router B使用缺省的IKE提议。
· 使用预共享密钥的认证方法。
图2-3 IKE主模式及预共享密钥认证典型组网图
请保证Router A与Router B之间路由可达。
(1) 配置安全网关Router A
# 配置ACL 3101,定义由子网10.1.1.0/24去子网10.1.2.0/24的数据流。
<RouterA> system-view
[RouterA] acl number 3101
[RouterA-acl-adv-3101] rule permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255
[RouterA-acl-adv-3101] quit
# 配置IPsec安全提议tran1。
[RouterA] ipsec transform-set tran1
# 报文封装形式采用隧道模式。
[RouterA-ipsec-transform-set-tran1] encapsulation-mode tunnel
# 安全协议采用ESP协议。
[RouterA-ipsec-transform-set-tran1] transform esp
# 选择ESP协议采用的加密算法和认证算法。
[RouterA-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterA-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterA-ipsec-transform-set-tran1] quit
# 创建IKE对等体。
[RouterA] ike peer peer
# 配置预共享密钥。
[RouterA-ike-peer-peer] pre-shared-key abcde
# 配置对端安全网关的IP地址。
[RouterA-ike-peer-peer] remote-address 2.2.2.2
[RouterA-ike-peer-peer] quit
# 创建一条IKE提议10。
[RouterA] ike proposal 10
# 指定IKE提议使用的认证算法为MD5。
[RouterA-ike-proposal-10] authentication-algorithm md5
# 使用预共享密钥认证方法。
[RouterA-ike-proposal-10] authentication-method pre-share
# 配置ISAKMP SA的存活时间为5000秒。
[RouterA-ike-proposal-10] sa duration 5000
[RouterA-ike-proposal-10] quit
# 创建一条IPsec安全策略,协商方式为isakmp。
[RouterA] ipsec policy map1 10 isakmp
# 引用安全提议。
[RouterA-ipsec-policy-isakmp-map1-10] transform-set tran1
# 引用访问控制列表。
[RouterA-ipsec-policy-isakmp-map1-10] security acl 3101
# 引用IKE对等体。
[RouterA-ipsec-policy-isakmp-map1-10] ike-peer peer
[RouterA-ipsec-policy-isakmp-map1-10] quit
# 配置接口GigabitEthernet3/0/2的IP地址。
[RouterA] interface gigabitethernet 3/0/2
[RouterA-GigabitEthernet3/0/2] ip address 10.1.1.1 255.255.255.0
[RouterA-GigabitEthernet3/0/2] quit
# 配置接口GigabitEthernet3/0/1的IP地址。
[RouterA] interface gigabitethernet 3/0/1
[RouterA-GigabitEthernet3/0/1] ip address 1.1.1.1 255.255.255.0
# 在接口GigabitEthernet3/0/1上应用IPsec安全策略组。
[RouterA-GigabitEthernet3/0/1] ipsec policy map1
# 配置到Host B所在子网的静态路由。
[RouterA] ip route-static 10.1.2.0 255.255.255.0 2.2.2.2
(2) 配置安全网关Router B
# 配置ACL 3101,定义由子网10.1.2.0/24去子网10.1.1.0/24的数据流。
<RouterB> system-view
[RouterB] acl number 3101
[RouterB-acl-adv-3101] rule permit ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
[RouterB-acl-adv-3101] quit
# 创建IPsec安全提议tran1。
[RouterB] ipsec transform-set tran1
# 报文封装形式采用隧道模式。
[RouterB-ipsec-transform-set-tran1] encapsulation-mode tunnel
# 安全协议采用ESP协议。
[RouterB-ipsec-transform-set-tran1] transform esp
# 选择ESP协议采用的加密算法和认证算法。
[RouterB-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterB-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterB-ipsec-transform-set-tran1] quit
# 配置IKE对等体。
[RouterB] ike peer peer
# 配置预共享密钥。
[RouterB-ike-peer-peer] pre-shared-key abcde
# 配置对端安全网关的IP地址。
[RouterB-ike-peer-peer] remote-address 1.1.1.1
[RouterB-ike-peer-peer] quit
# 创建一条IPsec安全策略,协商方式为isakmp。
[RouterB] ipsec policy use1 10 isakmp
# 引用访问控制列表。
[RouterB-ipsec-policy-isakmp-use1-10] security acl 3101
# 引用IPsec安全提议。
[RouterB-ipsec-policy-isakmp-use1-10] transform-set tran1
# 引用IKE对等体。
[RouterB-ipsec-policy-isakmp-use1-10] ike-peer peer
[RouterB-ipsec-policy-isakmp-use1-10] quit
# 配置接口GigabitEthernet3/0/2的IP地址。
[RouterB] interface gigabitethernet 3/0/2
[RouterB-GigabitEthernet3/0/2] ip address 10.1.2.1 255.255.255.0
[RouterB-GigabitEthernet3/0/2] quit
# 配置接口GigabitEthernet3/0/1的IP地址。
[RouterB] interface gigabitethernet 3/0/1
[RouterB-GigabitEthernet3/0/1] ip address 2.2.2.2 255.255.255.0
# 在接口GigabitEthernet3/0/1上应用IPsec安全策略组。
[RouterB-GigabitEthernet3/0/1] ipsec policy use1
# 配置到Host A所在子网的静态路由。
[RouterB] ip route-static 10.1.1.0 255.255.255.0 1.1.1.1
以上配置完成后,Router A和Router B之间如果有子网10.1.1.0/24与子网10.1.2.0/24之间的报文通过,将触发IKE协商。由于Router A上配置了提议10,其中使用的认证算法为md5,但Router B上使用的是缺省的IKE提议,默认的认证算法为sha。因此,在进行IKE提议匹配的时候,从优先级最高的提议开始匹配,因为Router B上没有和Router A上提议10相匹配的IKE提议,所以双方能够匹配的只有缺省的IKE提议。另外,在进行提议匹配的时候,存活时间是不用进行匹配的,它由IKE协商双方决定。
[RouterA] display ike proposal
priority authentication authentication encryption Diffie-Hellman duration
method algorithm algorithm group (seconds)
---------------------------------------------------------------------------
10 PRE_SHARED MD5 DES_CBC MODP_768 5000
default PRE_SHARED SHA DES_CBC MODP_768 86400
[RouterB] display ike proposal
priority authentication authentication encryption Diffie-Hellman duration
method algorithm algorithm group (seconds)
---------------------------------------------------------------------------
default PRE_SHARED SHA DES_CBC MODP_768 86400
可通过如下显示信息查看到IKE协商成功后生成的两个阶段的SA。
[RouterA] display ike sa
total phase-1 SAs: 1
connection-id peer flag phase doi
----------------------------------------------------------
1 2.2.2.2 RD|ST 1 IPSEC
2 2.2.2.2 RD|ST 2 IPSEC
flag meaning
RD--READY ST--STAYALIVE RL--REPLACED FD--FADING TO-TIMEOUT RK-REKEY
IKE第二阶段协商生成的IPsec SA用于保护子网10.1.1.0/24与子网10.1.2.0/24之间的数据流,可通过如下显示信息查看。
[RouterA] display ipsec sa
===============================
Interface: GigabitEthernet3/0/1
path MTU: 1500
===============================
-----------------------------
IPsec policy name: "map1"
sequence number: 10
acl version: ACL4
mode: isakmp
-----------------------------
PFS: N, DH group: none
tunnel:
local address: 1.1.1.1
remote address: 2.2.2.2
flow:
sour addr: 10.1.1.0/255.255.255.0 port: 0 protocol: IP
dest addr: 10.1.2.0/255.255.255.0 port: 0 protocol: IP
[inbound ESP SAs]
spi: 0x3d6d3a62(1030568546)
transform: ESP-ENCRYPT-DES ESP-AUTH-SHA1
in use setting: Tunnel
connection id: 1
sa duration (kilobytes/sec): 1843200/3600
sa remaining duration (kilobytes/sec): 1843199/3590
anti-replay detection: Enabled
anti-replay window size(counter based): 32
udp encapsulation used for nat traversal: N
[outbound ESP SAs]
spi: 0x553faae(89389742)
transform: ESP-ENCRYPT-DES ESP-AUTH-SHA1
in use setting: Tunnel
connection id: 2
sa duration (kilobytes/sec): 1843200/3600
sa remaining duration (kilobytes/sec): 1843199/3590
anti-replay detection: Enabled
anti-replay window size(counter based): 32
udp encapsulation used for nat traversal: N
本例将IPsec和ADSL相结合,是目前实际中广泛应用的典型案例。
· 公司分支局域网通过Router B接入到ATM网络,Router B作为PPPoE的client端,通过ADSL卡直接连接公网的DSLAM接入端。Router B与公网连接的接口IP地址为ISP动态分配的私网IP地址。
· 公司总部局域网通过Router A接入到ATM网络,Router A与公网连接的接口IP地址为固定的公网IP地址。
· 采用IKE协商的方式创建IPsec安全隧道保护总部与分支之间的数据安全。
图2-4 IKE野蛮模式及NAT穿越典型组网图
配置关键点:
· 由于IPsec隧道一端安全网关(Router B)的IP地址为动态获取,因此IKE的协商模式采用野蛮模式(aggressive)。
· 由于IPsec隧道的两端一端为公网地址,另一端为私网地址,因此需要在隧道两端上均配置NAT穿越功能。
(1) 配置Router A
# 配置本端安全网关设备名称。
<RouterA> system-view
[RouterA] ike local-name routera
# 配置ACL。
[RouterA] acl number 3101
[RouterA-acl-adv-3101] rule 0 permit ip source 172.16.0.0 0.0.0.255 destination 192.168.0.0 0.0.0.255
[RouterA-acl-adv-3101] quit
# 配置IKE安全提议。
[RouterA] ike proposal 1
[RouterA-ike-proposal-1] authentication-algorithm sha
[RouterA-ike-proposal-1] authentication-method pre-share
[RouterA-ike-proposal-1] encryption-algorithm 3des-cbc
[RouterA-ike-proposal-1] dh group2
# 配置IKE对等体peer。
[RouterA] ike peer peer
[RouterA-ike-peer-peer] exchange-mode aggressive
[RouterA-ike-peer-peer] pre-shared-key abc
[RouterA-ike-peer-peer] id-type name
[RouterA-ike-peer-peer] remote-name routerb
[RouterA-ike-peer-peer] nat traversal
[RouterA-ike-peer-peer] quit
# 创建IPsec安全提议tran1。
[RouterA] ipsec transform-set tran1
[RouterA-ipsec-transform-set-tran1] encapsulation-mode tunnel
[RouterA-ipsec-transform-set-tran1] transform esp
[RouterA-ipsec-transform-set-tran1] esp encryption-algorithm 3des
[RouterA-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterA-ipsec-transform-set-tran1] quit
# 创建IPsec安全策略policy并指定通过IKE协商建立SA。
[RouterA] ipsec policy policy 10 isakmp
# 配置IPsec安全策略policy引用IKE对等体peer。
[RouterA-ipsec-policy-isakmp-policy-10] ike-peer peer
# 配置IPsec安全策略policy引用访问控制列表3101。
[RouterA-ipsec-policy-isakmp-policy-10] security acl 3101
# 配置IPsec安全策略policy引用IPsec安全提议tran1。
[RouterA-ipsec-policy-isakmp-policy-10] transform-set tran1
[RouterA-ipsec-policy-isakmp-policy-10] quit
# 配置IP地址。
[RouterA] interface serial 2/1/1
[RouterA-Serial2/1/1] ip address 100.1.1.1 255.255.255.0
[RouterA-Serial2/1/1] ipsec policy policy
[RouterA-Serial2/1/1] quit
# 配置以太网口。
[RouterA] interface gigabitethernet 3/0/1
[RouterA-GigabitEthernet3/0/1] ip address 172.16.0.1 255.255.255.0
[RouterA-GigabitEthernet3/0/1] quit
# 配置到分公司局域网的静态路由。
[RouterA] ip route-static 192.168.0.0 255.255.255.0 serial 2/1/1
(2) 配置Router B
# 配置本端安全网关的名称。
<RouterB> system-view
[RouterB] ike local-name routerb
# 配置ACL。
[RouterB] acl number 3101
[RouterB-acl-adv-3101] rule 0 permit ip source 192.168.0.0 0.0.0.255 destination 172.16.0.0 0.0.0.255
[RouterB-acl-adv-3101] quit
# 配置IKE安全提议。
[RouterB] ike proposal 1
[RouterB-ike-proposal-1] authentication-algorithm sha
[RouterB-ike-proposal-1] authentication-method pre-share
[RouterB-ike-proposal-1] encryption-algorithm 3des-cbc
[RouterB-ike-proposal-1] dh group2
# 配置IKE对等体peer。
[RouterB] ike peer peer
[RouterB-ike-peer-peer] exchange-mode aggressive
[RouterB-ike-peer-peer] pre-shared-key abc
[RouterB-ike-peer-peer] id-type name
[RouterB-ike-peer-peer] remote-name routera
[RouterB-ike-peer-peer] remote-address 100.1.1.1
[RouterB-ike-peer-peer] nat traversal
[RouterB-ike-peer-peer] quit
# 创建IPsec安全提议tran1。
[RouterB] ipsec transform-set tran1
[RouterB-ipsec-transform-set-tran1] encapsulation-mode tunnel
[RouterB-ipsec-transform-set-tran1] transform esp
[RouterB-ipsec-transform-set-tran1] esp encryption-algorithm 3des
[RouterB-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterB-ipsec-transform-set-tran1] quit
# 创建IPsec安全策略policy并指定通过IKE协商建立SA。
[RouterB] ipsec policy policy 10 isakmp
# 配置IPsec安全策略policy引用IKE对等体peer。
[RouterB-ipsec-policy-isakmp-policy-10] ike-peer peer
# 配置IPsec安全策略policy引用访问控制列表3101。
[RouterB-ipsec-policy-isakmp-policy-10] security acl 3101
# 配置IPsec安全策略policy引用IPsec安全提议tran1。
[RouterB-ipsec-policy-isakmp-policy-10] transform-set tran1
[RouterB-ipsec-policy-isakmp-policy-10] quit
# 配置拨号访问控制列表。
[RouterB] dialer-rule 1 ip permit
# 创建Dialer0,使用由ISP分配的用户名和密码进行拨号和PPP认证的相关配置,并配置MTU。
[RouterB] interface dialer 0
[RouterB-Dialer0] link-protocol ppp
[RouterB-Dialer0] ppp pap local-user test password simple 123456
[RouterB-Dialer0] ip address ppp-negotiate
[RouterB-Dialer0] dialer user 1
[RouterB-Dialer0] dialer-group 1
[RouterB-Dialer0] dialer bundle 1
[RouterB-Dialer0] ipsec policy policy
[RouterB-Dialer0] mtu 1492
[RouterB-Dialer0] quit
# 配置到总公司局域网的静态路由。
[RouterB] ip route-static 172.16.0.0 255.255.255.0 dialer 0
# 配置以太网口。
[RouterB] interface gigabitethernet 3/0/1
[RouterB-GigabitEthernet3/0/1] tcp mss 1450
[RouterB-GigabitEthernet3/0/1] ip address 192.168.0.1 255.255.255.0
[RouterB-GigabitEthernet3/0/1] quit
# 配置VE口。
[RouterB] interface virtual-ethernet 0
[RouterB-Virtual-Ethernet0] pppoe-client dial-bundle-number 1
[RouterB-Virtual-Ethernet0] mac-address 0011-0022-0012
[RouterB-Virtual-Ethernet0] quit
# 对ADSL卡的ATM口进行配置。
[RouterB] interface atm 1/1/1
[RouterB-Atm1/1/1] pvc 0/100
[RouterB-atm-pvc-Atm1/1/1-0/100] map bridge virtual-ethernet 0
[RouterB-atm-pvc-Atm1/1/1-0/100] quit
配置参数建立IPsec安全隧道时,可以打开IKE的Error调试开关,帮助我们查找配置问题。其命令是:
<Router> debugging ike error
非法用户身份信息
用户身份信息是发起IPsec通信的用户用来标识自己的数据。在实际应用中我们可以通过用户身份标识实现对不同的数据流建立不同的安全隧道进行保护。目前我们是通过用户的IP地址和名字来标识用户。
可以看到调试信息:
got NOTIFY of type INVALID_ID_INFORMATION
或者
drop message from A.B.C.D due to notification type INVALID_ID_INFORMATION
检查协商两端接口上配置的IPsec安全策略中的ACL内容是否相容。建议用户将两端的ACL配置成互为镜像的。ACL镜像的含义请参考IPsec配置中“配置访问控制列表”内容。
提议不匹配
可以看到调试信息:
got NOTIFY of type NO_PROPOSAL_CHOSEN
或者:
drop message from A.B.C.D due to notification type NO_PROPOSAL_CHOSEN
协商双方没有可以匹配的提议。
对于阶段1,检查IKE proposal是否有与对方匹配的。对于阶段2协商,检查双方接口上应用的IPsec安全策略的参数是否匹配,引用的IPsec安全提议的协议、加密算法和认证算法是否有匹配的。
无法建立安全隧道
实际应用中有时会发现在不稳定的网络状态下,安全隧道无法建立或者存在安全隧道却无法通信,而且检查双方的ACL的配置正确,也有匹配的提议。
这种情况一般是安全隧道建立好以后,有一方的设备重启造成的。
· 使用display ike sa命令检查双方是否都已建立阶段1的SA。
· 使用display ipsec sa policy命令查看接口上的安全策略是否已建立了IPsec SA。
· 根据以上两步的结果查看,如果有一方存在的SA在另一方上不存在,请先使用reset ipsec sa命令清除双方不对称存在的IPsec SA,再使用reset ike sa命令清除双方不对称存在的IKE SA,并重新发起协商。
ACL配置错误,导致协商成功之后数据流不通
多台设备之间先后建立不同的安全隧道,出现同一设备有不同对端的情况。若此设备不配置ACL规则,则分别由对端发起报文来与之建立保护粒度不同的安全隧道。由于安全隧道的优先级由它们创建的顺序决定,当这一设备的出方向报文首先匹配到较粗粒度的安全隧道时,将导致此设备无法与其它较细粒度对端互通。
为避免这种情况发生,当同一设备有不同对端时,建议用户在此设备上配置ACL来区别数据流,且与不同对端尽量避免配置有重复范围的ACL子规则。若需要有重复范围的子规则,应该将细粒度的子规则配置为较高的优先级。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!