实例一 Cisco路由器实现L2L IPSec×××——自明教教主


拓扑图:

wKiom1dmQtXjesrOAAOqsZbfmuM636.png

描述:

通讯点:PC1的1.1.1.1和Site2的2.2.2.2

加密点:Site1的202.100.1.1和Site2的61.128.1.1

要求:通信点间通过IPSEC ×××实现安全通信


PC1:

基础配置:

en

config t

no ip domain-lookup

line vty 0 15

logging synchronous

exec-timeout 0 0

password cisco

exit


接口配置:

int f0/0

ip add 10.1.1.10 255.255.255.0

no shut

int lo 0

ip add 1.1.1.1 255.255.255.0

end

 

路由配置:

config t

ip route 2.2.2.0 255.255.255.0 10.1.1.1 //只需配置去往Site2通讯点的路由。将去往远端通讯点的路由送往本地加密设备的内部端口。


Site1:

基础配置:

en

config t

no ip domain-lookup

line vty 0 15

logging synchronous

exec-timeout 0 0

password cisco

exit


接口配置

int f0/0

ip add 10.1.1.1 255.255.255.0

no shut

int f1/0

ip add 202.100.1.1 255.255.255.0

no shut

end

ping 10.1.1.10


路由配置:

conf t

ip route 1.1.1.0 255.255.255.0 10.1.1.10 //解决去往本地通讯点的路由

ip route 61.128.1.1 255.255.255.255 202.100.1.10 //解决远端加密点路由

ip route 2.2.2.0 255.255.255.0 202.100.1.10 //远端通讯点路由。若不加此路由条目,路由器会直接丢弃去往远端通讯点的数据包。(1)当来自PC1的报文到达Site1的内部端口时首先会根据IP包头的源目地址查路由表(也就是该条路由)。(2)路由查到会企图通过外部端口送出。(3)因为该外部端口上配置有MAP,根据IP头信息匹配MAP的感兴趣流。(4)匹配上感兴趣流后会出发加密。(5)经过ESP封装,再次送往路由器查询路由表。(6)匹配上去往远端加密点的路由后再从外部接口送出,此时经过ESP封装的报文不匹配MAP的ACL,放行从外部端口送出。如下图:

wKioL1dmQrSzQkHSAAPebIMUjvA924.png


配置L2L IPSec×××:

第一阶段,IKE(ISAKMP) SA:

激活ISAKMP:

Site1(config)#crypto isakmp enable //路由器可选,默认已经激活

配置ISAKMP SA:

Site1(config)#crypto isakmp policy 10 //此处如果直接exit则会集成默认配置

Site1(config-isakmp)#encryption 3des //指定加密算法

Site1(config-isakmp)#hash md5 //指定hash算法

Site1(config-isakmp)#authentication pre-share //指定认证方式

Site1(config-isakmp)#group 2 //指定DH算法为group2

Site1(config-isakmp)#exit

指定远端加密点和认证时用的预共享口令:

Site1(config)#crypto isakmp key 0 L2Lkey address 61.128.1.1


第二阶段,IPSEC SA:

配置感兴趣流:

Site1(config)#ip access-list extended ***

Site1(config-ext-nacl)#permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255

Site1(config-ext-nacl)#exit

配置IPSec策略:

Site1(config)#crypto ipsec transform-set Trans esp-des esp-md5-hmac //此处确定了感兴趣流实际的加密和认证算法

Site1(cfg-crypto-trans)#exit


配置Crypto map:

Site1(config)#crypto map cry-map 10 ipsec-isakmp //一个接口只能调用一个MAP,一个MAP可以有多个ID,一个ID表示一个×××

Site1(config-crypto-map)#set peer 61.128.1.1 //和谁建×××

Site1(config-crypto-map)#match address *** //匹配什么流量

Site1(config-crypto-map)#set transform-set Trans //使用哪个转换集来处理

Site1(config-crypto-map)#exit

应用Crypto map至端口:

Site1(config)#int f1/0

Site1(config-if)#crypto map cry-map

Site1(config-if)#end


Internet:

基础配置:

en

config t

no ip domain-lookup

line vty 0 15

logging synchronous

exec-timeout 0 0

password cisco

exit


接口配置:

int f1/0

ip add 202.100.1.10 255.255.255.0

no shut

int f0/0

ip add 61.128.1.10 255.255.255.0

no shut

end

ping 202.100.1.1


Site2:

基础配置:

en

config t

no ip domain-lookup

line vty 0 15

logging synchronous

exec-timeout 0 0

password cisco

exit


接口配置:

int f0/0

ip add 61.128.1.1 255.255.255.0

no shut

int lo 0

ip add 2.2.2.2 255.255.255.0

no shut

exit

do ping 61.128.1.10


路由配置:

ip route 202.100.1.1 255.255.255.255 61.128.1.10 //远端加密点;

ip route 1.1.1.0 255.255.255.0 61.128.1.10 //远端通讯点;

do ping 202.100.1.1


配置L2L IPSec×××:

第一阶段,IKE(ISAKMP) SA:

Site2(config)#crypto isakmp enable 

Site2(config)#crypto isakmp policy 10

Site2(config-isakmp)#encryption 3des 

Site2(config-isakmp)#hash md5 

Site2(config-isakmp)#authentication pre-share 

Site2(config-isakmp)#group 2

Site2(config-isakmp)#exit


Site2(config)#crypto isakmp key 0 L2Lkey address 202.100.1.1


第二阶段,IPSEC SA:

配置感兴趣流:

Site2(config)#ip access-list extended ***

Site2(config-ext-nacl)#permit ip 2.2.2.0 0.0.0.255 1.1.1.0 0.0.0.255

Site2(config-ext-nacl)#exit

配置IPSec策略:

Site2(config)#crypto ipsec transform-set cisco esp-des esp-md5-hmac 

Site2(cfg-crypto-trans)#exit


配置Crypto map:

Site2(config)#crypto map cry-map 10 ipsec-isakmp 

Site2(config-crypto-map)#set peer 202.100.1.1

Site2(config-crypto-map)#match address *** 

Site2(config-crypto-map)#set transform-set cisco

Site2(config-crypto-map)#exit

应用Crypto map至端口:

Site2(config)#int f0/0

Site2(config-if)#crypto map cry-map

Site2(config-if)#exit


验证:

PC1#ping 2.2.2.2 source 1.1.1.1 repeat 100

抓包截图:

wKioL1dmQ8KhGl2gAABoUuew9-s086.png


查看ISAKMP SA

Site1#show crypto isakmp sa

wKioL1dmREfSWUSyAAAj7M9cbWI479.png


查看IPSec SA:

Site1#show crypto ipsec sa

wKiom1dmRJ3Ty1ZqAAGJp_8MLvA958.png

wKiom1dmRJ7RoUVvAACH8usjtPs982.png


检查活动的SA:

Site1#show crypto engine connections active 

wKiom1dmRNjDvuaiAABemRvuHVA168.png

可见,一个正常的IPSEC SA包含一个双向的IKE SAISAKMP SA)和两个单向的IPSEC SA,其中一个用于加密一个用于解密。

检查一个IPSEC ×××是否正常,一般情况下使用show crypto engine connections active命令,能看到三个SA,并且加解密的数据包和PING通的数据包数量一致,基本上就无需再进一步验证了。


查看crypto会话:

Site1#show crypto session

wKioL1dmRSOyUgjHAAB2oNLp3VM765.png

 
可见:加密端口为f1/0,状态为ACTIVE;一个IKE SA,本地和对端的IP地址和端口(500/UDP);两个IPSEC SA的状态为ACTIVE,匹配的感兴流。


清除SAs:

清除IKE/ISAKMP SA

Site1#clear crypto isakmp       

清除IPSec SA:            

Site1#clear crypto sa

再次查看:

wKioL1dmRk3BQVGDAAAiFEmrgiU740.png