在IPsec×××范畴的×××中,有多种形式的×××,各形式的×××因为架构和使用环境的不同而不同,但在IPsec×××范畴内的各×××中,都是以IPsec为基础的,在本小节中要讲到的是IPsec×××之LAN-to-LAN×××,有时也被称为Site-to-Site×××,该形式的×××是IPsec×××中最简单的×××,但并不代表该形式的×××是最常用的。
在配置IPsec×××范畴的×××时,无论配置哪种形式,基本上需要如下几个重要步骤:
配置IKE(ISAKMP)策略
定义认证标识
配置IPsectransform
定义感兴趣流量
创建cryptomap
将cryptomap应用于接口
其中每步的具体内容为:
配置IKE(ISAKMP)策略
定义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模拟Internet,R2只需要有公网路由12.1.1.0和23.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上配置IKE(ISAKMP)策略:
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,加密方式为3des,hash算法为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-set为ccie,其中数据封装使用esp加3des加密,并且使用esp结合sha做hash计算,默认的IPsecmode为tunnel。
(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上配置cryptomap为l2l,序号为1,即第1组策略,其中指定加密
数据发往的对端为23.1.1.3,即和23.1.1.3建立IPsec隧道,调用的IPsectransform为ccie,并且指定ACL100中的流量为被保护的流量。
(6)在R1上将cryptomap应用于接口:
r1(config)#intf0/0
r1(config-if)#crypto mapl2l
r1(config-if)#exit
r1(config)#
说明:将cryptomap应用在去往北京公司的接口F0/0上。
(7)使用相同方式配置R3的LAN-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)#
说明:R3与R1的IKE和IPsec策略必须保持一致。
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。