动态地址的VPN接入
问题:对等体的地址动态获取,地址是不固定的;对等体双方至少有一端的地址必须是静态的。例如:hub and spoke模型。
解决方法:
dynamic map:
DVTI(思科私有)
DMVPN(思科私有)
dynamic map
在混合厂商环境中的唯一解决方案;
缺点:
中心站点无法主动发起到分支站点的VPN流量;
没有虚拟隧道接口,不能运行动态路由协议;
–只能适合分支站点简单的网络环境;
不同的分支与总部建立VPN后,分支之间不能通过总部进行访问;
只适用于较为简单的场合。
思科配置案例
如图所示,RB为企业分支网关,公网接口的IP地址使用动态获取方式(PPPOE),RA为企业总部网关(思科路由器),分支经过NAT设备与总部通过公网建立通信。
企业希望对分支子网与总部子网之间相互访问的流量进行安全保护。由于分支网关采用动态方式获取IP地址,总部网关可以使用动态模板方式与分支网关建立一个IPsec隧道来实现该需求。总部使用模糊匹配方式,可以接入任意的分支。
下图 配置动态获取IP地址的分支用户向总部思科路由器发起协商建立IPsec隧道组网图。
PC1 配置
pc都用路由器进行模拟,pc是一台没有交换功能的路由器。
PC1(config)#no ip routing //关闭路由功能
PC1(config)#int e0/0 //进入接口
PC1(config-if)#no sh //开启端口(思科默认关闭)
PC1(config-if)#ip add 10.1.1.1 255.255.255.0 //配置IP地址为10.1.1.1PC1(config)#ip default-gateway 10.1.1.254 //配置网关
PC2 配置
PC2(config)#no ip routing //关闭路由功能
PC2(config)#int e0/0 //进入接口
PC2(config-if)#no sh //开启端口(思科默认关闭)
PC2(config-if)#ip add 10.1.2.1 255.255.255.0 //配置IP地址为10.1.2.1PC2(config)#ip default-gateway 10.1.2.254 //配置网关
RA 配置:
RAconfig)#int e0/0
RA(config-if)#ip add 202.101.1.1 255.255.255.0
RA(config-if)#no sh
RA(config)#int e0/1
RA(config-if)#no sh
RA(config-if)#ip add 10.1.1.254 255.255.255.0RA(config)#ip route 0.0.0.0 0.0.0.0 202.101.1.3 //配置静态路由
RA(config)#crypto isakmp policy 10 //创建新的isakmp策略
RA(config-isakmp)# encr 3des //指定使用3des进行加密
RA(config-isakmp)# hash md5 //认证hash算法采用md5认证
RA(config-isakmp)# authentication pre-share //指定认证方式为“预共享密钥”,用的最多
RA(config-isakmp)# group 5
RA(config-isakmp)# lifetime 86400
RA(config-isakmp)#ex
RA(config)#crypto isakmp key xyh#123 address 0.0.0.0 //配置预共享密钥为 xyh#123,对方的密钥也要是一致才能匹配成功,指定邻居,0.0.0.0 0.0.0.0是任意匹配
RA(config)#crypto ipsec transform-set xyh666 esp-3des esp-md5-hmac //配置ipsec加密转换集,名字为xyh666
RA(cfg-crypto-trans)#mode tunnel //模式为隧道模式
RA(cfg-crypto-trans)#exRA(config)#crypto dynamic-map xyhy 10 //新建名为“xyhy"的动态ipsec加密图
RA(config-crypto-map)#set transform-set xyh666 //指定加密转换集为”xyh666“
RA(config-crypto-map)#ex
RA(config)#crypto map xyh88 10 ipsec-isakmp dynamic xyhy //将动态的”xyhy"ipsec加密图映射到静态的ipsec加密图”xyh88“中
RA(config)#int e0/0
RA(config-if)#crypto map xyh88 //将加密图应用到外网接口上
RB 配置
PPPOE客户端配置
RB(config)#int dialer 1 //创建拨号口
RB(config-if)#dialer pool 66 //创建拨号池
RB(config-if)#encapsulation ppp //封装PPP
RB(config-if)#ppp chap hostname R2 //发送账号
RB(config-if)#ppp chap password cisco123 //发送密码
RB(config-if)#ppp ipcp route default //进行IP地址协商
RB(config-if)#ip address negotiated //获取默认路由(可选),在获取地址的时候才能获取,当地址获取完成之后,这条命令是不生效的。
RB(config)#int e0/0
RB(config-if)#pppoe-client dial-pool-number 66 //进入物理接口关联拨号池
RB(config-if)#int e0/1
RB(config-if)#no sh
RB(config-if)#ip add 10.1.2.254 255.255.255.0RB(config)#ip route 0.0.0.0 0.0.0.0 202.101.2.3 //配置静态路由
RB(config)#crypto isakmp policy 10 //创建新的isakmp策略
RB(config-isakmp)# encr 3des //指定使用3des进行加密
RB(config-isakmp)# hash md5 //认证hash算法采用md5认证
RB(config-isakmp)# authentication pre-share //指定认证方式为“预共享密钥”,用的最多
RB(config-isakmp)# group 5
RB(config-isakmp)# lifetime 86400
RB(config-isakmp)#ex
RB(config)#crypto isakmp key xyh#123 address 202.101.1.1 //配置预共享密钥。指定peer202.101.1.1的预共享密钥为”xyh#123“该密钥与总部上指定该分支的密钥一致,如果使用数字证书/信封认证无需配置
RB(config)#crypto ipsec transform-set xyh666 esp-3des esp-md5-hmac //配置ipsec加密转换集,名字为xyh666,没有指定就写R1一致的
RB(cfg-crypto-trans)# mode tunnel //模式为隧道模式
RB(cfg-crypto-trans)#ex
RB(config)#access-list 100 permit ip 10.1.2.0 0.0.0.255 10.1.1.0 0.0.0.255 允许分支的流量访问总部的网络,ip汇聚可以使用,现网中还是用子网会安全点RB(config)#crypto map xyh88 10 ipsec-isakmp //新建名称为”xyh88“的加密图
RB(config-crypto-map)#set peer 202.101.1.1 //指定peer地址
RB(config-crypto-map)#set transform-set xyh666 //指定加密转换集”xyh666“
RB(config-crypto-map)#match address 100 /匹配感兴趣流ACL100
RB(config)#int dialer 1
RB(config-if)#crypto map xyh88 将加密图应用到接口注意:接口必须是有获取到IP地址,pppoe使用的是拨号口。
ISP配置
PPPOE 服务端配置
ISP(config)#username RB password xyh@123 //创建用户名密码
ISP(config)#ip local pool xyh 202.101.2.10 202.101.2.20 //配置下发地址池ISP(config)#int virtual-template 1 //创建模板接口
ISP(config-if)#encapsulation ppp //封装PPP
ISP(config-if)#ppp authentication chap //选择认证方式为CHAP
ISP(config-if)#ip address 202.101.2.1 255.255.255.0 //配置接口地址
ISP(config-if)#peer default ip address pool xyh //认证通过之后给邻居下发地址池中的地址
ISP(config)#bba-group pppoe xyh1 //创建BBA组
ISP(config-bba-group)#virtual-template 1 //关联模板口
ISP(config-bba-group)#int e0/1
ISP(config-if)#pppoe enable group xyh1 //接口下调用BBA 组ISP(config)#int e0/0
ISP(config-if)#ip add 202.101.1.3 255.255.255.0
测试
因为RB是通过PPPOE动态地址分配,这个时候RA是不知道RB的具体IP地址的,所以PC1 是不能主动来触发IPsec VPN隧道的,如下图所示,PC1 ping 不通PC2的 IP地址
这个时候,我们要用PC2主动去Ping PC1,因为RB是知道RA的准确的IP地址,所以,必须得要用动态获取地址的一端主动发起通信过程,才能成功坚持IPsec VPN
查看IKE SA的基本信息
show crypto isakmp sa
查看IPsec SA的基本信息
show crypto ipsec sa