2024年5月25日发(作者:)
Cisco路由器实现IPSEC VPN配置(站点到站点)
目标
a. 分公司172.16.10.0/24,网络的主机可以通过VPN访问总部服务器10.10.33.0/24,
但不能访问Internet
b. 分公司的其它客户端(172.16.0.0/24)可以访问Internet
实验设备
1、Cisco路由器(IOS为12.4)
2、客户机3台,IP地址,见拓扑图,F0/0连接外网
实验步骤
R1上的配置
Router(config)#hostname R1
R1(config)#int f0/0
R1(config-if)#ip add 100.0.0.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int f0/1
R1(config-if)#ip add 172.16.10.254 255.255.255.0
R1(config-if)#no sh
//配置默认路由
R1(config-if)#ip route 0.0.0.0 0.0.0.0 100.0.0.2
在IPSEC中,IKE被用来自动协商SA和密钥,如果被关闭用crypto isakmp enable
启用
R1(config)#crypto isakmp policy 1 //建立IKE协商策略,编号为1
R1(config-isakmp)#encryption 3des //设置加密使用的算法为3DES
R1(config-isakmp)#hash sha //设置密钥认证的算法为sha
R1(config-isakmp)#authentication pre-share //告诉router要先使用预共享密
钥,手工指定
R1(config-isakmp)#group 2
R1(config-isakmp)#lifetime 10000 //声明SA的生存时间为10000,超过后SA将
重新协商
R1(config-isakmp)#exit
R1(config)#crypto isakmp key 0 test address 100.0.0.2
//设置加密密钥为test,要求二端的密码相匹配,和对端地址(总部Router地址)
配置访问控制列表
注意:
1. 当一个路由器接收到发往另一个路由器的内部网络报文时,IPSEC被启动,访问列
表被用于确定哪些业务 将启动IKE和IPSEC协商
2. Crypto访问控制列表必须是互为镜像的,如:R1加密了所有流向R2的TCP流量,
则R2必须加密流回R1的所有TCP流量
R1(config)#access-list 100 permit ip 172.16.10.0 0.0.0.255 10.10.33.0
0.0.0.255
//定义从172.16.10.0网络发往10.10.33.0的报文全部加密
//配置IPSEC传输模式,用于定义VPN隧道的认证类型,完整性与负载加密
R1(config)#crypto ipsec transform-set vpn-set esp-des ah-sha-hmac
R1(cfg-crypto-trans)#mode tunnel //可选
R1(cfg-crypto-trans)#exit
R1(config)#crypto ipsec security-association lifetime seconds 1800 //定义生存
周期1800秒
//配置caypt map(加密映射)
R1(config)#crypto map test-map 1 ipsec-isakmp //创建crypto map
//IPSEC-ISAKMP表示采用自动协调,名为test-map,编号1为优先级,越小优先
级越高
R1(config-crypto-map)#set peer 100.0.0.2 //设定crypto map所对应的VPN链
路对端IP
R1(config-crypto-map)#set transform-set vpn-set //指定crypto map所使用传
输模式名
R1(config-crypto-map)#match address 100 //指定此crypto map使用的访问控
制列表
R1(config-crypto-map)#exit
//将映射应用到对应的接口上,VPN就可生效了
R1(config)#int f0/0
R1(config-if)#crypto map test-map
//配置PAT
R1(config)#access-list 1 deny 172.16.10.0 0.0.0.255 //研发部不能访问Internet
R1(config)#access-list 1 permit 172.16.0.0 0.0.255.255 //其它部门可以访问
Internet
R1(config)#ip nat inside source list 1 interface f0/0 overload //在F0/0上启用
PAT
R1(config)#int f0/0
R1(config-if)#ip nat outside
R1(config)#int f0/1
R1(config-if)#ip nat inside
R2上的配置(总部上路由器设置)
R2(config)#int f0/0
R2(config-if)#ip add 100.0.0.2 255.255.255.0
R2(config-if)#no sh
R2(config)#int f0/1
R2(config-if)#ip add 10.10.33.254 255.255.255.0
R2(config-if)#no sh
R2(config-if)#ip route 0.0.0.0 0.0.0.0 100.0.0.1
//IPSEC VPN的配置,含义与R1基本相同
R2(config)#crypto isakmp policy 1 //建立IKE协商策略,编号为1
R2(config-isakmp)#encryption 3des
R2(config-isakmp)#hash sha //设置密钥认证的算法为sha
R2(config-isakmp)#authentication pre-share //告诉router要先使用预共享密钥,
手工指定
R2(config-isakmp)#group 2
R2(config-isakmp)#lifetime 10000
R2(config-isakmp)#exit
R2(config)#crypto isakmp key 0 test address 100.0.0.1
//设置共享密钥为test,要求二端的密码相匹配,和对端地址(总部Router地址)
R2(config)#access-list 100 permit ip 10.10.33.0 0.0.0.255 172.16.10.0 0.0.0.255
//定义从10.10.33.0网络发往172.16.10.0的报文全部加密
R2(config)#crypto ipsec transform-set vpn-set esp-des ah-sha-hmac //加密算
法二边要匹配
R2(cfg-crypto-trans)#mode tunnel
R2(cfg-crypto-trans)#exit
R2(config)#crypto ipsec security-association lifetime seconds 1800
R2(config)#crypto map test-map 1 ipsec-isakmp
//IPSEC-ISAKMP表示采用自动协调,名为test-map,编号1为优先级,越小优先
级越高
R2(config-crypto-map)#set peer 100.0.0.1 //设定crypto map所对应的VPN链
路对端IP
R2(config-crypto-map)#set transform-set vpn-set //指定crypto map所使用传
输模式名
R2(config-crypto-map)#match address 100 //指定此crypto map使用的访问控
制列表
R2(config-crypto-map)#exit
应用到接口,生效
R2(config-crypto-map)#int f0/0
R2(config-if)#crypto map test-map
相关验证结果的查看命令
显示ISAKMP协商策略的结果
R2#sh crypto isakmp policy
查看管理连接SA的状态
R2#sh crypto isakmp sa
R2#sh crypto ipsec transform-set
显示IPSEC变换集
R2#sh crypto ipsec transform-set
显示数据数据连接SA的细节信息
R2#sh crypto ipsec sa
显示Crypto Map的信息
R2#sh crypto map
按上面的配置好后,发现用分公司172.16.10.0/24可以ping通10.10.33.0/24,但
是从抓包来看,流量并未使用ipsec vpn,而是直接传输的,ipsec vpn没有生效。通过抓
包发现,采用上面的配置时,若使用172.16.10.0/24 ping 10.10.33.0/24,源地址是
100.0.0.1,也就是路由器的外部全局地址,但是ipsec的隧道兴趣流规则定义是对于源地
址为172.16.10.0 0.0.0.255目标地址为 10.10.33.0 0.0.0.255的流量才使用,于是我
认为应该在R1添加一句access-list 100 permit ip 100.0.0.0 0.0.0.255 10.10.33.0
0.0.0.255让源地址为100.0.0.1的流量也是兴趣流。添加后再ping时,发现ping不通
10.10.33.0/24了,于是抓包,从wireshark里面看有quick mode的网络包,说明流
量已经是走ipsec vpn了,但是由于某些原因未能通讯上,此时再看R2的CONSOLE,
发现有“Processing of Quick mode failed”消息提示。通过检查R2的配置,发现兴
趣流也没有定义是源地址为100.0.0.2,目上标地址是172.16.10.0的情况,于是我觉得
可能是ipsec vpn协商失败导致的,因为过来的是ipsec流量,但是返回的数据却不是,
因而失败。所以我再在R2上添加了一条ACL:access-list 100 permit ip 10.10.33.0
0.0.0.255 100.0.0.0 0.0.0.255,后来再ping就通了,从网络包看也是使用esp封装的。
总结:感兴趣流量的源地址和目标地址应该是peer两端的地址,而不是内网的地址
发布评论