IPsec×××范畴的×××中,有多种形式的×××,各形式的×××因为架构和使用环境的不同而不同,但在IPsec×××范畴内的各×××中,都是以IPsec为基础的,在本小节中要讲到的是IPsec×××LAN-to-LAN×××,有时也被称为Site-to-Site×××,该形式的×××IPsec×××中最简单的×××,但并不代表该形式的×××是最常用的。

在配置IPsec×××范畴的×××时,无论配置哪种形式,基本上需要如下几个重要步骤: 

配置IKEISAKMP)策略

定义认证标识

配置IPsectransform

定义感兴趣流量

创建cryptomap

cryptomap应用于接口

其中每步的具体内容为:

配置IKEISAKMP)策略

定义IKE PhaseOne中的一些策略,包括加密算法(Encryption),Hash算法(HMAC),密钥算法(Diffie-Hellman),认证方式(Authentication)等等

定义认证标识

无论前面定义了何种认证方式,都需要添加认证信息,如密码、数字证书等等。

配置IPsectransform

也就是定义PhaseTwo中一些加密算法以及HMAC算法,此transformset就是定义了×××流量中的数据包是受到怎样的保护。

定义感兴趣流量

定义哪些流量需要通过×××来传输,通过IPsec来保护;匹配流量的方法为定义ACL,建议使用ExtendedACL来匹配指定的流量,ACL中被permit匹配的的流量表示加密,而被deny匹配的流量则表示不加密。

注:在配置ACL定义感兴趣流量时需要格外注意的是ACL中不要使用any来表示源或者目标,否则会出问题。

创建cryptomap

将之前定义的ACL,加密数据发往的对端,以及IPsectransform结合在cryptomap中。

cryptomap应用于接口

cryptomap配置后,是不会生效的,必须将cryptomap应用到接口上,目前还没有听说cryptomap对接口类型有任何要求,也就是正常接口都可以应用,当然必须是三层可路由接口。

因为目前Cisco产品中能够配置×××的设备有许多,而目前较流行的设备有Router(路由器),PIX(防火墙),ASA(防火墙)

实验拓扑图如下:


1.配置基础网络环境

1)配置R1

r1(config)#intf0/0

r1(config-if)#ip add12.1.1.1 255.255.255.0

r1(config-if)#nosh

r1(config-if)#exit

r1(config)#intf0/1

r1(config-if)#ip add10.1.1.1 255.255.255.0

r1(config-if)#nosh

r1(config-if)#exit

r1(config)#ip route0.0.0.0 0.0.0.0 12.1.1.2

说明:配置R1的接口地址,并写默认路由指向Internet(路由器R2),地址12.1.1.2

2)配置R2

r2(config)#intf0/0

r2(config-if)#ip add12.1.1.2 255.255.255.0

r2(config-if)#nosh

r2(config-if)#exit

r2(config)#intf0/1

r2(config-if)#ip add23.1.1.2 255.255.255.0

r2(config-if)#nosh

r2(config-if)#exit

说明:配置R2的接口地址,因为R2模拟InternetR2只需要有公网路由12.1.1.023.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。

3)配置R3

r3(config)#intf0/0

r3(config-if)#ip add192.168.1.3 255.255.255.0

r3(config-if)#nosh

r3(config-if)#exit

r3(config)#intf0/1

r3(config-if)#ip add23.1.1.3 255.255.255.0

r3(config-if)#nosh

r3(config-if)#exit

r3(config)#ip route0.0.0.0 0.0.0.0 23.1.1.2

说明:配置R3的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2

3.配置LAN-to-LAN×××

1)在R1上配置IKEISAKMP)策略:

r1(config)#crypto isakmppolicy 1    //定义第一阶段poliy策略,本地意义,默认已经有策略了,这是里自定义

 

r1(config-isakmp)#encryption3des   //加密方式为3des

r1(config-isakmp)#hashsha         //hash算法为sha

r1(config-isakmp)#authenticationpre-share  //认证方式为Pre-SharedKeys

r1(config-isakmp)#group2    //密钥算法(Diffie-Hellman)为group2

 

r1(config-isakmp)#exit

说明:定义了ISAKMP policy1,加密方式为3deshash算法为sha,认证方式为Pre-Shared Keys(PSK),密钥算法(Diffie-Hellman)为group2

2)在R1上定义认证标识:

r1(config)#crypto isakmpkey 0 cisco123 address 23.1.1.3 //定义域共享秘钥,对方的ip地址

 

3)在R1上配置IPsectransform:

r1(config)#crypto ipsectransform-set ccie esp-3des esp-sha-hmac //定义第二阶段的策略,也是默认就存在的,定义加密方式和哈希

 

r1(cfg-crypto-trans)#exit

说明:配置了transform-setccie,其中数据封装使用esp3des加密,并且使用esp结合shahash计算,默认的IPsecmodetunnel

4)在R1上定义感兴趣流量:

r1(config)#access-list100 permit ip 10.1.1.0 0.0.0.255 192.168.1.0 0.0.0.255 //定义感兴趣流,用扩展acl来定义,在另一边路由器上配置的源和目的必须颠倒,其他什么都要一样才行

 

说明:这里需要被IPsec保护传输的流量为上海公司至北京公司的流量,即10.1.1.0/24发往192.168.1.0/24的流量,切记不可使用any来表示地址。

5)在R1上创建cryptomap:

r1(config)#crypto mapl2l(这个代表名字也是自定义的) 1ipsec-isakmp   //系列号只具有本地意义,关联兴趣流

 

r1(config-crypto-map)#setpeer 23.1.1.3

r1(config-crypto-map)#settransform-set ccie

r1(config-crypto-map)#matchaddress 100

r1(config-crypto-map)#exit

说明:在R1上配置cryptomapl2l,序号为1,即第1组策略,其中指定加密

数据发往的对端为23.1.1.3,即和23.1.1.3建立IPsec隧道,调用的IPsectransformccie,并且指定ACL100中的流量为被保护的流量。

6)在R1上将cryptomap应用于接口:

r1(config)#intf0/0

r1(config-if)#crypto mapl2l

r1(config-if)#exit

r1(config)#

说明:将cryptomap应用在去往北京公司的接口F0/0上。

7)使用相同方式配置R3LAN-to-LAN×××:

r3(config)#crypto isakmppolicy 1

r3(config-isakmp)#encryption3des

r3(config-isakmp)#hashsha

r3(config-isakmp)#authenticationpre-share

r3(config-isakmp)#group2

r3(config-isakmp)#exit

r3(config)#crypto isakmpkey 0 cisco123 address 12.1.1.1

r3(config)#crypto ipsectransform-set ccie esp-3des esp-sha-hmac

r3(cfg-crypto-trans)#exit

r3(config)#access-list100 permit ip 192.168.1.0 0.0.0.255 10.1.1.0 0.0.0.255

r3(config)#crypto mapl2l 1 ipsec-isakmp

r3(config-crypto-map)#setpeer 12.1.1.1

r3(config-crypto-map)#settransform-set ccie

r3(config-crypto-map)#matchaddress 100

r3(config-crypto-map)#exit

r3(config)#

r3(config)#intf0/1

r3(config-if)#crypto mapl2l

r3(config-if)#

说明:R3R1IKEIPsec策略必须保持一致。

c2#ping192.168.1.4

Sending 5, 100-byte ICMPEchos to 192.168.1.4, timeout is 2 seconds:

.!!!!

Success rate is 80percent (4/5), round-trip min/avg/max = 64/125/212 ms


说明:上海公司c2向北京公司c1发送的5个数据包,有4个成功穿越了Internet,说明该流量激活了IKESA,并且在双方应该成功建立了IPsec隧道,所以才实现了×××的功能。




这是因为nat比vpn的优先级高,因此数据包的ip头部的ip首先被nat的感兴趣流匹配,进行地址转换,转换后就不匹配vpn感兴趣流,就不会被加密,撞击map,因为有缺省路由,从接口发送至互联网。所以互联网收到之后查看数据包,目的为私网地址,直接丢弃,因此不通

 

4)删除R1上的NAT

r1(config)#access-list 1deny 10.1.1.0 0.0.0.255

r1(config)#access-list 1permit any

r1#cle ip nattranslation *

说明:因为被NAT转换的流量不再是合法的IPsec流量,所以我们将需要被IPsec保护的从上海发往北京的流量,即10.1.1.0/24发往192.168.1.0/24的流量不被NAT转换。

5)再次从上海公司c2向北京公司c1发送流量:

c2#ping192.168.1.4

Type escape sequence toabort.

Sending 5, 100-byte ICMPEchos to 192.168.1.4, timeout is 2 seconds:

!!!!!


说明:不被NAT转换的流量和之前一样再次通过IPsec×××隧道穿越了Internet

注意:内网有多少网段,感兴趣流就要建立多少条。

 

问题来了,因为ipsecvpn和nat是冲突的,然而在现实企业中有的电脑是即需要上外网又需要访问公司vpn内网,解决方案如下:在nat的感兴趣流配置中,deny掉通信点与通信点直接的流量,让匹配上这个流量不进行地址转换,具体命令见下篇博文中,持续讲解asa防火墙上的vpn。