IPSecVPN配置总结.docx
- 文档编号:30685106
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:20
- 大小:146.31KB
IPSecVPN配置总结.docx
《IPSecVPN配置总结.docx》由会员分享,可在线阅读,更多相关《IPSecVPN配置总结.docx(20页珍藏版)》请在冰豆网上搜索。
IPSecVPN配置总结
IPSecVPN配置总结
近段时间,笔者完成了一些IPSecVPN的配置,有站点到站点固定公网IP地址的IPSecVPN,有站点到站点使用固定公网IP地址的EZVPN,有网络中心点是固定公网IP地址,而分支机构是动态地址的DMVPN,有路由器和防火墙之间互联的IPSecVPN,也有不同厂商的设备之间互联的IPSecVPN。
通过这些项目的锻炼,笔者感到对IPSecVPN的了解又增进了一步,以前一些模糊的地方,经过这次项目的实践之后也越来越清晰,以下就是笔者对IPSecVPN配置的总结和配置实例。
一、理解IPSecVPN
VPN是利用公共网络建立一条专用的通道来实现私有网络的连接,IPSecVPN就是利用IPSec协议框架实现对VPN通道的加密保护。
IPSec工作在网络层,它能在IP层上对数据提供加密、数据完整性、起源认证和反重放保护等功能。
加密的作用就是通过将数据包加密,保证数据的安全,即使数据包被人监听获取到,也无法阅读数据内容。
IPSec使用的数据加密算法是对称密钥加密系统。
支持的加密算法主要有:
DES、3DES、MD5和SHA加密算法,这种加密算法需要一个共享的密钥执行加密和解密,共享的密钥是通过通信两端交换公钥,然后用公钥和各自的私钥进行运算,就得到了共享的密钥,这样就需要一个公钥交换的算法。
DH密钥协议就是一种公钥交换方法。
DH密钥交换协议有组1到组7的几种不同的算法。
DES和3DES支持组1和2,AES支持组2和5,因此如果选用了不同的加密算法,就需要选择相应的DH密钥交换算法。
数据完整性的作用就是保证数据包在传输的过程当中没有被篡改。
为了保证数据的完整性,给每个消息附加一个散列数,通过验证发送的散列数和接收的散列数是否匹配来判断消息是否被修改。
散列消息验证代码(HMAC)主要有两种算法:
HMAC-MD5和HMAC-SHA-1,MD5使用128位的共享密钥,而SHA使用160位密钥,因此HMAC-SHA-1比HMAC-MD5的加密强度要更高一些。
起源认证的作用就是保证发送数据包的源站点是可信的。
起源认证用来在建立隧道时验证隧道两端的对等体是否是可信的。
主要有预共享密钥,RSA签名、RSA-加密nonces三种方法。
其中预共享密钥配置起来最简单,但安全性和扩展性也相对来说要差一些。
预共享密钥就是在每个对等体上都预先配置好相同的密钥,经过运算之后发送到远端的对等体,由于每个对等体的密钥相同,因此就能够通过起源认证。
另外两种认证方法配置较为复杂,需要和证书服务器配合起来使用,笔者没有这方面的实践,因此后面的配置实例中都是采用的预共享密钥的配置。
反重放保护的作用就是保证数据包的唯一性,确定数据包在传输过程中没有被复制。
在IPSec的数据包中含有一个32位的序列数,并且是不能重复的,接收方通过检查序列数是否是唯一的来执行反重放保护功能。
IPSec协议簇主要包括两种协议:
AH(认证头)和ESP(封装安全有效载荷)。
其中AH不提供加密功能,而ESP两者都提供。
当使用ESP进行加密和认证的时候,执行顺序是先加密再认证。
将这两种协议应用到IP数据包时有两种模式,分别是隧道模式和传输模式。
隧道模式将一个新的IP头附加在已加密的数据包之前,为整个数据包提供安全性;而传输模式下原数据包的IP头不变,保持明文,只对数据包的内容提供安全性。
IPSec的建立有两个阶段,第一个阶段主要是认证对等体,并协商策略。
如确定建立IPSec隧道所需用到的安全参数,主要有加密的算法、对等体的认证、保证消息完整性的散列算法和密钥交换的算法,在协商成功后建立一条安全通道。
第二个阶段主要是协商IPSec的参数和IPSec变换集,如确定使用AH还是ESP协议,使用传输模式还是隧道模式。
协商成功后建立IPSecSA(安全关联),保护IPSec隧道的安全。
在笔者所配置的IPSecVPN中,都统一采用下列参数:
阶段一:
加密算法采用3DES;
保证数据完整性的算法采用HMAC-SHA-1;
起源认证采用预共享密钥;
密钥交换采用DH组2;
阶段二:
采用ESP协议提供对整个数据包的保护,并同时使用加密和认证,加密算法采用3DES,认证算法采用HMAC-SHA-1
使用模式采用隧道模式。
二、配置实例及说明
1.用路由器实现站点到站点的IPSecVPN
以笔者单位的网络拓扑结构为例来说明使用路由器实现站点到站点的IPSecVPN的配置。
本例中总部和三个分公司都具有固定的公网IP地址,路由器型号为Cisco3845,拓扑如图一所示:
图1
总部路由器阶段一的配置:
ZB(config)#cryptoisakmppolicy10//建立一个新的密钥交换策略,优先级为10,优先级号是从1到100000,1的优先级最高
ZB(config-isakmp)#encryption3des//使用3DES的加密算法
ZB(config-isakmp)#authenticationpre-share//使用预共享密钥认证对等体
ZB(config-isakmp)#hashsha//使用SHA散列算法,这一条配置命令可不用配置,因为默认的就是采用的这种散列算法
ZB(config-isakmp)#group2//密钥交换算法采用DH密钥协议组2的算法
由于采用的是预共享密钥的方式认证对等体,因此需要回到全局配置模式下,指定对等体的密钥:
ZB//密钥为cjgsvpn,然后分别指定三个分公司的路由器公网接口的IP地址
总部路由器阶段二的配置:
ZB(config)#cryptoipsectransform-setcjgssetesp-3desesp-sha-hmac//定义IPSec的转换集,转换集的名字为cjgsset,并指定采用ESP协议提供对整个数据包的加密和认证,加密采用3DES算法,认证采用SHA算法
ZB(cfg-crypto-trans)#modetunnel//使用隧道模式,这条配置命令也可以不用配置,默认就是采用隧道模式
IPSec的两个阶段配置完成后,接下来定义需要保护的数据类型,定义加密映射,并将加密映射映射到路由器的公网接口上:
ZB(config)#ipaccess-listextendedcz//这里的几条访问列表定义要被保护的数据,即总部访问三个分公司的数据流。
.255
ZB(config-ext-nacl)#exit
ZB(config)#ipaccess-listexttl//总部到铜陵分公司的流量
.255
ZB(config-ext-nacl)#exit
ZB(config)#ipaccess-listextzz//总部到株洲分公司的流量
ZB(config-ext-nacl)#permitip172.19.0
ZB(config)#cryptomapcjgsmap10ipsec-isakmp//建立优先级为10,名字为cjgsmap的加密映射,并使用ISAKMP(即阶段一协商的参数)来自动建立IPSecSA
ZB(config-crypto-map)#matchaddcz//匹配加密映射需要保护的流量,这里是匹配到常州分公司的流量
ZB(config-crypto-map)#settransform-setcjgsset//使用cjgsset变换集定义的IPSec参数
//定义对等体的地址,即常州分公司路由器公网接口的IP地址
ZB(config-crypto-map)#exit
ZB(config)#cryptomapcjgsmap20ipsec-isakmp//定义优先级为20的加密映射
ZB(config-crypto-map)#matchaddtl//匹配到铜陵分公司的流量
ZB(config-crypto-map)#settransform-setcjgsset
//铜陵分公司路由器公网接口的IP地址
ZB(config-crypto-map)#exit
ZB(config)#cryptomapcjgsmap30ipsec-isakmp//定义优先级为30的加密映射
ZB(config-crypto-map)#matchaddzz//匹配到株洲分公司的流量
ZB(config-crypto-map)#settrancjgsset
//株洲分公司路由器公网接口的IP地址
加密映射的策略定义完成后,将加密映射应用到总部路由器的公网接口上:
ZB(config)#intfa0/0
ZB(config-int)cryptomapcjgsmap
至此总部路由器上的配置即完成。
分公司的配置以铜陵分公司为例,阶段一和阶段二的参数必须采用和先前定义的一致,否则总部和分公司之间就不能建立加密的安全通道,具体的配置命令与总部路由器上的一样,配置结果如下:
cryptoisakmppolicy100//建立优先级为100的密钥交换策略
encr3des//采用3DES加密
authenticationpre-share//采用预共享密钥认证
group2//采用DH组2的密钥交换算法
cryptoisak//建立预共享密钥,必须和总部的配置一致
cryptoipsectransform-settlesp-3desesp-sha-hmac//建立IPSec转换集,使用ESP协议,采用3DES算法加密,SHA算法认证,并使用隧道模式
cryptomapzbvpn100ipsec-isakmp//建立优先级为100的加密策略,使用ISAKMP自动生成SA,策略名为zbvpn
set//设定总部的路由器的公网口地址
settransform-settl//使用名称为tl的转换集和IPSec参数
matchaddresszb//匹配铜陵分公司到总部的流量
interfaceFastEthernet0/0
cryptomapzbvpn//将加密策略应用到接口
ipaccess-listextendedzb
//定义铜陵分公司到总部的流量
其他分公司的配置与此类似,就不再重复了。
下面再来看看IPSecVPN建立的过程:
当有总部访问各分公司数据流量到达这个接口时,就根据加密映射的策略进行判断。
例如目标地址在铜陵分公司的地址段内,首先和优先级是10的策略进行比较,就会发现和优先级10的策略中定义的地址段不相符,那么就会忽略优先级10的加密策略;然后再和优先级是20的加密策略比较,这时发现要访问的目标地址和优先级20定义的地址段正好匹配,那么就开始和优先级20中定义的对端地址进行先进行阶段一的协商,包括密钥的交换,对等体的认证,完整性算法等参数,协商成功后再进行阶段二的协商,包括采用哪种协议进行封装、是否使用加密和认证,然后建立SA,成功后就建立了一条安全通道。
那么总部到铜陵分公司的数据就可以通过互联网在这条安全通道内进行加密传送了。
2.用路由器实现站点到站点的EZVPN
EZVPN有的也写作EasyVPN,顾名思义就是容易使用的VPN。
它是Cisco开发的用于简化远程端配置和管理的一种基于IPSecVPN的实现,降低了VPN在实施过程中的复杂程度。
EZVPN的结构由EZVPN的服务器端和若干远程的EZVPN客户端组成,服务器端是整个EZVPN网络的中心节点,它的主要的参数定义和配置都是在服务器端完成,而EZVPN的客户端只需要几条简单的命令就可以完成VPN的配置,所以在企业中,远程的分支机构不需要配备专业的IT技术人员就可以完成VPN的配置。
EZVPN的远程客户端支持三种操作模式,分别是客户端模式、网络扩展模式和网络扩展加模式。
客户端模式是默认的模式,它需要由作为EZVPN服务器端的路由器来分配地址,然后通过客户端路由器自动建立NAT/PAT转换来实现与服务器端的通讯;
网络扩展模式不需要由EZVPN服务器端路由器分配地址,这种方式下,客户端的网络被认为是一个完全可路由的网络,客户端路由器上也不会自动的建立NAT/PAT;
网络扩展模式加是对网络扩展模式的扩展,主要就是增加了能够通过MC和自动分配功能为回环接口请求IP地址的功能,EZVPN的远端会为这个接口自动创建IPSecSA。
这个接口主要被用来排错(如用ping,Telnet或SSH);
下面仍以笔者单位为例来说明EZVPN的配置。
笔者单位除了几个分公司以外,还有若干个改制单位和存续企业,也需要连接到笔者单位的网络中。
这些改制单位和存续企业由于规模都较小,没有复杂的网络结构,因此在部分拥有固定公网IP的单位笔者就采用了EZVPN这种方式来实现。
对EZVPN客户端的模式笔者统一采用网络扩展模式,并对各改制单位的地址进行了统一的规划。
由于规模都不大,因此就采用改制单位采用Cisco1841路由器,拓扑结构如图二所示:
图2
武汉总部EZVPN服务器端路由器的配置:
ZB(config)#aaanew-model//启用aaa,用于授权EZVPN客户端访问网络
ZB(config)#aaaauthorizationnetworkcjgs-remotelocal//建立授权的策略,策略名称为cjgs-remote,并使用本地的授权
ZB(config)#cryptoisakmppolicy10//定义ISAKMP的策略,参数和前面的例子一致,这个策略用于分配给EZVPN远程客户端
ZB(config-isakmp)#encryption3des
ZB(config-isakmp)#authenticationpre-share
ZB(config-isakmp)#hashsha
ZB(config-isakmp)#group2
ZB(config)#cryptoisakmpclientconfigurationgroupcjgsezvpn//定义MC(模式配置)中需要“推”的组策略,组名为cjgsezvpn,这个策略是将要推给客户端路由器的
ZB(config-isakmp-group)#keycjgsvpn//定义IKE的预共享密钥
//定义要推给客户端的DNS服务器地址
ZB(config-isakmp-group)#exit
ZB(config)#cryptoipsectransform-setcjgsvpnsetesp-3desesp-sha-hmac//定义转换集和IPSec参数
ZB(config)#cryptodynamic-mapcjgsdynavpn10//使用RRI建立动态加密映射,映射名称为cjgsdynavpn,优先级为10,RRI(ReverseRouteInjection逆向路由注入),目的是在服务器端的路由器上为每个客户端路由器的IP地址动态建立一条静态路由,并加入到路由表中
ZB(config-crypto-map)#settransform-setcjgsvpnset//将指定的转换集应用到动态加密映射中
ZB(config-crypto-map)#reverse-route//启用RRI
ZB(config)#cryptomapcjgsmapclientconfigurationaddressrespond//配置加密映射响应客户端的请求,加密映射的名称为cjgsmap
ZB(config)#cryptomapcjgsmap10ipsec-isakmpdynamiccjgsdynavpn//将RRI建立的动态加密映射应用到名称为cjgsmap的加密映射中去,并使用ISAKMP策略自动建立SA,优先级为10
ZB(config)#cryptomapcjgsmapisakmpauthorizationlistcjgs-remote//使用前面建立的cjgs-remote本地授权策略使客户端能够有权限访问网络
ZB(config)#intfa0/0
ZB(config-if)#cryptomapcjgsmap//把加密映射应用到外部接口
EZVPN服务器端路由器的配置基本完成,但是在实际使用时还会碰到问题。
因为那些改制单位都是在路由器上建立了NAT,使内部的用户能够访问互联网,但在和笔者单位建立了VPN后,所有的流量到进入到VPN的隧道中去了,造成互联网的访问中断,对这种情况的解决方案就是配置隧道分离,使得只有访问武汉总部的流量进入隧道,其它的流量进行NAT转换。
配置如下:
ZB(config)#ipaccess-listexttovpn//建立需要进入到VPN隧道的访问列表
//将武汉总部的地址段加入到列表中,表明只允许访问武汉总部的网络
ZB(config-ext-nacl)#exit
ZB(config)#cryptoisakmpclientconfigurationgroupcjgsezvpn
ZB(config-isakmp-group)#acltovpn//在推给用户的组策略中加入隧道分离,只允许到武汉总部的网络进入隧道
如果武汉总部的路由器上做了NAT,就需要在NAT的控制中将改制单位和存续企业的IP地址段加入到访问控制列表中,避免总部访问到这些地方的流量也做NAT转换。
EZVPN服务器端路由器的配置完成,下面再来看看客户端路由器的配置,客户端路由器的配置就要简单得多了,只需要配置客户端路由器的策略并应用到接口就可以了:
GZ(config)#cryptoipsecclientezvpngzvpn//在改制单位的路由器上建立EZVPN客户端的策略,名称为gzvpn
GZ(config-crypto-ezvpn)#groupcjgsezvpnkeycjgsvpn//定义服务器端路由器组策略的名称,预共享密钥,这些参数需要和服务器端路由器的设置对应
//指定服务器端路由器公网接口的地址
GZ(config-crypto-ezvpn)#modenetwork-extension//定义客户端的使用模式,这里采用的是网络扩展模式
GZ(config-crypto-ezvpn)#connectauto//配置客户端自动连接
GZ(config)#intfa0/0//把策略应用到接口上,在应用策略时要注意客户端路由器的EZVPN接口分内部接口和外部接口,公网接口为外部接口,局域网的接口为内部接口,两个接口都要进行配置,否则EZVPN无法建立
GZ(config-if)#cryptoipsecclientezvpngzvpn//应用到外部接口
GZ(config)#intfa0/1
GZ(config-if)#cryptoipsecclientezvpngzvpninside//应用到内部接口
客户端路由器的配置完成,很快IPSecVPN隧道就自动的建立起来了,经过测试,改制单位到互联网的访问和到武汉总部的访问均不受影响。
在服务器端路由器上用shiproute命令能够发现自动的添加了一条到该改制单位的静态路由,如果有多个改制单位连接进来,就会增加多条静态路由。
其它的改制单位和存续企业配置与此完全一样,可见在客户端的配置真的是非常简单的。
3.用路由器实现到动态地址的DMVPN
在笔者实施这次VPN的时候,由于有的改制单位使用的是ADSL拨号的方式接入到互联网的,因此笔者在这些地方又尝试了固定地址到动态地址的DMVPN的配置。
DMVPN是Cisco推出的动态多点VPN,是为了适应不断扩展的小型分支机构和总部之间的连接而设计的一种技术。
多点的意思就是在总部只有一个点,但可以针对多个分支机构建立IPSecVPN连接,动态的意思就是分支机构的IP地址是不确定的,没有固定的IP地址。
DMVPN结合GRE(通用路由封装)、NHRP(下一条地址解析协议)以及IPSec技术实现,可以承载路由协议,因而可以构建一个全网互通的VPN网络。
在DMVPN技术里面,最重要的是要理解NHRP协议。
在NHRP协议中,总部的路由器被配置为NHRP服务器,分支机构的路由器被配置为NHRP客户端,作为服务器的中心路由器需要维护一个包含所有客户端路由器公网地址的数据库,每个客户端的路由器在获得了公网的地址后,会向服务器端路由器发送NHRP的注册信息,注册信息中就包括了客户端路由器动态获得的IP地址,这样服务器端的路由器就可以和客户端的路由器建立起VPN的连接了。
而客户端的路由器之间需要通讯时,也可以通过作为NHRP服务器端的路由器查询到其他客户端的IP地址,从而两个客户端的路由器之间也可以动态的建立IPSec隧道了。
下面看看笔者单位和各改制单位的网络,和前面的EZVPN的拓扑其实是一样的,如图三所示:
图3
图中武汉总部的路由器就充当了NHRP服务器的角色,而改制单位的路由器就是客户端了。
具体配置如下:
总部路由器的配置。
首先还是配置统一的ISAKMP的策略:
ZB(config)#cryptoisakmppolicy10//建立ISAKMP策略,优先级为10,其它的参数与前面的一样
ZB(config-isakmp)#encryption3des
ZB(config-isakmp)#authenticationpre-share
ZB(config-isakmp)#group2
ZB(config-isakmp)#hashsha
ZB(config-isakmp)#exit
ZB(config)#cryptoisakmpkeycjgsvpnaddress0.0.0.0//建立预共享密钥在指定对端的地址时与前面不同,由于改制单位的IP地址是动态的,因此在这里就不能明确的指定对端的IP地址
ZB(config)#cryptoipsectransform-setcjgs_vpnsetesp-3desesp-sha-hmac//转换集的参数也和前面的一样
ZB(cfg-crypto-trans)#modetransport//在这里使用了传输模式是由于要使用GRE封装,因此就没有必要再使用隧道模式
ZB(config)#cryptoipsecprofilecjgs-vpnpro//建立名称为cjgs-vpnpro的配置文件
ZB(ipsec-profile)#settransform-setcjgs_v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IPSecVPN 配置 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)