楊 禮
(喀什大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院, 新疆 喀什 844006)
在路由交換技術(shù)課程的實(shí)踐教學(xué)中,由于路由交換實(shí)驗(yàn)室的硬件設(shè)備數(shù)量有限,小組實(shí)驗(yàn)的模式無法保障每個學(xué)生的實(shí)驗(yàn)時間和實(shí)驗(yàn)效果。在單機(jī)環(huán)境中,通過利用GNS3軟件構(gòu)建虛擬網(wǎng)絡(luò)實(shí)驗(yàn)室[1-3],較好地解決了在實(shí)驗(yàn)室中進(jìn)行實(shí)驗(yàn)實(shí)訓(xùn)時的上述問題。虛擬實(shí)驗(yàn)室不僅能夠完成基礎(chǔ)類實(shí)驗(yàn)和復(fù)雜的路由實(shí)驗(yàn),而且便于觀察實(shí)驗(yàn)的操作過程和分析實(shí)驗(yàn)結(jié)果;虛擬實(shí)驗(yàn)室為學(xué)生的創(chuàng)新性實(shí)驗(yàn)和研究性實(shí)驗(yàn)提供平臺,同時也為提高實(shí)驗(yàn)教學(xué)質(zhì)量提供了有力的保障[4-5]。
虛擬專用網(wǎng)(Virtual Private Network,VPN)技術(shù)是一種基于Internet實(shí)現(xiàn)跨區(qū)域網(wǎng)絡(luò)連接的技術(shù),被應(yīng)用于企業(yè)網(wǎng)和校園網(wǎng),實(shí)現(xiàn)企業(yè)內(nèi)部資源的共享。VPN技術(shù)成為高校培養(yǎng)工程型人才開設(shè)的路由交換技術(shù)課程的基本內(nèi)容,VPN相關(guān)實(shí)驗(yàn)的實(shí)踐成為學(xué)生學(xué)習(xí)網(wǎng)絡(luò)技術(shù)的非常重要手段。本文以通用路由封裝(Generic Routing Encapsulation,GRE)和IP安全(IP security,IPSec)兩項技術(shù)實(shí)現(xiàn)VPN為出發(fā)點(diǎn),設(shè)計了4個實(shí)驗(yàn),并分別進(jìn)行了相應(yīng)的實(shí)驗(yàn)測試和分析,以期讓學(xué)生更加系統(tǒng)地掌握和理解實(shí)驗(yàn)的技術(shù)原理及其驗(yàn)證方法。
(1) GRE技術(shù)。GRE是一種在協(xié)議層之間采用隧道(tunnel)技術(shù)的協(xié)議[6]。Tunnel是一個支持點(diǎn)對點(diǎn)連接的虛擬接口,提供了一條用一種協(xié)議封裝了另一種協(xié)議的數(shù)據(jù)包傳輸?shù)耐ǖ溃赥unnel的兩端分別對數(shù)據(jù)包進(jìn)行封裝及解封。當(dāng)GRE隧道源接口接收到數(shù)據(jù)報文,首先對原始數(shù)據(jù)包封裝GRE頭部和尾部[7],然后加上新的IP包頭部,封裝的數(shù)據(jù)包在隧道中傳輸?shù)竭_(dá)隧道的另一端,最后通過解封裝把數(shù)據(jù)包路由到目的地。GRE技術(shù)具有支持組播和廣播的優(yōu)點(diǎn)[8]。
(2) IPSec技術(shù)。IPSec主要使用驗(yàn)證頭部(Authentication Header,AH)、封裝安全載荷(Encapsulating Security Payload,ESP)和因特網(wǎng)密鑰交換(Internet Key Exchange,IKE)3個協(xié)議[7-8],提供了加密、認(rèn)證和密鑰交換管理的功能。IPSec提供了tunnel和transport兩種模式[8]。Transport模式下不改變原有的IP包頭,在原始報文的IP頭部和數(shù)據(jù)中間封裝IPSec包頭信息,適用于主機(jī)與主機(jī)之間的通信。Tunnel模式下將原始報文加上IPSec包頭,然后再增加新的IP包頭,適用于局域網(wǎng)與局域網(wǎng)之間的通信。IPSec不支持組播,但是能夠提供數(shù)據(jù)加密的安全傳輸。
考慮到GRE與IPSec的優(yōu)點(diǎn)和缺點(diǎn),研究人員提出了將兩者結(jié)合的方案[9-10]。一種方案是GRE over IPSec VPN,先對數(shù)據(jù)包進(jìn)行GRE封裝,然后進(jìn)行IPSec封裝。另一種方案是IPSec over GRE VPN,先對數(shù)據(jù)包進(jìn)行IPSec封裝,然后進(jìn)行GRE封裝。本文設(shè)計了一個易于實(shí)驗(yàn)操作的網(wǎng)絡(luò)結(jié)構(gòu),并對4種實(shí)現(xiàn)VPN的方案進(jìn)行了仿真和測試。
以實(shí)現(xiàn)某公司總部和分公司跨越公網(wǎng)進(jìn)行通信為實(shí)驗(yàn)情景,實(shí)現(xiàn)資源共享。假設(shè)公司總部的出口路由器為R1,分公司A的出口路由器為R2,路由器R3模擬廣域網(wǎng),主機(jī)PC1和PC2分別代表內(nèi)網(wǎng)的兩個用戶,用于網(wǎng)絡(luò)測試。
實(shí)驗(yàn)選擇3臺c2961路由器和2臺Host虛擬主機(jī)。在GNS3模擬器中通過直接拖動設(shè)備搭建如圖1所示的網(wǎng)絡(luò)結(jié)構(gòu),其中需要使用的設(shè)備端口的IP地址詳細(xì)信息如表1所示。

圖1 實(shí)驗(yàn)網(wǎng)絡(luò)結(jié)構(gòu)

設(shè)備連接端口IP地址R1s0/0201.100.1.2/30f0/0172.16.1.1/24tunnel 010.1.1.1/24R2s0/1202.100.2.2/30f0/0172.16.2.1/24tunnel 010.1.1.2/24R3s0/1201.100.1.1/30s0/2202.100.2.1/30PC1f0/0172.16.1.2/24PC2f0/0172.16.2.2/24
實(shí)驗(yàn)中使用tracert命令進(jìn)行路由跟蹤,使用ping命令進(jìn)行網(wǎng)絡(luò)的連通性測試,利用Wireshark工具在路由器R1的s0/0端口進(jìn)行抓包,并進(jìn)行報文分析[11]。以下是4個實(shí)驗(yàn)的核心配置和測試結(jié)果的分析。
(1) 設(shè)備核心配置。GRE隧道的源接口或源地址和目的地址是GRE VPN配置的核心部分,以R1的tunnel虛擬接口的配置為例配置如下,其他配置見文獻(xiàn)[12]。
R1(config)#interface Tunnel0
R1(config-if)#ip address 10.1.1.1 255.255.255.0
R1(config-if)#tunnel source Serial0/0
R1(config-if)#tunnel destination 202.100.2.2
R1(config-if)#exit
(2) 實(shí)驗(yàn)結(jié)果分析。通過在VPCS窗口中配置Host虛擬PC機(jī)的IP地址,執(zhí)行tracert命令可以得到跟蹤路由結(jié)果如圖2所示,抓包結(jié)果如圖3所示。

圖2 路由跟蹤結(jié)果

圖3 捕獲的ICMP報文
從圖2的結(jié)果分析,PC1到PC2的路由先經(jīng)過R1的f0/0接口,再經(jīng)過R2的tunnel 0接口,表明GRE隧道建立成功,數(shù)據(jù)在GRE隧道中傳輸。PC1向PC2第一次發(fā)送ping命令(默認(rèn)發(fā)送5條ICMP請求報文),由于第一條ICMP請求報文超時,因而沒有收到相應(yīng)的ICMP應(yīng)答報文,共收到9條ICMP報文,具體結(jié)果詳見圖3。捕獲的ICMP報文的源地址和目的地址分別是PC1和PC2的地址,說明源主機(jī)和目的主機(jī)交互報文沒有經(jīng)過加密處理。
(1) 設(shè)備核心配置。在進(jìn)行IPSec VPN配置時需要注意:定義感興趣的數(shù)據(jù)流屬于私有網(wǎng)絡(luò)地址,把加密映射應(yīng)用于路由器的外部出口。以R1為例,IPSec VPN配置如下,其他配置見文獻(xiàn)[13-14]。
R1(config)#crypto isakmp policy 1
R1(config-isakmp)# encryption3des
R1(config-isakmp)#authentication pre-share
R1(config-isakmp)#group 5
R1(config)#crypto isakmp key key2017 address 202.100.2.2
R1(config)#crypto ipsec transform-set set2017 esp-3des esp-sha-hmac
R1(config)#access-list 100 permit ip 172.16.1.0 0.0.0.255 172.16.2.0 0.0.0.255
R1(cfg-crypto-trans)#crypto map map2017 10 ipsec-isakmp
R1(config-crypto-map)#set peer 202.100.2.2
R1(config-crypto-map)#set transform-set set2017
R1(config-crypto-map)#match address 100
R1(config)#interface Serial0/0
R1(config-if)#crypto map map2017
(2) 實(shí)驗(yàn)結(jié)果分析。IPSec VPN模式下的路由跟蹤結(jié)果和抓包結(jié)果如圖4~5所示。
由于實(shí)驗(yàn)在配置IPSec時選擇了默認(rèn)的tunnel模式,該模式封裝后的報文經(jīng)過了ESP封裝,因此顯示出了如圖4所示的路由信息,即中間路由信息被屏蔽。圖5中的第10~18號報文表示IPSec隧道的建立成功,并反映了IPSec隧道建立連接的過程經(jīng)過了兩個階段:第1階段是經(jīng)過6次握手的Main Mode模式,第2階段是經(jīng)過3次握手Quick Mode模式[15]。捕獲的ESP報文的源地址和目的地址是IPSec隧道的對等體的地址,表明PC1與PC2的交互報文被封裝為加密的ESP報文。

圖4 路由跟蹤結(jié)果

圖5 捕獲的ISAKMP和ESP報文
(1) 設(shè)備核心配置。由于數(shù)據(jù)包先經(jīng)IPSec封裝,定義的感興趣的數(shù)據(jù)流的ACL是兩個網(wǎng)段的地址,把加密映射圖應(yīng)用在GRE隧道的tunnel虛擬接口上,即數(shù)據(jù)流在tunnel口被監(jiān)控,GRE隧道的建立過程未被加密。以R1為例,GRE、IKE以及IPSec的配置與前面的兩個實(shí)驗(yàn)的配置基本一致,不再另附配置代碼,不同之處如下:
R1(config)#interface Tunnel0
R1(config-if)#crypto map map2017
(2) 實(shí)驗(yàn)結(jié)果分析。IPSec over GRE VPN模式下的PC1對PC2的路由跟蹤結(jié)果如圖6所示。

圖6 路由跟蹤結(jié)果
由于執(zhí)行ping命令時,同樣捕獲到ISKMP和ESP報文,不再另外附圖。結(jié)合圖6的路由結(jié)果和圖5的報文分析,表明IPSec over GRE VPN的數(shù)據(jù)包封裝的過程:數(shù)據(jù)包先被封裝成加密的IPSec報文,然后再封裝成GRE報文,新的報文在GRE隧道中傳輸?shù)竭_(dá)隧道對端接口,最后經(jīng)過GRE和IPSec解封裝,最終數(shù)據(jù)包被路由到目的主機(jī)PC2。顯然不在訪問控制列表里的數(shù)據(jù)流將以不加密的狀態(tài)直接走GRE隧道,存在數(shù)據(jù)不安全傳輸?shù)默F(xiàn)象。
(1) 設(shè)備核心配置。由于數(shù)據(jù)流先經(jīng)過GRE封裝,定義的感興趣的數(shù)據(jù)流是GRE數(shù)據(jù)流。GRE over IPSec VPN的相關(guān)配置見文獻(xiàn)[16],與IPSec over GRE VPN的配置的不同之處在于:把加密映射圖應(yīng)用到路由器的物理接口,數(shù)據(jù)流在物理接口上被監(jiān)控。R1的核心配置如下:
R1(config-if)#access-list 100 permit gre host 201.100.1.2 host 202.100.2.2
R1(config)#interface Serial0/0
R1(config-if)#crypto map map2017
(2) 實(shí)驗(yàn)結(jié)果分析。GRE over IPSec VPN模式下的路由跟蹤結(jié)果和抓包結(jié)果如圖7~8所示。

圖7 路由跟蹤結(jié)果

圖8 捕獲的ESP報文
從圖7可知,PC1到PC2的路由經(jīng)過了GRE隧道的tunnel虛擬接口。實(shí)驗(yàn)也捕獲到了表明IPSec建立成功的ISAKMP協(xié)議數(shù)據(jù)包,不再另外附圖。當(dāng)PC1向PC2的ping測試成功后,繼續(xù)發(fā)送ping命令時,捕獲的ICMP請求和應(yīng)答報文全部是經(jīng)過加密的ESP報文(見圖8中的29~38號報文)。
綜合以上4個實(shí)驗(yàn)的驗(yàn)證和分析結(jié)果,可以看出基于GRE over IPSec的VPN實(shí)驗(yàn)方案具有明顯的優(yōu)勢,數(shù)據(jù)傳輸?shù)陌踩愿涌煽俊?/p>
為了進(jìn)一步配合VPN技術(shù)的實(shí)踐教學(xué),提高實(shí)踐教學(xué)效果,本文在分析GRE技術(shù)和IPSec技術(shù)的基礎(chǔ)上,對GRE VPN、IPSecVPN以及把兩者進(jìn)行結(jié)合的實(shí)驗(yàn)方案分別進(jìn)行了仿真和測試,以期學(xué)生掌握上述不同VPN實(shí)驗(yàn)配置的重點(diǎn)和不同點(diǎn),運(yùn)用Wireshark工具抓取數(shù)據(jù)包,并進(jìn)行協(xié)議分析。通過分析報文驗(yàn)證了實(shí)驗(yàn)的正確性,通過實(shí)驗(yàn)對比進(jìn)一步增強(qiáng)了學(xué)生對VPN技術(shù)原理的理解和實(shí)踐動手能力。