隧道技術(shù)概述:
一種技術(shù)(協(xié)議)或者策略的兩個(gè)或多個(gè)子網(wǎng)穿過(guò)另一種技術(shù)(協(xié)議)或者策略的網(wǎng)絡(luò)實(shí)現(xiàn)互聯(lián),稱之為overlay topology,這一技術(shù)是電信技術(shù)的永恒主題之一。
電信技術(shù)在發(fā)展,多種網(wǎng)絡(luò)技術(shù)并存,一種技術(shù)的網(wǎng)絡(luò)孤島可能需要穿過(guò)另一種技術(shù)的網(wǎng)絡(luò)實(shí)現(xiàn)互聯(lián),這種情況如果發(fā)生在高層協(xié)議的PDU封裝于低層協(xié)議PDU中時(shí)通常稱之為復(fù)用,特別地三層PDU穿過(guò)二層網(wǎng)絡(luò)地技術(shù)稱為租用鏈路或虛電路;而如果穿越發(fā)生在一種協(xié)議PDU封裝在同一層協(xié)議的PDU中,或者封裝在高層協(xié)議的PDU中時(shí),人們通常稱之為隧道。
隧道提供了一種某一特定網(wǎng)絡(luò)技術(shù)的PDU穿過(guò)不具備該技術(shù)轉(zhuǎn)發(fā)能力的網(wǎng)絡(luò)的手段,如組播數(shù)據(jù)包穿過(guò)不支持組播的網(wǎng)絡(luò);另一種情況是有時(shí)因?yàn)楣芾聿呗缘脑?,一個(gè)管理者(策略)的子網(wǎng)不能通過(guò)和另一個(gè)管理者(策略)的網(wǎng)絡(luò)互聯(lián)而連接,而是要穿過(guò)另一個(gè)管理者(策略)的網(wǎng)絡(luò)實(shí)現(xiàn)連接,這就是所謂的VPN(VirtualP rivate Networks),不管是L2VPN還是L3VPN都需要利用隧道技術(shù)實(shí)現(xiàn)。因此隧道某種意義上可以概括為穿越不同的網(wǎng)絡(luò)的技術(shù),不同既可以是技術(shù)方面的,也可以是管理策略方面的。
隧道可以作為一個(gè)虛擬接口來(lái)實(shí)現(xiàn)。隧道接口并不特定的“乘客”或“傳輸”協(xié)議連接,而是一種結(jié)構(gòu),可以實(shí)現(xiàn)任何標(biāo)準(zhǔn)點(diǎn)到點(diǎn)封裝的服務(wù)。由于隧道是點(diǎn)到點(diǎn)連接,因此對(duì)每個(gè)連接必須配置一個(gè)單獨(dú)的隧道。
GRE是一種應(yīng)用較為廣泛的一種網(wǎng)絡(luò)層協(xié)議PDU封裝于任一種網(wǎng)絡(luò)層協(xié)議PDU中的技術(shù),經(jīng)常被用來(lái)構(gòu)造GRE隧道穿越各種三層網(wǎng)絡(luò),并得到了大多數(shù)電信設(shè)備廠商的支持。
GRE(通用路由協(xié)議封裝)是由Cisco和Net-smiths等公司于1994年提交給IETF的,標(biāo)號(hào)為RFC1701和RFC1702。目前有多數(shù)廠商的網(wǎng)絡(luò)設(shè)備均支持GRE隧道協(xié)議。GRE規(guī)定了如何用一種網(wǎng)絡(luò)協(xié)議去封裝另一種網(wǎng)絡(luò)協(xié)議的方法。GRE的隧道由兩端的源IP地址和目的IP地址來(lái)定義,允許用戶使用IP包封裝IP、IPX、AppleTalk包,并支持全部的路由協(xié)議(如RIP2、OSPF等)。通過(guò)GRE,用戶可以利用公共IP網(wǎng)絡(luò)連接IPX網(wǎng)絡(luò)、AppleTalk網(wǎng)絡(luò),還可以使用保留地址進(jìn)行網(wǎng)絡(luò)互連,或者對(duì)公網(wǎng)隱藏企業(yè)網(wǎng)的IP地址。
封裝后一個(gè)GRE數(shù)據(jù)包的格式如下:
----GRE在包頭中包含了協(xié)議類型,這用于標(biāo)明乘客協(xié)議的類型;校驗(yàn)和包括了GRE的包頭和完整的乘客協(xié)議與數(shù)據(jù);密鑰用于接收端驗(yàn)證接收的數(shù)據(jù);序列號(hào)用于接收端數(shù)據(jù)包的排序和差錯(cuò)控制;路由用于本數(shù)據(jù)包的路由。
----GRE只提供了數(shù)據(jù)包的封裝,它并沒(méi)有加密功能來(lái)防止網(wǎng)絡(luò)偵聽和攻擊。所以在實(shí)際環(huán)境中它常和IPsec在一起使用,由IPsec提供用戶數(shù)據(jù)的加密,從而給用戶提供更好的安全性。
GRE協(xié)議的主要用途有兩個(gè):企業(yè)內(nèi)部協(xié)議封裝和私有地址封裝。在國(guó)內(nèi),由于企業(yè)網(wǎng)幾乎全部采用的是TCP/IP協(xié)議,因此在中國(guó)建立隧道時(shí)沒(méi)有對(duì)企業(yè)內(nèi)部協(xié)議封裝的市場(chǎng)需求。企業(yè)使用GRE的*理由應(yīng)該是對(duì)內(nèi)部地址的封裝。當(dāng)運(yùn)營(yíng)商向多個(gè)用戶提供這種方式的VPN業(yè)務(wù)時(shí)會(huì)存在地址沖突的可能性。
路由封裝(GRE)zui早是由Cisco提出的,而目前它已經(jīng)成為了一種標(biāo)準(zhǔn),被定義在RFC1701,RFC1702,以及RFC2784中。簡(jiǎn)單來(lái)說(shuō),GRE就是一種隧道協(xié)議,用來(lái)從一個(gè)網(wǎng)絡(luò)向另一個(gè)網(wǎng)絡(luò)傳輸數(shù)據(jù)包。
如果你覺(jué)得它和虛擬網(wǎng)(VPN)有些類似,那只是因?yàn)椋簭募夹g(shù)上講,GRE隧道是某一類型的VPN,但是并不是一個(gè)安全隧道方式。不過(guò)你也可以使用某種加密協(xié)議對(duì)GRE隧道進(jìn)行加密,比如VPN網(wǎng)絡(luò)中常用的IPSec協(xié)議。
實(shí)際上,點(diǎn)到點(diǎn)隧道協(xié)議(PPTP)就是使用了GRE來(lái)創(chuàng)建VPN隧道。比如,如果你要?jiǎng)?chuàng)建MicrosoftVPN隧道,默認(rèn)情況下會(huì)使用PPTP,這時(shí)就會(huì)用到GRE。
為什么要用GRE?
為什么要使用GRE進(jìn)行隧道傳輸呢?原因如下:
有時(shí)你需要加密的多播傳輸。GRE隧道可以像真實(shí)的網(wǎng)絡(luò)接口那樣傳遞多播數(shù)據(jù)包,而單獨(dú)使用IPSec,則無(wú)法對(duì)多播傳輸進(jìn)行加密。多播傳輸?shù)睦影∣SPF,EIGRP,以及R*2。另外,大量的視頻、VoIP以及音樂(lè)流程序使用多播。
你所采用的某種協(xié)議無(wú)法進(jìn)行路由,比如NetBIOS或在IP網(wǎng)絡(luò)上進(jìn)行非IP傳輸。比如,你可以在IP網(wǎng)絡(luò)中使用GRE支持IPX或AppleTalk協(xié)議。
你需要用一個(gè)IP地址不同的網(wǎng)絡(luò)將另外兩個(gè)類似的網(wǎng)絡(luò)連接起來(lái)。
如何配置GRE隧道? 在Cisco路由器上配置GRE隧道是一個(gè)簡(jiǎn)單的工作,只需要輸入幾行命令即可實(shí)現(xiàn)。以下是一個(gè)簡(jiǎn)單的例子。
路由器A:
interface Ethernet0/1
ipaddress10.2.2.1255.255.255.0
interface Serial0/0
ipaddress192.168.4.1255.255.255.0
interface Tunnel0
ipaddress1.1.1.2255.255.255.0
tunnelsource Serial0/0
tunneldestination192.168.4.2
路由器B:
interface Fast Ethernet0/1
ipaddress10.1.1.1255.255.255.0
interface Serial0/0
ipaddress192.168.4.2255.255.255.0
interface Tunnel0
ipaddress1.1.1.1255.255.255.0
tunnelsource Serial0/0
tunneldestination192.168.4.1
在這個(gè)例子中,兩個(gè)路由器均擁有虛擬接口,即隧道接口。這一接口屬于各自的網(wǎng)絡(luò),就好像一個(gè)點(diǎn)到點(diǎn)的T1環(huán)路??缭剿淼谰W(wǎng)絡(luò)的數(shù)據(jù)采用串行網(wǎng)絡(luò)方式傳輸。
對(duì)于每個(gè)路由器都有兩種途徑將數(shù)據(jù)傳遞到另一端,即通過(guò)串行接口以及通過(guò)隧道接口(通過(guò)隧道傳遞數(shù)據(jù))。該隧道可以傳輸非路由協(xié)議的數(shù)據(jù),如NetBIOS或AppleTalk。如果數(shù)據(jù)需要通過(guò)互聯(lián)網(wǎng),你可以使用IPSec對(duì)其進(jìn)行加密。
從下面的信息反饋可以看出,路由器B上的隧道接口和其他網(wǎng)絡(luò)接口沒(méi)有什么不同:
解決GRE隧道的問(wèn)題:
由于GRE是將一個(gè)數(shù)據(jù)包封裝到另一個(gè)數(shù)據(jù)包中,因此你可能會(huì)遇到GRE的數(shù)據(jù)報(bào)大于網(wǎng)絡(luò)接口所設(shè)定的數(shù)據(jù)包zui大尺寸的情況。解決這種問(wèn)題的方法是在隧道接口上配置iptcpadjust-mss1436。另外,雖然GRE并不支持加密,但是你可以通過(guò)tunnelkey命令在隧道的兩頭各設(shè)置一個(gè)密鑰。這個(gè)密鑰其實(shí)就是一個(gè)明文的密碼。由于GRE隧道沒(méi)有狀態(tài)控制,可能隧道的一端已經(jīng)關(guān)閉,而另一端仍然開啟。這一問(wèn)題的解決方案就是在隧道兩端開啟keepalive數(shù)據(jù)包。它可以讓隧道一端定時(shí)向另一端發(fā)送keepalive數(shù)據(jù),確認(rèn)端口保持開啟狀態(tài)。如果隧道的某一端沒(méi)有按時(shí)收到keepalive數(shù)據(jù),那么這一側(cè)的隧道端口也會(huì)關(guān)閉。