普通的IPSEC ×××主要适用于不同厂家×××之间的对接,兼容性非常好,IOS路由器和ASA可以和大部分的非思科厂家的×××设备进行IPSEC ×××对接。然而,这种普通的IPSEC ×××并不适用于复杂的网络环境,主要存在如下问题:

  1. 由于没有虚拟隧道接口,不支持通过运行动态路由协议来实现路由互通;

  2. 由于没有虚拟隧道接口,不能对通信点之间的明文流量进行控制和监测(如ACL、QOS、NAT、Netflow等);

  3. 操作较多,每增加一个站点或网段,都要增加许多感兴趣流,排错复杂。

为了解决普通IPSEC ×××配置存在的问题,Cisco IOS提供了两种解决方案,如下:

  1. GREover IPSEC

  2. SVTI(12.4以后开始支持)

 

       今天介绍GRE Over IPSEC 技术。所谓GRE Over IPSEC,即通过GRE来建立虚拟隧道,运行动态路由协议(解决普通IPSEC ×××不支持动态路由协议,感兴趣多的问题)来学习路由,通过在虚拟隧道接口上配置ACL、QOS等技术来控制数据流(解决上述第二个问题),通过IPSEC技术将GRE隧道中的数据进行保护。

 

注意:思科的ASA不支持GRE技术,只能使用普通 IPSEC ×××技术,因此当部署站点到站点的×××的时候,优先使用思科的路由器。思科的路由器在购买的时候需要向代理商询问购买的路由器是否包含了Security的license,否则还可能需要额外购买license。

 

分析GREOver IPSec 解决问题的思路

wKiom1YWEEqhUR5QAAFYqZCiAwM605.jpg

wKiom1YWEEqTgjKLAALX8D_FuhE119.jpg

       如图所示,我们为使两个站点连通,使用GRE在两台路由器之间建立了一条隧道,GRE隧道的作用就是虚拟地把两个站点连接在一起,就像是拉了一根专线一样把站点A(R1路由器)和站点B(R3路由器)连接起来,中间没有其他设备。这样就可以在这根“线”两端的两个接口上配置IP地址,并且运行动态路由选择协议,使得两台路由器分别学习到对方身后网络的路由。这样,已经解决了第一个问题,可以运行动态路由协议;第二个问题,在tunnel接口进行数据控制和采集。接下来来分析使感兴趣流减少的问题。图中的A和B分别是两个站点的公网IP地址,读者可以从图中发现一个规律,即不管GRE封装之前的原始数据如何,封装之后的源IP都是A,目标IP都是B,也就是我们只需要将A到B和B到A的流量分别在R1和R3上配置为感兴趣流即可。这样就可以把所有的GRE流量都进行了加密。这样,通过GRE Over IPSec,即解决了安全问题,也解决了普通IPSEC ×××感兴趣流过多,配置复杂的问题。


wKioL1YWEPXBIAUUAAIfSo4QA3A088.jpg

       GRE Over IPSEC,加密点等于通信点,是一个典型的传输模式的IPSEC×××,因此GRE Over IPSEC推荐使用传输模式。如果使用隧道模式,就会增加一个20字节的IP头部,因此,GRE技术经过IPSEC加密使用传输模式更加优化。


下面演示一个实验

实验拓扑:

wKioL1YWEMDjl3fpAAE-mj3RVaQ477.jpg


基础配置如下:

R1配置:

en

conf t

host R1

int f0/0

ip add 12.1.1.1 255.255.255.0

no shut

int lo 0

ip add 1.1.1.1 255.255.255.0

ip route 0.0.0.0 0.0.0.0 12.1.1.2

 

 

R2配置:

en

conf t

host R2

int f0/0

ip add 12.1.1.2 255.255.255.0

no shut

int f1/0

ip add 23.1.1.2 255.255.255.0

no shut

 

R3配置:

en

conf t

host R3

int f1/0

ip add 23.1.1.3 255.255.255.0

no shut

int lo 0

ip add 3.3.3.3 255.255.255.0

ip route 0.0.0.0 0.0.0.0 23.1.1.2


配置完成后,检测R1和R3的连通性:

在R1上pingR3的公网IP地址:

R1#ping 23.1.1.3

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 23.1.1.3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 60/67/80 ms

可以ping通,说明公网通信正常。


GRE隧道配置:

R1配置如下:

int tunnel 0

ip add 172.16.1.1 255.255.255.0

tunnel source f0/0

tunnel destination 23.1.1.3

 

R3配置如下:

int tunnel 0

ip add 172.16.1.2 255.255.255.0

tunnel source f1/0

tunnel destination 12.1.1.1


配置完成后,检查GRE的连通性:

在R1上ping对端tunnel接口的IP地址:R1#ping 172.16.1.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 172.16.1.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 152/168/196 ms

可以ping通,说明GRE配置正确。


GRE Over IPSEC配置:

GRE Over IPSEC有配置起来有两种实现方法,一种是按照按照我们的分析思路,配置crypto策略,ipsec转换集,再配置感兴趣流,最后配置crypto map来实现;另一种是在Cisco提供的直接在tunnel接口下启用ipsec保护,通过ipsec profile的方式来进行加密GRE流量,相比第一种更加简单,但实现的效果是一样的,我们在R1上使用第一种配置方法,在R3上使用第二种配置方法。


R1(config)#crypto isakmp policy 10   

R1(config-isakmp)# hash md5

R1(config-isakmp)# authentication pre-share

R1(config-isakmp)#

R1(config-isakmp)#crypto isakmp key cisco address 23.1.1.3

R1(config)#

R1(config)#crypto ipsec transform-set trans esp-des esp-md5-hmac 

R1(cfg-crypto-trans)# mode transport

R1(cfg-crypto-trans)#

R1(cfg-crypto-trans)#access-list 100 permit gre host 12.1.1.1 host 23.1.1.3

//注意:这里是将R1去往R3的GRE流量进行加密,因此协议需要选择GRE,如果是IP,将会出问题。

R1(config)#

R1(config)#crypto map cisco 10 ipsec-isakmp

% NOTE: This new crypto map will remain disabled until a peer

        and a valid access list have been configured.

R1(config-crypto-map)#set peer 23.1.1.3

R1(config-crypto-map)#set transform-set trans

R1(config-crypto-map)#match address 100

R1(config-crypto-map)#

R1(config-crypto-map)#int f0/0

R1(config-if)#crypto map cisco


R3配置如下:

R3(config)#crypto isakmp policy 10

R3(config-isakmp)# hash md5

R3(config-isakmp)# authentication pre-share

R3(config-isakmp)#crypto isakmp key cisco address 12.1.1.1

R3(config)#!

R3(config)#crypto ipsec transform-set trans esp-des esp-md5-hmac 

R3(cfg-crypto-trans)# mode transport

R3(cfg-crypto-trans)#!

R3(cfg-crypto-trans)#crypto ipsec profile ipsec-profile

R3(ipsec-profile)# set transform-set trans 

R3(ipsec-profile)#

R3(ipsec-profile)#int tunnel 0

R3(config-if)#tunnel protection ipsec profile ipsec-profile

这是一种全新的IPsec Profile的配置方式,仅仅在ipsec profile下配置了转换集,而没有设置对等体和感兴趣的内容。但需要注意的是,这个配置是被运用在接口下的,因此用来保护的是这个tunnel接口下的流量,所以感兴趣流是有的。对等体也不缺少,因为保护隧道,隧道的目的自然是IPSEC的对等体。这种配置方式还会在VTI和DM×××中继续采用。


验证:

在R1和R3上分别查看IKE SA和IPSEC的SA

R1#show crypto isakmp sa 

IPv4 Crypto ISAKMP SA

dst             src             state          conn-id slot status

12.1.1.1        23.1.1.3        QM_IDLE           1001    0 ACTIVE


R1#show crypto ipsec sa 


interface: FastEthernet0/0

    Crypto map tag: cisco, local addr 12.1.1.1


   protected vrf: (none)

   local  ident (addr/mask/prot/port): (12.1.1.1/255.255.255.255/47/0)

   remote ident (addr/mask/prot/port): (23.1.1.3/255.255.255.255/47/0)

   current_peer 23.1.1.3 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 10, #pkts encrypt: 10, #pkts digest: 10

    #pkts decaps: 10, #pkts decrypt: 10, #pkts verify: 10

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 0, #recv errors 0


     local crypto endpt.: 12.1.1.1, remote crypto endpt.: 23.1.1.3

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0

     current outbound spi: 0xD2177EFF(3524755199)


     inbound esp sas:

      spi: 0xD9C7873B(3653732155)

        transform: esp-des esp-md5-hmac ,       

        in use settings ={Transport, }     //传输模式

        conn id: 1, flow_id: SW:1, crypto map: cisco

        sa timing: remaining key lifetime (k/sec): (4568194/3365)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE


     outbound esp sas:

      spi: 0xD2177EFF(3524755199)

        transform: esp-des esp-md5-hmac ,

        in use settings ={Transport, }    

        conn id: 2, flow_id: SW:2, crypto map: cisco

        sa timing: remaining key lifetime (k/sec): (4568194/3364)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE


查看加解密:


R1#show crypto engine connections active 

Crypto Engine Connections

   ID Interface  Type  Algorithm           Encrypt  Decrypt IP-Address

    1 Fa0/0      IPsec DES+MD5                   0       10 12.1.1.1

    2 Fa0/0      IPsec DES+MD5                  10        0 12.1.1.1

 1001 Fa0/0      IKE   MD5+DES                   0        0 12.1.1.1


运行动态路由协议:

R1配置:

router ospf 110

router-id 1.1.1.1

net 172.16.1.0 0.0.0.255 a 0

net 1.1.1.0 0.0.0.255 a 0


R3配置:

router ospf 110

router-id 3.3.3.3

net 172.16.1.0 0.0.0.255 a 0

net 3.3.3.0 0.0.0.255 a 0


测试R1和R3身后的网络:

R1#ping 3.3.3.3 source 1.1.1.1

Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1 

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 116/146/188 ms


ping测试成功,到此,实验完成。