一、 配置實例及說明
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
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
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
其他分公司的配置與此類似,就不再重複了。
下面再來看看IPSec ***建立的過程:
當有總部訪問各分公司數據流量到達這個接口時,就根據加密映射的策略進行判斷。例如目標地址在銅陵分公司的地址段內,首先和優先級是10的策略進行比較,就會發現和優先級10的策略中定義的地址段不相符,那麼就會忽略優先級10的加密策略;然後再和優先級是20的加密策略比較,這時發現要訪問的目標地址和優先級20定義的地址段正好匹配,那麼就開始和優先級20中定義的對端地址進行先進行階段一的協商,包括密鑰的交換,對等體的認證,完整性算法等參數,協商成功後再進行階段二的協商,包括採用哪種協議進行封裝、是否使用加密和認證,然後建立SA,成功後就建立了一條安全通道。那麼總部到銅陵分公司的數據就可以通過互聯網在這條安全通道內進行加密傳送了。