本文主要介绍如何在Cisco路由上配置类型为站点到站点的IPSec ×××,实现L2L的安全通信。实验拓扑如下:
实验目的:
1.配置总公司与各分公司之间以及各分公司之间的×××,使它们能透过Internet实现安全的访问。
2.配置PAT实现总公司与各分公司访问Internet。
实验环境:
使用DynamipsGUI工具模拟出4台路由器和3台虚拟PC。
各设备IP分配如下:
路由器R1:f0/0: 200.0.10.1/30,f1/0: 1.1.1.1/24
路由器R2:f0/0: 200.0.20.1/30,f1/0: 2.2.2.2/24
路由器R3:f0/0: 200.0.30.1/30,f1/0: 3.3.3.3/24
路由器ISP:f0/0: 200.0.30.20.2/30,f1/0: 200.0.30.2/30,f2/0: 200.0.10.2/30 loopback: 4.4.4.4/24
虚拟PC:VPCS1:1.1.1.2/24,VPCS2:2.2.2.3/24,VPCS3:3.3.3.4/24
路由器与虚拟PC的连线如下:
R1 F0/0 <----> R4 F2/0
R1 F1/0 <----> VPCS V0/1
R2 F0/0 <----> R4 F0/0
R2 F1/0 <----> VPCS V0/2
R3 F0/0 <----> R4 F1/0
R3 F1/0 <----> VPCS V0/3
R1 F1/0 <----> VPCS V0/1
R2 F0/0 <----> R4 F0/0
R2 F1/0 <----> VPCS V0/2
R3 F0/0 <----> R4 F1/0
R3 F1/0 <----> VPCS V0/3
一.路由器R1的配置(接口IP,路由,×××,PAT):
基本配置:
R1(config)#int f0/0
R1(config-if)#ip add 200.0.10.1 255.255.255.252
R1(config-if)#no sh
R1(config-if)#int f1/0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(config-if)#no sh
R1(config)#ip route 0.0.0.0 0.0.0.0 200.0.10.2
R1(config)#int f0/0
R1(config-if)#ip add 200.0.10.1 255.255.255.252
R1(config-if)#no sh
R1(config-if)#int f1/0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(config-if)#no sh
R1(config)#ip route 0.0.0.0 0.0.0.0 200.0.10.2
配置IPSec ×××
R1(config)#crypto isakmp policy 1 //建立管理连接策略
R1(config-isakmp)#encryption 3des //指定管理连接建立后的最后两个数据报文(用于身份验证)采用何种加密算法
R1(config-isakmp)#hash sha //验证过程中采用HMAC的功能
R1(config-isakmp)#authentication pre-share //指定身份验证的方式
R1(config-isakmp)#group 2 //指定DH密钥组
R1(config-isakmp)#exit
R1(config)#crypto isakmp key 0 sjzz address 200.0.20.1
配置总公司A与分公司B之间的×××
R1(config)#access-list 100 permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255 //定义需要保护的流量
R1(config)#crypto ipsec transform-set sjzz-set esp-des ah-sha-hmac //定义传输集以及加密和验证的方式
R1(cfg-crypto-trans)#mode tunnel
R1(cfg-crypto-trans)#exit
R1(config)#crypto map sjzz-map 1 ipsec-isakmp //配置加密映射,映射名为mymap ,序列号为 1 数值越小优先级越高
R1(config-crypto-map)#set peer 200.0.20.1 //对等体地址
R1(config-crypto-map)#set transform-set sjzz-set //指定传输集名称
R1(config-crypto-map)#match address 100 //调用指定的匹配数据流
R1(config-crypto-map)#exit
R1(config)#crypto isakmp policy 1 //建立管理连接策略
R1(config-isakmp)#encryption 3des //指定管理连接建立后的最后两个数据报文(用于身份验证)采用何种加密算法
R1(config-isakmp)#hash sha //验证过程中采用HMAC的功能
R1(config-isakmp)#authentication pre-share //指定身份验证的方式
R1(config-isakmp)#group 2 //指定DH密钥组
R1(config-isakmp)#exit
R1(config)#crypto isakmp key 0 sjzz address 200.0.20.1
配置总公司A与分公司B之间的×××
R1(config)#access-list 100 permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255 //定义需要保护的流量
R1(config)#crypto ipsec transform-set sjzz-set esp-des ah-sha-hmac //定义传输集以及加密和验证的方式
R1(cfg-crypto-trans)#mode tunnel
R1(cfg-crypto-trans)#exit
R1(config)#crypto map sjzz-map 1 ipsec-isakmp //配置加密映射,映射名为mymap ,序列号为 1 数值越小优先级越高
R1(config-crypto-map)#set peer 200.0.20.1 //对等体地址
R1(config-crypto-map)#set transform-set sjzz-set //指定传输集名称
R1(config-crypto-map)#match address 100 //调用指定的匹配数据流
R1(config-crypto-map)#exit
配置总公司A与分C司B之间的×××:
R1(config)#crypto isakmp key 0 sjzz address 200.0.30.1 //配置R1与R3的预共享密钥
R1(config)#access-list 100 permit ip 1.1.1.0 0.0.0.255 3.3.3.0 0.0.0.255 // 添加去公司C的受保护数据流量
R1(config)#crypto map sjzz-map 1 ipsec-isakmp
R1(config-crypto-map)#set peer 200.0.30.1
R3(config-crypto-map)#exit
应用在接口:
R1(config)#int f0/0
R1(config-if)#crypto map sjzz-map
配置PAT使R1连接内网可以访问Internet:
R1(config)#access-list 101 deny ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255
R1(config)#access-list 101 deny ip 1.1.1.0 0.0.0.255 3.3.3.0 0.0.0.255
R1(config)#access-list 101 permit ip 1.1.1.0 0.0.0.255 any
R1(config)#ip nat inside source list 101 interface f0/0 overload
R1(config)#int f0/0
R1(config-if)#ip nat outside
R1(config)#int f1/0
R1(config-if)#ip nat inside
R1(config)#crypto isakmp key 0 sjzz address 200.0.30.1 //配置R1与R3的预共享密钥
R1(config)#access-list 100 permit ip 1.1.1.0 0.0.0.255 3.3.3.0 0.0.0.255 // 添加去公司C的受保护数据流量
R1(config)#crypto map sjzz-map 1 ipsec-isakmp
R1(config-crypto-map)#set peer 200.0.30.1
R3(config-crypto-map)#exit
应用在接口:
R1(config)#int f0/0
R1(config-if)#crypto map sjzz-map
配置PAT使R1连接内网可以访问Internet:
R1(config)#access-list 101 deny ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255
R1(config)#access-list 101 deny ip 1.1.1.0 0.0.0.255 3.3.3.0 0.0.0.255
R1(config)#access-list 101 permit ip 1.1.1.0 0.0.0.255 any
R1(config)#ip nat inside source list 101 interface f0/0 overload
R1(config)#int f0/0
R1(config-if)#ip nat outside
R1(config)#int f1/0
R1(config-if)#ip nat inside
二.路由器R2的配置(接口IP,路由,×××,PAT):
R2(config)#int f0/0
R2(config-if)#ip add 200.0.20.1 255.255.255.252
R2(config-if)#no sh
R2(config-if)#int loop 0
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#ip route 0.0.0.0 0.0.0.0 200.0.20.2
配置分公司B到公总司A之间的×××配置:
R2(config)#crypto isakmp policy 1
R2(config-isakmp)#encryption 3des
R2(config-isakmp)#hash sha
R2(config-isakmp)#authentication pre-share
R2(config-isakmp)#group 2
R2(config-isakmp)#lifetime 10000
R2(config-isakmp)#exit
R2(config)#crypto isakmp key 0 sjzz address 200.0.10.1 //该密钥应该与R1中设置的密码一致
R2(config)#access-list 100 permit ip 2.2.2.0 0.0.0.255 1.1.1.0 0.0.0.255
R2(config)#crypto ipsec transform-set sjzz-set esp-des ah-sha-hmac
R2(cfg-crypto-trans)#mode tunnel
R2(cfg-crypto-trans)#exit
R2(config)#crypto map sjzz-map 1 ipsec-isakmp
R2(config-crypto-map)#set peer 200.0.10.1
R2(config-crypto-map)#set transform-set sjzz-set
R2(config-crypto-map)#match address 100
R2(config-crypto-map)#exit
配置分公司B到分公司C之间的×××:
R2(config-if)#ip add 200.0.20.1 255.255.255.252
R2(config-if)#no sh
R2(config-if)#int loop 0
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#ip route 0.0.0.0 0.0.0.0 200.0.20.2
配置分公司B到公总司A之间的×××配置:
R2(config)#crypto isakmp policy 1
R2(config-isakmp)#encryption 3des
R2(config-isakmp)#hash sha
R2(config-isakmp)#authentication pre-share
R2(config-isakmp)#group 2
R2(config-isakmp)#lifetime 10000
R2(config-isakmp)#exit
R2(config)#crypto isakmp key 0 sjzz address 200.0.10.1 //该密钥应该与R1中设置的密码一致
R2(config)#access-list 100 permit ip 2.2.2.0 0.0.0.255 1.1.1.0 0.0.0.255
R2(config)#crypto ipsec transform-set sjzz-set esp-des ah-sha-hmac
R2(cfg-crypto-trans)#mode tunnel
R2(cfg-crypto-trans)#exit
R2(config)#crypto map sjzz-map 1 ipsec-isakmp
R2(config-crypto-map)#set peer 200.0.10.1
R2(config-crypto-map)#set transform-set sjzz-set
R2(config-crypto-map)#match address 100
R2(config-crypto-map)#exit
配置分公司B到分公司C之间的×××:
R2(config)#crypto isakmp key 0 sjzz address 200.0.30.1
R2(config)#access-list 100 permit ip 2.2.2.0 0.0.0.255 3.3.3.0 0.0.0.255
R2(config)#crypto map sjzz-map 1 ipsec-isakmp
R2(config-crypto-map)#set peer 200.0.30.1
R2(config-crypto-map)#exit
应用到接口:
R2(config)#int f0/0
R2(config-if)#crypto map sjzz-map
配置PAT使R2连接的内网可以访问internet:
R2(config)#access-list 101 deny ip 2.2.2.0 0.0.0.255 1.1.1.0 0.0.0.255
R2(config)#access-list 101 deny ip 2.2.2.0 0.0.0.255 3.3.3.0 0.0.0.255
R2(config)#access-list 101 permit ip 2.2.2.0 0.0.0.255 any
R2(config)#ip nat inside source list 101 interface f0/0 overload
R2(config)#int f0/0
R2(config-if)#ip nat outside
R2(config)#int loopback 0
R2(config-if)#ip nat inside
R2(config)#access-list 100 permit ip 2.2.2.0 0.0.0.255 3.3.3.0 0.0.0.255
R2(config)#crypto map sjzz-map 1 ipsec-isakmp
R2(config-crypto-map)#set peer 200.0.30.1
R2(config-crypto-map)#exit
应用到接口:
R2(config)#int f0/0
R2(config-if)#crypto map sjzz-map
配置PAT使R2连接的内网可以访问internet:
R2(config)#access-list 101 deny ip 2.2.2.0 0.0.0.255 1.1.1.0 0.0.0.255
R2(config)#access-list 101 deny ip 2.2.2.0 0.0.0.255 3.3.3.0 0.0.0.255
R2(config)#access-list 101 permit ip 2.2.2.0 0.0.0.255 any
R2(config)#ip nat inside source list 101 interface f0/0 overload
R2(config)#int f0/0
R2(config-if)#ip nat outside
R2(config)#int loopback 0
R2(config-if)#ip nat inside
三.路由器R3的配置(接口IP,路由,×××,PAT):
R3(config)#int f0/0
R3(config-if)#ip add 200.0.30.1 255.255.255.252
R3(config-if)#no sh
R3(config-if)#int loop 0
R3(config-if)#ip add 3.3.3.3 255.255.255.0
R3(config-if)#no sh
R3(config)#ip route 0.0.0.0 0.0.0.0 200.0.30.2
配置分公司C到总公司A之间的×××:
R3(config)#crypto isakmp policy 1
R3(config-isakmp)#encryption 3des
R3(config-isakmp)#hash sha
R3(config-isakmp)#authentication pre-share
R3(config-isakmp)#group 2
R3(config-isakmp)#lifetime 10000
R3(config-isakmp)#exit
R3(config)#crypto isakmp key 0 sjzz address 200.0.10.1
R3(config)#access-list 100 permit ip 3.3.3.0 0.0.0.255 1.1.1.0 0.0.0.255
R3(config)#crypto ipsec transform-set sjzz-set esp-des ah-sha-hmac
R3(cfg-crypto-trans)#mode tunnel
R3(cfg-crypto-trans)#exit
R3(config)#crypto map sjzz-map 1 ipsec-isakmp
R3(config-crypto-map)#set peer 200.0.10.1
R3(config-crypto-map)#set transform-set sjzz-set
R3(config-crypto-map)#match address 100
配置公司C到分公司B之间的×××:
R3(config-crypto-map)#exit
R3(config)#crypto isakmp key 0 sjzz address 200.0.20.1
R3(config)#access-list 100 permit ip 3.3.3.0 0.0.0.255 2.2.2.0 0.0.0.255
R3(config)#crypto map sjzz-map 1 ipsec-isakmp
R3(config-crypto-map)#set peer 200.0.20.1
R3(config-crypto-map)#exit
应用到接口
R3(config)#int f0/0
R3(config-if)#crypto map sjzz-map
配置PAT使R3连接的内网可以访问internet:
R3(config)#access-list 101 deny ip 3.3.3.0 0.0.0.255 2.2.2.0 0.0.0.255
R3(config)#access-list 101 deny ip 3.3.3.0 0.0.0.255 1.1.1.0 0.0.0.255
R3(config)#access-list 101 permit ip 3.3.3.0 0.0.0.255 any
R3(config)#ip nat inside source list 101 interface f0/0 overload
R3(config)#int f0/0
R3(config-if)#ip nat outside
R3(config)#int loopback 0
R3(config-if)#ip nat inside
R3(config-if)#ip add 200.0.30.1 255.255.255.252
R3(config-if)#no sh
R3(config-if)#int loop 0
R3(config-if)#ip add 3.3.3.3 255.255.255.0
R3(config-if)#no sh
R3(config)#ip route 0.0.0.0 0.0.0.0 200.0.30.2
配置分公司C到总公司A之间的×××:
R3(config)#crypto isakmp policy 1
R3(config-isakmp)#encryption 3des
R3(config-isakmp)#hash sha
R3(config-isakmp)#authentication pre-share
R3(config-isakmp)#group 2
R3(config-isakmp)#lifetime 10000
R3(config-isakmp)#exit
R3(config)#crypto isakmp key 0 sjzz address 200.0.10.1
R3(config)#access-list 100 permit ip 3.3.3.0 0.0.0.255 1.1.1.0 0.0.0.255
R3(config)#crypto ipsec transform-set sjzz-set esp-des ah-sha-hmac
R3(cfg-crypto-trans)#mode tunnel
R3(cfg-crypto-trans)#exit
R3(config)#crypto map sjzz-map 1 ipsec-isakmp
R3(config-crypto-map)#set peer 200.0.10.1
R3(config-crypto-map)#set transform-set sjzz-set
R3(config-crypto-map)#match address 100
配置公司C到分公司B之间的×××:
R3(config-crypto-map)#exit
R3(config)#crypto isakmp key 0 sjzz address 200.0.20.1
R3(config)#access-list 100 permit ip 3.3.3.0 0.0.0.255 2.2.2.0 0.0.0.255
R3(config)#crypto map sjzz-map 1 ipsec-isakmp
R3(config-crypto-map)#set peer 200.0.20.1
R3(config-crypto-map)#exit
应用到接口
R3(config)#int f0/0
R3(config-if)#crypto map sjzz-map
配置PAT使R3连接的内网可以访问internet:
R3(config)#access-list 101 deny ip 3.3.3.0 0.0.0.255 2.2.2.0 0.0.0.255
R3(config)#access-list 101 deny ip 3.3.3.0 0.0.0.255 1.1.1.0 0.0.0.255
R3(config)#access-list 101 permit ip 3.3.3.0 0.0.0.255 any
R3(config)#ip nat inside source list 101 interface f0/0 overload
R3(config)#int f0/0
R3(config-if)#ip nat outside
R3(config)#int loopback 0
R3(config-if)#ip nat inside
四.路由器R3的配置(接口IP):
ISP(config)#int f0/0
ISP(config-if)#ip add 200.0.20.2 255.255.255.252
ISP(config-if)#no sh
ISP(config-if)#int f1/0
ISP(config-if)#ip add 200.0.30.2 255.255.255.252
ISP(config-if)#no sh
ISP(config-if)#int f2/0
ISP(config-if)#ip add 200.0.10.2 255.255.255.252
ISP(config-if)#no sh
ISP(config-if)#ip add 200.0.20.2 255.255.255.252
ISP(config-if)#no sh
ISP(config-if)#int f1/0
ISP(config-if)#ip add 200.0.30.2 255.255.255.252
ISP(config-if)#no sh
ISP(config-if)#int f2/0
ISP(config-if)#ip add 200.0.10.2 255.255.255.252
ISP(config-if)#no sh
五.验证:
1.虚拟PC的IP如下: