GRE的主要作用是什麼?
通用路由封裝(GRE)最初由Cisco開發,現在是一個RFC 1701、RFC 1702和RFC 2784定義的标準。GRE是一個在網絡之間傳輸資料包的通道協定。
如果對你而言它聽起來像一個虛拟專用網絡(×××),這是因為理論上确實是這樣:技術上,GRE是一種×××,但它并不是一種安全的通道方法。不過,你可以用IPSec這樣的加密方法對GRE進行加密,建構一個安全的×××。
實際上,點對點通道協定(PPTP)就使用GRE來建立×××通道。例如,如果你應用微軟×××通道,在預設情況下,你使用PPTP,它使用GRE。
我為什麼要使用GRE?
下面列出了一些使用GRE為流量建立通道的原因:
你需要加密多點傳送流量。GRE通道能夠傳送多點傳送資料包——就像真實的網絡接口一樣——這與使用IPSec不同,它不能加密多點傳送流量。OSPF、EIGRP和RIPV2都屬于多點傳送。而且,許多視訊、VoIP和音樂流應用程式都使用多點傳送。
你隻有一個不能路由的協定,如NetBIOS或非IP網絡上的非IP流量。例如,你可以通過一個IP網絡使用GRE為IPX或AppleTalk建立通道。
你需要用不同的IP位址連接配接兩個由一個不同網絡連接配接的相似網絡。
我如何配置GRE通道?
在Cisco路由器上配置GRE通道相當容易——隻需要執行幾條簡單的指令即可。下面是一個簡單的配置執行個體:
路由器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
ip address 192.168.4.2 255.255.255.0
ip address 1.1.1.1 255.255.255.0
tunnel destination 192.168.4.1
在這個例子中,兩個路由器各有一個虛拟接口——通道接口。這個接口像一個點對點T1電路一樣,有它自己的網絡。經過通道網絡的流量也流經串行網絡。
對每個路由器而言,很明顯它們有兩條遠端路徑——串行接口和通道接口(流經通道)。然後這個通道就能傳送非路由流量,如NetBIOS或AppleTalk。如果它通過網際網路,你可以使用IPSec進行加密。
如下面的輸出所見,路由器B上的通道接口和其它接口一樣:
RouterB# sh ip int brie
InterfaceIP-AddressOK?MethodStatusProtocol
Ethernet010.1.1.1YESmanualupdown
Serial0192.168.4.2YESmanualupup
Serial1unassignedYESunsetadministratively downdown
Tunnel01.1.1.1YESmanual upup
RouterB#
GRE通道故障修複
由于GRE把一個資料包封裝到另一個資料包中,是以你可能會遇到以下情形:你發送的資料包超出你的接口所允許的大小。在通道接口上配置ip tcp adjust-mss 1436,就可以解決這個問題。
雖然GRE不提供加密功能,但你可以使用tunnel key指令在通道的兩端激活一個密鑰,它就像一個沒有加密的簡單明文密碼。
因為GRE通道沒有狀态,那麼可能出現這樣的情況:通道的一端關閉,而另一端仍然開放。在解決這個問題,可以在通道的兩端啟動keepalive資料包。這樣設定後,通道的兩端定期向另一端發送一個keepalive資料包。如果一端沒有在指定的時間收到keepalive資料包,兩端的通道就會關閉。