隧道技術概述:
一種技術(協(xié)議)或者策略的兩個或多個子網(wǎng)穿過另一種技術(協(xié)議)或者策略的網(wǎng)絡實現(xiàn)互聯(lián),稱之為overlaytopology,這一技術是電信技術的永恒主題之一。
電信技術在發(fā)展,多種網(wǎng)絡技術并存,一種技術的網(wǎng)絡孤島可能需要穿過另一種技術的網(wǎng)絡實現(xiàn)互聯(lián),這種情況如果發(fā)生在高層協(xié)議的PDU封裝于低層協(xié)議PDU中時通常稱之為復用,特別地三層PDU穿過二層網(wǎng)絡地技術稱為租用鏈路或虛電路;而如果穿越發(fā)生在一種協(xié)議PDU封裝在同一層協(xié)議的PDU中,或者封裝在高層協(xié)議的PDU中時,人們通常稱之為隧道。
隧道提供了一種某一特定網(wǎng)絡技術的PDU穿過不具備該技術轉(zhuǎn)發(fā)能力的網(wǎng)絡的手段,如組播數(shù)據(jù)包穿過不支持組播的網(wǎng)絡;另一種情況是有時因為管理策略的原因,一個管理者(策略)的子網(wǎng)不能通過和另一個管理者(策略)的網(wǎng)絡互聯(lián)而連接,而是要穿過另一個管理者(策略)的網(wǎng)絡實現(xiàn)連接,這就是所謂的VPN(VirtualPrivate Networks),不管是L2 VPN還是L3VPN都需要利用隧道技術實現(xiàn)。因此隧道某種意義上可以概括為穿越不同的網(wǎng)絡的技術,不同既可以是技術方面的,也可以是管理策略方面的。
隧道可以作為一個虛擬接口來實現(xiàn)。隧道接口并不指定特定的“乘客”或“傳輸”協(xié)議連接,而是一種結(jié)構(gòu),可以實現(xiàn)任何標準點到點封裝的服務。由于隧道是點到點連接,因此對每個連接必須配置一個單獨的隧道。
GRE是一種應用較為廣泛的一種網(wǎng)絡層協(xié)議PDU封裝于任一種網(wǎng)絡層協(xié)議PDU中的技術,經(jīng)常被用來構(gòu)造GRE隧道穿越各種三層網(wǎng)絡,并得到了大多數(shù)電信設備廠商的支持。
GRE(通用路由協(xié)議封裝)是由Cisco和Net-smiths等公司于1994年提交給IETF的,標號為RFC1701和RFC1702。目前有多數(shù)廠商的網(wǎng)絡設備均支持GRE隧道協(xié)議。GRE規(guī)定了如何用一種網(wǎng)絡協(xié)議去封裝另一種網(wǎng)絡協(xié)議的方法。GRE的隧道由兩端的源IP地址和目的IP地址來定義,允許用戶使用IP包封裝IP、IPX、AppleTalk包,并支持全部的路由協(xié)議(如RIP2、OSPF等)。通過GRE,用戶可以利用公共IP網(wǎng)絡連接IPX網(wǎng)絡、AppleTalk網(wǎng)絡,還可以使用保留地址進行網(wǎng)絡互連,或者對公網(wǎng)隱藏企業(yè)網(wǎng)的IP地址。
封裝后一個GRE數(shù)據(jù)包的格式如下:
a ---------------------------------
| |
| Delivery Header |
| |
---------------------------------
| |
| GRE Header |
| |
---------------------------------
| |
| Payload packet |
| |
---------------------------------
The GRE packet header has the form:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|R|K|S|s|Recur| Flags | Ver | Protocol Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum (optional) | Offset (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Key (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Routing (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
----GRE在包頭中包含了協(xié)議類型,這用于標明乘客協(xié)議的類型;校驗和包括了GRE的包頭和完整的乘客協(xié)議與數(shù)據(jù);密鑰用于接收端驗證接收的數(shù)據(jù);序列號用于接收端數(shù)據(jù)包的排序和差錯控制;路由用于本數(shù)據(jù)包的路由。
----GRE只提供了數(shù)據(jù)包的封裝,它并沒有加密功能來防止網(wǎng)絡偵聽和攻擊。所以在實際環(huán)境中它常和IPsec在一起使用,由IPsec提供用戶數(shù)據(jù)的加密,從而給用戶提供更好的安全性。
GRE協(xié)議的主要用途有兩個:企業(yè)內(nèi)部協(xié)議封裝和私有地址封裝。在國內(nèi),由于企業(yè)網(wǎng)幾乎全部采用的是TCP/IP協(xié)議,因此在中國建立隧道時沒有對企業(yè)內(nèi)部協(xié)議封裝的市場需求。企業(yè)使用GRE的唯一理由應該是對內(nèi)部地址的封裝。當運營商向多個用戶提供這種方式的VPN業(yè)務時會存在地址沖突的可能性。
路由封裝(GRE)最早是由Cisco提出的,而目前它已經(jīng)成為了一種標準,被定義在RFC 1701, RFC 1702, 以及RFC2784中。簡單來說,GRE就是一種隧道協(xié)議,用來從一個網(wǎng)絡向另一個網(wǎng)絡傳輸數(shù)據(jù)包。
如果你覺得它和虛擬專用網(wǎng)(VPN)有些類似,那只是因為:從技術上講,GRE隧道是某一類型的VPN,但是并不是一個安全隧道方式。不過你也可以使用某種加密協(xié)議對GRE隧道進行加密,比如VPN網(wǎng)絡中常用的IPSec協(xié)議。
實際上,點到點隧道協(xié)議(PPTP)就是使用了GRE來創(chuàng)建VPN隧道。比如,如果你要創(chuàng)建MicrosoftVPN隧道,默認情況下會使用PPTP,這時就會用到GRE。
為什么要用GRE?
為什么要使用GRE進行隧道傳輸呢?原因如下:
有時你需要加密的多播傳輸。GRE隧道可以像真實的網(wǎng)絡接口那樣傳遞多播數(shù)據(jù)包,而單獨使用IPSec,則無法對多播傳輸進行加密。多播傳輸?shù)睦影∣SPF,EIGRP, 以及RIPV2。另外,大量的視頻、VoIP以及音樂流程序使用多播。
你所采用的某種協(xié)議無法進行路由,比如NetBIOS或在IP網(wǎng)絡上進行非IP傳輸。比如,你可以在IP網(wǎng)絡中使用GRE支持IPX或AppleTalk協(xié)議。
你需要用一個IP地址不同的網(wǎng)絡將另外兩個類似的網(wǎng)絡連接起來。
如何配置GRE隧道?
在Cisco路由器上配置GRE隧道是一個簡單的工作,只需要輸入幾行命令即可實現(xiàn)。以下是一個簡單的例子。
路由器A:
interface Ethernet0/1
ip address 10.2.2.1 255.255.255.0
interface Serial0/0
ip address 192.168.4.1 255.255.255.0
interface Tunnel0
ip address 1.1.1.2 255.255.255.0
tunnel source Serial0/0
tunnel destination 192.168.4.2
路由器B:
interface FastEthernet0/1
ip address 10.1.1.1 255.255.255.0
interface Serial0/0
ip address 192.168.4.2 255.255.255.0
interface Tunnel0
ip address 1.1.1.1 255.255.255.0
tunnel source Serial0/0
tunnel destination 192.168.4.1
在這個例子中,兩個路由器均擁有虛擬接口,即隧道接口。這一接口屬于各自的網(wǎng)絡,就好像一個點到點的T1環(huán)路。跨越隧道網(wǎng)絡的數(shù)據(jù)采用串行網(wǎng)絡方式傳輸。
對于每個路由器都有兩種途徑將數(shù)據(jù)傳遞到另一端,即通過串行接口以及通過隧道接口(通過隧道傳遞數(shù)據(jù))。該隧道可以傳輸非路由協(xié)議的數(shù)據(jù),如NetBIOS或AppleTalk。如果數(shù)據(jù)需要通過互聯(lián)網(wǎng),你可以使用IPSec對其進行加密。
從下面的信息反饋可以看出,路由器B上的隧道接口和其他網(wǎng)絡接口沒有什么不同:
RouterB# sh ip int brie
InterfaceIP-AddressOK?MethodStatusProtocol
Ethernet010.1.1.1YESmanualupdown
Serial0192.168.4.2YESmanualupup
Serial1unassignedYESunset administratively downdown
Tunnel01.1.1.1YESmanualupup
RouterB#
[Tunnel就是一個接口,如果使用還需另外的策略。]
解決GRE隧道的問題:
由于GRE是將一個數(shù)據(jù)包封裝到另一個數(shù)據(jù)包中,因此你可能會遇到GRE的數(shù)據(jù)報大于網(wǎng)絡接口所設定的數(shù)據(jù)包最大尺寸的情況。解決這種問題的方法是在隧道接口上配置iptcp adjust-mss 1436。另外,雖然GRE并不支持加密,但是你可以通過tunnelkey命令在隧道的兩頭各設置一個密鑰。這個密鑰其實就是一個明文的密碼。由于GRE隧道沒有狀態(tài)控制,可能隧道的一端已經(jīng)關閉,而另一端仍然開啟。這一問題的解決方案就是在隧道兩端開啟keepalive數(shù)據(jù)包。它可以讓隧道一端定時向另一端發(fā)送keepalive數(shù)據(jù),確認端口保持開啟狀態(tài)。如果隧道的某一端沒有按時收到keepalive數(shù)據(jù),那么這一側(cè)的隧道端口也會關閉。
愛華網(wǎng)



