VPN配置.docx
《VPN配置.docx》由会员分享,可在线阅读,更多相关《VPN配置.docx(16页珍藏版)》请在冰豆网上搜索。
VPN配置
IPsecDynamicLAN-to-LANVPN(DyVPN)
概述
在普通LAN-to-LANVPN中,我们在配置ISAKMPPhaseone的身份认证时,需要指定对方peer的密码,我们不难发现,这个密码是基于peer邻居指定的,也就是需要为每一个peer定义一个密码,不仅如此,在我们定义cryptomap时,同样也需要指定peer的地址,以此来定义加密数据发往的对端,结果就是需要为每一个VPN邻居输入一组相应配置,随着VPN邻居的增加,这样的重复配置就会随之增加,试想一下,假如有个大型公司有1000家分公司,这1000家分公司都要和总公司通过VPN通信,那么就需要让总公司的VPN设备和1000个邻居建立VPN,这样一来,虽然每家分公司只要配置好对总公司的VPN配置,但是总公司的设备却需要为每个分公司配置一组配置,最终就需要配置总共1000组VPN配置,这是一件多么恐怖的工作;并且这台总公司VPN设备会变的难以管理,不可维护,所以普通LAN-to-LANVPN要用在拥有多个分公司的环境下,是不可取的。
并且如果VPN双方有任何一方的IP地址事先不知道或地址不固定,也不能建立VPN。
我们可以仔细分析一下,造成上述问题的原因是,普通LAN-to-LANVPN需要为每个peer指定认证密码,所以peer的增加,就意味着配置的增加,因为每个peer的认证密码都是需要事先定义好的,如果我们可以使用一条命令为多个peer指定认证密码,这就可以让配置简化,所以就考虑使用像配置ACL的方法一样去定义与密码相对应的peer,只要被该ACL匹配到的peer,都使用该认证密码,比如10.1.1.00.0.0.255就能够匹配10.1.1.1至10.1.1.254范围内的所有地址,这种配置认证的方法称为使用通配符的配置方法,可以通过定义peer的地址范围来配置密码,就可以实现密码多用的功能,在peer数量众多的情况下,明显可以减少工作量。
令人高兴的是,如果要和多少个peer建立VPN,甚至连peer的地址范围会是多少都不知道的情况下,也没有关系,我们可以将通配符写成0.0.0.00.0.0.0,这就表示任意地址,这样的结果就是不管peer是谁,我们定义的认证密码都对它生效,这样一来,不管是要和一千个peer建VPN,还是要和一万个peer建VPN都没关系,因为我们的只需要使用一条命令来定义密码,即可接受任何地址的连接。
通配符认证配置方法是通过配置IPsecprofile来实现的, 第一个被引入的IOS版本是12.2(15)T,但最好在12.3(3),12.3
(2)T或之后的,才能成功,之前的版本都有Bug。
之前我们提到过,不仅需要为每个peer定义认证密码外,还需要为每个peer定义cryptomap,在每个cryptomap中,指定相应的peer,为每个peer定义认证密码的工作已经通过使用通配符的配置方法解决了工作量,但为每个peer定义cryptomap仍然是个恐怖的工作,所以我们也必须想办法配置一次cryptomap能够让多个peer使用,这样一个cryptomap为多个peer使用的模式,称为dynamicmap(动态map),dynamicmap不再单独定义每个peer地址,而采用定义0.0.0.0来表示任意地址,即该dynamicmap为任何peer使用,这样一来,就是无论有多少个peer,无论peer是谁,都使用dynamicmap去应对。
通过结合使用通配符认证配置方法与dynamicmap,就可以不管有多少个VPNpeer,我们只需要配置1次认证密码与1个dynamicmap就能实现,而且即使VPNpeer的数量不停增加也没关系,因为我们的VPN配置可以接受任意地址的连接,所以无论和多少个VPNpeer连接,我们的配置始终保持不变,这样的VPN,我们称为IPsecDynamicLAN-to-LANVPN(DyVPN),当DynamicLAN-to-LANVPN应用在大型公司时,而无论该公司有多少家分公司要和总公司连接VPN,而无论新开的分公司地址是多少,总公司的VPN配置始终保持不变,这使得即使分公司的IP地址是预先不知道的,比如通过拨入ADSL获得的动态IP地址,总公司统统接受他们的VPN连接请求。
DynamicLAN-to-LANVPN能够接受任何地址连接的设备,我们称为Hub端,对端称为spoke端,可见Hub端就应用了通配符认证配置方法与dynamicmap,但spoke端的配置与普通LAN-to-LANVPN配置方法一样,没有任何区别;虽然说DynamicLAN-to-LANVPN的Hub端可以接受任何spoke端的VPN连接,这只是表示spoke端的IP地址可以是任意地址,但是因为spoke端的配置与普通LAN-to-LANVPN配置方法一样,需要事先指定peer的地址,所以Hub端的IP地址是必须固定的,否则两端的IP地址都不固定或不知道,那就谈不上建立任何形式的VPN。
配置DynamicLAN-to-LANVPN时,有两个注意点,即Hub端需要使用通配符认证配置方法和dynamicmap技术,其它配置部分与配置需求和普通LAN-to-LANVPN一样。
虽然是DynamicLAN-to-LANVPN,但工作原理和普通IPsecVPN一样,也需要在双方建立SA,需要知道什么样的流量需要被加密传输,对于spoke路由器,是肯定知道什么样的流量需要加密的,因为它的配置和普通LAN-to-LANVPN完全一样,而对于Hub端,因为它能够与任何路由器建立VPN,也就是会和什么样的网络通信,发往哪里的数量需要加密,哪个网络的流量该发往哪个peer,这对于Hub来说是不知道的,所以在Hub端,无法事先确定发往每个peer的流量,所以也就无法对于每个peer形成相应的SA,但无论是Hub还是spoke,SA终究是要确定的,这就需要在spoke端去初始化。
所以,在DynamicLAN-to-LANVPN环境下,只能先由spoke端向Hub端发流量来使Hub端形成相应SA,在spoke端没有向Hub端发流量之前,Hub端是没有SA的,并且Hub端是不能靠自己发流量来初始化SA的建立的。
所有的spokerouter连接到同hub时,可以是相同的配置,唯一不同的可能就是ACL匹配的流量了。
注:
★DynamicLAN-to-LANVPN的Hub端IP地址必须是spoke事先知道的IP地址,所以应该为固定IP。
★DynamicLAN-to-LANVPN的spoke端IP地址可以是任意地址,如ADSL通过DHCP获得的IP地址。
★DynamicLAN-to-LANVPN同时支持Router,PIX防火墙,ASA防火墙。
★只能先由spoke端向Hub端发流量来使Hub端形成相应SA,在spoke端没有向Hub端发流量之前,Hub端是没有SA的,并且Hub端是不能靠自己发流量来初始化SA的建立的。
★所有的spokerouter连接到相同hub时,可以是相同的VPN配置,唯一不同的可能就是ACL匹配的感兴趣流量不同。
Router-to-RouterDynamicLAN-to-LANVPN
在本小节,我们在Router与Router之间配置DynamicLAN-to-LANVPN,即配置Router-to-RouterDynamicLAN-to-LANVPN。
配置Router-to-RouterDynamicLAN-to-LANVPN
说明:
我们下面需要以上图的环境来演示DynamicLAN-to-LANVPN的效果,在图中,有上海、北京和广州共三个公司的网络,上海要同时和北京与广州的网络实现VPN通信,其中北京路由器R3的IP地址是预先知道的,即23.1.1.3,这样上海便能与北京轻松实现VPN,而广州的路由器R4的IP地址是通过DHCP获得的,事先无法知道IP是多少,在这样的情况下,我们通过配置DynamicLAN-to-LANVPN来使上海公司的路由器接受任何公司的VPN连接,而不管其IP地址是多少。
注:
在上图中,即使VPN场点增加,在上海路由器R1上,不需要更改任何配置,都能接受对方的VPN连接。
1.配置基础网络环境
(1)配置R1:
r1(config)#intf0/0
r1(config-if)#ipadd12.1.1.1255.255.255.0
r1(config-if)#nosh
r1(config-if)#exit
r1(config)#intf0/1
r1(config-if)#ipadd10.1.1.1255.255.255.0
r1(config-if)#nosh
r1(config-if)#exit
r1(config)#iproute0.0.0.00.0.0.012.1.1.2
说明:
配置R1的接口地址,并写默认路由指向Internet(路由器R2),地址12.1.1.2。
(2)配置R2:
r2(config)#intf0/0
r2(config-if)#ipadd12.1.1.2255.255.255.0
r2(config-if)#nosh
r2(config-if)#exit
r2(config)#intf0/1
r2(config-if)#ipadd24.1.1.2255.255.255.0
r2(config-if)#nosh
r2(config-if)#exit
r2(config)#ints1/0
r2(config-if)#encapsulationframe-relay
r2(config-if)#noframe-relayinverse-arp
r2(config-if)#noarpframe-relay
r2(config-if)#ipadd23.1.1.2255.255.255.0
r2(config-if)#nosh
r2(config-if)#frame-relaymapip23.1.1.3203broadcast
r2(config-if)#exit
r2(config)#servicedhcp
r2(config)#ipdhcppoolnet24
r2(dhcp-config)#network24.1.1.0255.255.255.0
r2(dhcp-config)#default-router24.1.1.2
r2(dhcp-config)#exit
r2(config)#ipdhcpexcluded-address24.1.1.2
说明:
配置R2的接口地址,并且在R2上配置DHCP,向广州路由器R4提供动态IP地址,因为R2模拟Internet,R2只需要有公网路由12.1.1.0、23.1.1.0和24.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。
(3)配置R3:
r3(config)#ints1/0
r3(config-if)#encapsulationframe-relay
r3(config-if)#noframe-relayinverse-arp
r3(config-if)#noarpframe-relay
r3(config-if)#nosh
r3(config-if)#ipadd23.1.1.3255.255.255.0
r3(config-if)#frame-relaymapip23.1.1.2302broadcast
r3(config-if)#exit
r3(config)#intf0/0
r3(config-if)#ipadd192.168.1.3255.255.255.0
r3(config-if)#nosh
r3(config-if)#exit
r3(config)#iproute0.0.0.00.0.0.023.1.1.2
r3(config)#
说明:
配置R3的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2。
(4)配置R4:
r4(config)#intf0/0
r4(config-if)#ipadd172.16.1.4255.255.255.0
r4(config-if)#nosh
r4(config-if)#exit
r4(config)#intf0/1
r4(config-if)#ipaddressdhcp
r4(config-if)#noshutdown
r4(config-if
说明:
在R4上配置内网网段172.16.1.0/24,并且在连Internet的接口F0/1上开启DHCP动态获得地址,所以F0/1上的IP地址是多少,事先是不知道的。
(5)配置R5:
r5(config)#intf0/1
r5(config-if)#ipadd10.1.1.5255.255.255.0
r5(config-if)#nosh
r5(config-if)#exit
r5(config)#iproute0.0.0.00.0.0.010.1.1.1
说明:
配置R5的接口地址,并写默认路由指向上海公司出口路由器R1。
2.测试基础网络环境
(1)查看广州路由器R4的IP地址情况:
r4#shipintbrief
Interface IP-Address OK?
MethodStatus Protocol
FastEthernet0/0 172.16.1.4 YESmanualup up
FastEthernet0/1 24.1.1.1 YESDHCP up up
Serial1/0 unassigned YESunset administrativelydowndown
Serial1/1 unassigned YESunset administrativelydowndown
Serial1/2 unassigned YESunset administrativelydowndown
Serial1/3 unassigned YESunset administrativelydowndown
r4#
说明:
广州路由器R4除了内网网段172.16.1.0/24之外,外网接口F0/1的地址24.1.1.1是DHCP动态获得的。
(2)查看R4的路由表:
r4#shiproute
Codes:
C-connected,S-static,R-RIP,M-mobile,B-BGP
D-EIGRP,EX-EIGRPexternal,O-OSPF,IA-OSPFinterarea
N1-OSPFNSSAexternaltype1,N2-OSPFNSSAexternaltype2
E1-OSPFexternaltype1,E2-OSPFexternaltype2
i-IS-IS,su-IS-ISsummary,L1-IS-ISlevel-1,L2-IS-ISlevel-2
ia-IS-ISinterarea,*-candidatedefault,U-per-userstaticroute
o-ODR,P-periodicdownloadedstaticroute
Gatewayoflastresortis24.1.1.2tonetwork0.0.0.0
172.16.0.0/24issubnetted,1subnets
C 172.16.1.0isdirectlyconnected,FastEthernet0/0
24.0.0.0/24issubnetted,1subnets
C 24.1.1.0isdirectlyconnected,FastEthernet0/1
S* 0.0.0.0/0[254/0]via24.1.1.2
R
说明:
R4将所有未知路由丢向Internet(R2)。
(3)测试R1到R3和R4的连通性:
r1#ping23.1.1.3
Typeescapesequencetoabort.
Sending5,100-byteICMPEchosto23.1.1.3,timeoutis2seconds:
!
!
!
!
!
Successrateis100percent(5/5),round-tripmin/avg/max=56/101/136ms
r1#
r1#
r1#ping24.1.1.1
Typeescapesequencetoabort.
Sending5,100-byteICMPEchosto24.1.1.1,timeoutis2seconds:
!
!
!
!
!
Successrateis100percent(5/5),round-tripmin/avg/max=16/78/152ms
r1#
说明:
因为R1、R3和R4都有默认路由指向Internet(路由器R2),而R2与R1、R3和R4都是可达的,所以R1与R3和R4通信正常。
3.配置DynamicLAN-to-LANVPN
(1)在R1上配置IKE(ISAKMP)策略:
r1(config)#cryptoisakmppolicy1
r1(config-isakmp)#encryption3des
r1(config-isakmp)#hashsha
r1(config-isakmp)#authenticationpre-share
r1(config-isakmp)#group2
r1(config-isakmp)#exit
说明:
定义了ISAKMPpolicy1,加密方式为3des,hash算法为sha,认证方式为Pre-SharedKeys(PSK),密钥算法(Diffie-Hellman)为group2。
(2)在R1上配置通配符认证方法:
r1(config)#cryptokeyringabc
r1(conf-keyring)#pre-shared-keyaddress0.0.0.00.0.0.0keycisco123
r1(conf-keyring)#exit
r1(config)#cryptoisakmpprofileppp
%Aprofileisdeemedincompleteuntilithasmatchidentitystatements
r1(conf-isa-prof)#keyringabc
r1(conf-isa-prof)#matchidentityaddress0.0.0.0
r1(conf-isa-prof)#exit
说明:
配置了名为ppp的IPsecprofile,并定义任何IP地址的认证密码为cisco123。
(3)在R1上配置IPsectransform:
r1(config)#cryptoipsectransform-setccieesp-3desesp-sha-hmac
r1(cfg-crypto-trans)#exit
说明:
配置了transform-set为ccie,其中数据封装使用esp加3des加密,并且使用esp结合sha做hash计算,默认的IPsecmode为tunnel。
(4)在R1上定义dynamicmap:
r1(config)#cryptodynamic-mapdymap5
r1(config-crypto-map)#settransform-setccie
r1(config-crypto-map)#setisakmp-profileppp
r1(config-crypto-map)#exit
说明:
定义了名为dymap的dynamicmap,并调用名为ppp的IPsecprofile和名为ccie的transform-set。
(5)在R1上创建cryptomap:
r1(config)#cryptomapmymap10ipsec-isakmpdynamicdymap
说明:
定义了名为mymap的Crypto-map,与常规的Crypto-map不一样,这里的Crypto-map只需要与之前的dynamiccryptomap.关联即可,并且配置到这里就结束了,可以看出,Hub端是不需要定义感兴趣流量的。
(6)在R1上将cryptomap应用于接口:
r1(config)#intf0/0
r1(config-if)#cryptomapmymap
r1(config-if)#
*Mar 100:
42:
19.807:
%CRYPTO-6-ISAKMP_ON_OFF:
ISAKMPisON
r1(config-if)#exit
说明:
将cryptomap应用在出接口F0/0上。
(7)使用常规LAN-to-LANVPN的方式配置R3:
r3(config)#cryptoisakmppolicy1
r3(config-isakmp)#encryption3des
r3(config-isakmp)#hashsha
r3(config-isakmp)#authenticationpre-share
r3(config-isakmp)#group2
r3(config-isakmp)#exit
r3(config)#cryptoisakmpkey0cisco123address12.1.1.1
r3(config)#cryptoipsectransform-setccieesp-3desesp-sha-hmac
r3(cfg-crypto-trans)#exit
r3(config)#access-list100permitip192.168.1.0