一、 配置实例及说明
1. 用路由器实现站点到站点的IPSec ×××
以笔者单位的网络拓扑结构为例来说明使用路由器实现站点到站点的IPSec ×××的配置。本例中总部和三个分公司都具有固定的公网IP地址,路由器型号为Cisco3845,拓扑如图一所示:
图1
总部路由器阶段一的配置:
ZB(config)#crypto isakmp policy 10 //建立一个新的密钥交换策略,优先级为10,优先级号是从1到100000,1的优先级最高
ZB(config-isakmp)#encryption 3des //使用3DES的加密算法
ZB(config-isakmp)#authentication pre-share //使用预共享密钥认证对等体
ZB(config-isakmp)#hash sha //使用SHA散列算法,这一条配置命令可不用配置,因为默认的就是采用的这种散列算法
ZB(config-isakmp)#group 2 //密钥交换算法采用DH密钥协议组2的算法
由于采用的是预共享密钥的方式认证对等体,因此需要回到全局配置模式下,指定对等体的密钥:
ZB(config)#crypto isakmp key cjgs*** add 58.216.222.106 //密钥为cjgs***,然后分别指定三个分公司的路由器公网接口的IP地址
ZB(config)#crypto isakmp key cjgs*** add 218.22.189.82
ZB(config)#crypto isakmp key cjgs*** add 218.75.208.74
总部路由器阶段二的配置:
ZB(config)#crypto ipsec transform-set cjgsset esp-3des esp-sha-hmac //定义IPSec的转换集,转换集的名字为cjgsset,并指定采用ESP协议提供对整个数据包的加密和认证,加密采用3DES算法,认证采用SHA算法
ZB(cfg-crypto-trans)#mode tunnel //使用隧道模式,这条配置命令也可以不用配置,默认就是采用隧道模式
IPSec的两个阶段配置完成后,接下来定义需要保护的数据类型,定义加密映射,并将加密映射映射到路由器的公网接口上:
ZB(config)#ip access-list extended cz //这里的几条访问列表定义要被保护的数据,即总部访问三个分公司的数据流。172.19.0.0/18是总部的地址段,172.19.64.0/18是株洲分公司的地址段,172.19.128.0/19是铜陵分公司的地址段,172.19.160.0/19是常州分公司的地址段
ZB(config-ext-nacl)#permit ip 172.19.0.0 0.0.63.255 172.19.160.0 0.0.31.255
ZB(config-ext-nacl)#exit
ZB(config)#ip access-list ext tl //总部到铜陵分公司的流量
ZB(config-ext-nacl)#permit ip 172.19.0.0 0.0.63.255 172.19.128.0 0.0.31.255
ZB(config-ext-nacl)#exit
ZB(config)#ip access-list ext zz //总部到株洲分公司的流量
ZB(config-ext-nacl)#permit ip 172.19.0.0 0.0.63.255 172.19.64.0 0.0.63.255
ZB(config)#crypto map cjgsmap 10 ipsec-isakmp //建立优先级为10,名字为cjgsmap的加密映射,并使用ISAKMP(即阶段一协商的参数)来自动建立IPSec SA
ZB(config-crypto-map)#match add cz //匹配加密映射需要保护的流量,这里是匹配到常州分公司的流量
ZB(config-crypto-map)#set transform-set cjgsset //使用cjgsset变换集定义的IPSec参数
ZB(config-crypto-map)#set peer 58.216.222.106 //定义对等体的地址,即常州分公司路由器公网接口的IP地址
ZB(config-crypto-map)#exit
ZB(config)#crypto map cjgsmap 20 ipsec-isakmp //定义优先级为20的加密映射
ZB(config-crypto-map)#match add tl //匹配到铜陵分公司的流量
ZB(config-crypto-map)#set transform-set cjgsset
ZB(config-crypto-map)#set peer 218.22.189.82 //铜陵分公司路由器公网接口的IP地址
ZB(config-crypto-map)#exit
ZB(config)#crypto map cjgsmap 30 ipsec-isakmp //定义优先级为30的加密映射
ZB(config-crypto-map)#match add zz //匹配到株洲分公司的流量
ZB(config-crypto-map)#set tran cjgsset
ZB(config-crypto-map)#set peer 218.75.208.74 //株洲分公司路由器公网接口的IP地址
加密映射的策略定义完成后,将加密映射应用到总部路由器的公网接口上:
ZB(config)#int fa0/0
ZB(config-int)crypto map cjgsmap
至此总部路由器上的配置即完成。
分公司的配置以铜陵分公司为例,阶段一和阶段二的参数必须采用和先前定义的一致,否则总部和分公司之间就不能建立加密的安全通道,具体的配置命令与总部路由器上的一样,配置结果如下:
crypto isakmp policy 100 //建立优先级为100的密钥交换策略
encr 3des //采用3DES加密
authentication pre-share //采用预共享密钥认证
group 2 //采用DH组2的密钥交换算法
crypto isakmp key cjgs*** address 59.175.234.100 //建立预共享密钥,必须和总部的配置一致
crypto ipsec transform-set tl esp-3des esp-sha-hmac //建立IPSec转换集,使用ESP协议,采用3DES算法加密,SHA算法认证,并使用隧道模式
crypto map zb*** 100 ipsec-isakmp //建立优先级为100的加密策略,使用ISAKMP自动生成SA,策略名为zb***
set peer 59.175.234.100 //设定总部的路由器的公网口地址
set transform-set tl //使用名称为tl的转换集和IPSec参数
match address zb //匹配铜陵分公司到总部的流量
interface FastEthernet0/0
ip address 218.22.189.82 255.255.255.248
crypto map zb*** //将加密策略应用到接口
ip access-list extended zb
permit ip 172.19.128.0 0.0.31.255 172.19.0.0 0.0.63.255 //定义铜陵分公司到总部的流量
其他分公司的配置与此类似,就不再重复了。
下面再来看看IPSec ×××建立的过程:
当有总部访问各分公司数据流量到达这个接口时,就根据加密映射的策略进行判断。例如目标地址在铜陵分公司的地址段内,首先和优先级是10的策略进行比较,就会发现和优先级10的策略中定义的地址段不相符,那么就会忽略优先级10的加密策略;然后再和优先级是20的加密策略比较,这时发现要访问的目标地址和优先级20定义的地址段正好匹配,那么就开始和优先级20中定义的对端地址进行先进行阶段一的协商,包括密钥的交换,对等体的认证,完整性算法等参数,协商成功后再进行阶段二的协商,包括采用哪种协议进行封装、是否使用加密和认证,然后建立SA,成功后就建立了一条安全通道。那么总部到铜陵分公司的数据就可以通过互联网在这条安全通道内进行加密传送了。