■ 江蘇 張韜
編者按:如今很多單位總部與分部之間都還使用VPN通訊,并且提高了單位的溝通效率,但VPN的安全建設(shè)也是不應(yīng)忽視的,本文探討在單位中部署動(dòng)態(tài)IPSec VPN。
在site to site類(lèi)型VPN中,在進(jìn)行isakmp第一階段認(rèn)證時(shí),需要為每一個(gè)VPN peer指定一個(gè)密碼,而且在定義Crypto Map時(shí),同樣需要指定peer地址來(lái)為每個(gè)VPN對(duì)等體定義一組相應(yīng)配置。
隨著VPN鄰居數(shù)量不斷增加,配置工作量就會(huì)相應(yīng)的成倍增加。如果有100家甚至更多的分公司需要和總部之間通過(guò)VPN通信,總部網(wǎng)絡(luò)VPN設(shè)備上就要有100組VPN配置甚至更多,這顯然工作量太大。
此外,有時(shí)VPN設(shè)備的IP地址通過(guò)DHCP服務(wù)分配,并不固定,在有多個(gè)分支機(jī)構(gòu)場(chǎng)景下使用site to site類(lèi)型的VPN顯然是不現(xiàn)實(shí)的。
如果要和多個(gè)分支機(jī)構(gòu)同時(shí)建立VPN,實(shí)際中我們通常使用通配符認(rèn)證的配置方法??梢酝ㄟ^(guò)定義peer的地址范圍來(lái)配置密碼,就可以實(shí)現(xiàn)密碼通用的功能,VPN對(duì)等體數(shù)量越多,總部VPN配置的工作量減少的越明顯。即使peer的IP地址是通過(guò)自動(dòng)分配方式獲取,不知道具體IP地址也沒(méi)有關(guān)系,可以使用通配符0.0.0.0 0.0.0.0來(lái)表示所有peer地址。無(wú)論和多少個(gè)peer建立VPN,只需要使用一條命令來(lái)定義密碼,總部即可接受任何分公司地址的VPN連接,總部定義的VPN第一階段認(rèn)證密碼對(duì)任何一個(gè)遠(yuǎn)端VPN對(duì)等體都生效。
此外,總部不僅需要為每個(gè)peer定義認(rèn)證密碼,還需要為每個(gè)peer定義Crypto Map,但工作量仍然太大,所以我們使用稱為Dynamic Map(動(dòng)態(tài)Map)的方式來(lái)解決。只要配置一個(gè)Crypto Map就能夠讓所有遠(yuǎn)端peer使用,而不再需要單獨(dú)定義每個(gè)peer的地址,也是采用0.0.0.0表示任意地址,這樣無(wú)論有多少個(gè)peer,無(wú)論peer是誰(shuí),都可以使用動(dòng)態(tài) Map,且總部也不需配置ACL定義相應(yīng)感興趣數(shù)據(jù)流。
通過(guò)使用上述通配符認(rèn)證配置方法與動(dòng)態(tài)Map技術(shù),我們只需配置一次認(rèn)證密碼和一個(gè)動(dòng)態(tài)Map就能同時(shí)實(shí)現(xiàn)總部和許多分部之間VPN peer通信,可以接受任何一個(gè)分部發(fā)起的VPN連接,配置和管理工作量得到減少,這種VPN連接方式被稱為IPsec Dynamic site to site VPN(DyVPN),現(xiàn) 在 許多企業(yè)級(jí)的路由器和防火墻都支持此種類(lèi)型的VPN技術(shù)。
在IPSec Dynamic site to site VPN中,把能夠接受所有對(duì)等體發(fā)起VPN連接的設(shè)備稱為Hub端,通常是企業(yè)總部VPN設(shè)備;遠(yuǎn)端稱為Spoke端,通常為分部VPN設(shè)備。只需在Hub端應(yīng)用通配符認(rèn)證方法和動(dòng)態(tài)Map技術(shù),而Spoke端的配置與site to site VPN配置方法一樣。雖然Spoke端IP地址可以是任意地址,但Hub端必須是固定的IP地址,因?yàn)镾poke端配置時(shí)必須要指定peer地址。
IPSec Dynamic site to site VPN的工作原理和普通IPsec VPN一樣,無(wú)論是Hub端還是Spoke端,SA信息必須建立和明確。對(duì)于Spoke端而言,很容易定義感興趣數(shù)據(jù)流,但對(duì)于Hub端,因?yàn)樗軌蚺c任何路由器建立VPN,Hub端不知道具體網(wǎng)絡(luò)流量該發(fā)往哪個(gè)peer,所以Hub端是無(wú)法靠自己發(fā)送流量給對(duì)方來(lái)完成SA建立,只能在Spoke端去初始化完成,需要先由Spoke端向Hub端發(fā)送流量來(lái)形成相應(yīng)SA信息,否則通信雙方之間無(wú)法建立起SA。
所有Spoke端設(shè)備連接到Hub端時(shí),它們的VPN配置幾乎都一樣,唯一不同就在于每一個(gè)Spoke端定義的到達(dá)Hub端感興趣流量ACL不同而已。
下面就在GNS3模擬器上以路由器之間配置Dynamic Site to site VPN來(lái)驗(yàn)證效果。
圖1 IPSec Dynamic site-to-site VPN拓?fù)浣Y(jié)構(gòu)
如圖1所示,總部需要同時(shí)和兩個(gè)分公司之間實(shí)現(xiàn)VPN通信,總部出口路由器R1的公網(wǎng)IP地址是12.1.1.1,分公司1出口路由器R3的公網(wǎng)IP地址是23.1.1.3,分公司2出口路由器R4的公網(wǎng)IP地址是通過(guò)DHCP方式從ISP動(dòng)態(tài)獲取。中間R2路由器模擬Internet,R5路由器模擬總部?jī)?nèi)部局域網(wǎng)主機(jī),R3和R4路由器的lo0口分別模擬各自分公司內(nèi)部局域網(wǎng)主機(jī)。
這里各路由器IP地址配置部分省略。分別在R1和R3路由器上配置到達(dá)R2的默認(rèn)路由,模擬實(shí)現(xiàn)Internet部分之間的互聯(lián)。此外,在R2上配置DHCP服務(wù),為R4分配公網(wǎng)接口IP地址和默認(rèn)路由。
R1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2
R3(config)#ip route 0.0.0.0 0.0.0.0 23.1.1.2
在R5上通過(guò)配置到達(dá)R1的默認(rèn)路由實(shí)現(xiàn)和外部之間訪問(wèn)。
R5(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1
在R2上配置DHCP服務(wù),向R4提供動(dòng)態(tài)IP地址。
R2(config)#service dhcp
R2(config)#ip dhcp excluded-address 24.1.1.2
R(config)#ip dhcp pool net24
R2(dhcp-config)#network 24.1.1.0 255.255.255.0
R2(dhcp-config)#default-router 24.1.1.2
經(jīng)過(guò)測(cè)試,總部路由器R1已經(jīng)可以實(shí)現(xiàn)和分公司路由器R3和R4公網(wǎng)接口之間的互聯(lián),但卻無(wú)法和R3、R4上lo0口代表的內(nèi)部局域網(wǎng)實(shí)現(xiàn)通信,需要進(jìn)行Dynamic VPN配置來(lái)實(shí)現(xiàn)總部和分公司內(nèi)網(wǎng)之間的互通。
圖2 分公司路由器R3上VPN配置
1.總部路由器R1上VPN配置
(1)在配置ISAKMP策略
R1(config)#crypto isakmp policy 1
R1(config-isakmp)#encryption 3des
R1(config-isakmp)#hash sha
R1(config-isakmp)#authentication pre-share
R1(config-isakmp)#group 2
定義ISAKMP policy 1,加密方式為3des,hash算法為SHA,認(rèn)證方式為預(yù)共享密鑰方式,密鑰算法為group 2類(lèi)型。
(2)配置通配符認(rèn)證方法
R1(config)#crypto keyring zdxy
R1(conf-keyring)#preshared-key address 0.0.0.0 0.0.0.0 key 123
R1(config)#crypto isakmp profile test
R1(conf-isa-prof)#keyring zdxy
R1(conf-isa-prof)#match identity address 0.0.0.0
配置了名為test的IPSec profile,并定義任何Spoke端認(rèn)證密碼都為123。
(3)配置IPSec轉(zhuǎn)換集
R1(config)#crypto ipsec transform-set tran esp-3des esp-sha-hmac
配置名為tran的轉(zhuǎn)換集,數(shù)據(jù)封裝使用esp加3des方式加密,使用esp加sha方式做hash計(jì)算,使用默認(rèn)的tunnel模式。
(4)定義Dynamic Map
R1(config)#crypto dynamic-map dymap 10
R1(configcrypto-map)#set transform-set tran
R1(configcrypto-map)#set isakmpprofile test
定義了名為dymap的動(dòng)態(tài)Map,并調(diào)用前面定義的名為test的IPSec profile和名為tran的transformset。
(5)創(chuàng)建crypto map
R1(config)#crypto map abc 10 ipsec-isakmp dynamic dymap
定義名為abc的Crypto Map,這里的 Crypto Map只需要與前面定義的動(dòng)態(tài)Crypto Map關(guān)聯(lián)即可。此外,Hub端是不需要定義感興趣流量的。
(6)將Crypto Map應(yīng)用于出接口
R1(config)#int f0/0
R1(config-if)#crypto map abc
2.分公司路由器R3上VPN配置
如圖2所示。
最后,測(cè)試VPN連通性。先從Hub端路由器R5中的內(nèi)容向Spoke端路由器R3中的lo0口測(cè)試,發(fā)現(xiàn)不通。
圖3 IKE SA已經(jīng)成功建立
圖4 Hub端路由器R1查看SA信息
R5#ping 200.1.1.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 200.1.1.3,timeout is 2 seconds:
……
Success rate is 0 percent (0/5)
而由Spoke端路由器R3向Hub端路由器R5進(jìn)行測(cè)試,發(fā)現(xiàn)可以穿越VPN。
R3#ping 10.1.1.5 source 200.1.1.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.5,timeout is 2 seconds:
Packet sent with a source address of 200.1.1.3
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 92/122/176 ms
以上結(jié)果證明了在Dynamic Site to site VPN中,Hub端不能先向Spoke端發(fā)起流量來(lái)觸發(fā)SA建立,Hub端的SA只能由Spoke端發(fā)送流量來(lái)觸發(fā)建立。
當(dāng)再次從Hub端向Spoke端發(fā)送流量時(shí),則可以ping通,流量可以穿越VPN。
R5#ping 200.1.1.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 200.1.1.3,timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 88/105/120 ms
在R1上查看IKE SA的peer,可以看到R1已經(jīng)成功與R3建立了IKE peer,目標(biāo)端口號(hào)為500。
R1#show crypto isakmp peers
Peer: 23.1.1.3 Port: 500 Local: 12.1.1.1
Phase1 id: 23.1.1.3
查 看R1上 的ISAKMP SA信息,可以看到IKE SA已經(jīng)成功建立,并且為激活狀態(tài)。如圖3所示。
同理,分公司2中的R4路由器上除了感興趣流量ACL不一樣外,其余VPN配置和R3路由器完全一樣,此處省略R4上配置。同時(shí)這里也必須先由Spoke端路由器R4向Hub端路由器R1發(fā)送流量,來(lái)觸發(fā)SA的建立。
當(dāng)Hub端R1與多個(gè)Spoke端建立VPN后,也應(yīng)有與多個(gè)Spoke對(duì)應(yīng)的SA來(lái)保證通信,所以當(dāng)前Hub端路由器R1可以同時(shí)看到發(fā)往分公司1和分公司2的SA信息。如圖4所示。
如果還有更多的分公司要和Hub端建立VPN連接,也是一樣的過(guò)程。但Hub端并沒(méi)有增加新的認(rèn)證和配置,極大提升了可操作性和靈活性,這就是Dynamic Site to site VPN在網(wǎng)絡(luò)中部署的優(yōu)勢(shì)。