目 錄 第1章 GRE簡介1.1 GRE概述GRE是Generic Routing Encapsulation(通用路由封裝)的簡稱。簡單而言,GRE就是對某些網(wǎng)絡(luò)層協(xié)議(如:IPV4,IPV6,IPX等)的數(shù)據(jù)報(bào)進(jìn)行封裝,使這些被封裝的數(shù)據(jù)報(bào)能夠在另一個網(wǎng)絡(luò)層協(xié)議(如IPV4,IPV6等)中傳輸。 GRE通過創(chuàng)建一條點(diǎn)到點(diǎn)的tunnel來完成二次封裝數(shù)據(jù)的轉(zhuǎn)發(fā)。 企業(yè)私有網(wǎng)絡(luò)的IP地址通常是自己規(guī)劃,無法和外部互聯(lián)網(wǎng)進(jìn)行正確的路由。而在企業(yè)網(wǎng)絡(luò)的出口,通常會有一個互聯(lián)網(wǎng)唯一的IP地址,這個地址可以在互聯(lián)網(wǎng)中唯一識別出來。GRE就是對目的IP地址和源地址為企業(yè)內(nèi)部地址的數(shù)據(jù)報(bào)文進(jìn)行封裝,加上一個IP頭,其目的地址為遠(yuǎn)端機(jī)構(gòu)互聯(lián)網(wǎng)出口的IP地址,源地址為本地互聯(lián)網(wǎng)出口的IP地址,從而通過互聯(lián)網(wǎng)進(jìn)行正確的傳輸,實(shí)現(xiàn)最簡單的VPN技術(shù)。 實(shí)現(xiàn)VPN的應(yīng)用只是GRE的功能之一,GRE的隧道功能還能為IPV4到IPV6的過渡發(fā)揮積極的作用。 1.2 GRE報(bào)文格式
GRE的報(bào)文由傳遞協(xié)議和負(fù)載協(xié)議構(gòu)成,如圖1.2?1所示。 圖1.2?1 GRE報(bào)文格式 Delivery Header:傳遞協(xié)議的協(xié)議頭在傳遞協(xié)議為IPv4的情況下,這里占用20個字節(jié)并且將協(xié)議號置為47,表明這個報(bào)文是GRE報(bào)文。 GRE Header:GRE協(xié)議頭占用8個字節(jié),其中包含了2個字節(jié)的Protocol Type,用于表明負(fù)載協(xié)議是什么類型,當(dāng)負(fù)載協(xié)議為IP時(shí)需要將這兩個字節(jié)數(shù)據(jù)標(biāo)注為0x800。 Payload:負(fù)載協(xié)議的數(shù)據(jù)包。 1.3 GRE工作原理1.3.1 隧道源端的加封裝過程當(dāng)路由器發(fā)送或轉(zhuǎn)發(fā)一個IP數(shù)據(jù)報(bào)時(shí),如果IP數(shù)據(jù)報(bào)經(jīng)路由查找要從GRE隧道接口發(fā)出,就需要進(jìn)行GRE封裝。在封裝時(shí)需要根據(jù)該GRE隧道接口的選項(xiàng)設(shè)置情況進(jìn)行GRE報(bào)頭選項(xiàng)字段的處理,最后根據(jù)封裝后的目的地址查找路由把數(shù)據(jù)報(bào)送到輸出的網(wǎng)絡(luò)接口,實(shí)現(xiàn)數(shù)據(jù)報(bào)的轉(zhuǎn)發(fā)。 目前GER隧道的MTU是1476字節(jié),如果要發(fā)送的數(shù)據(jù)報(bào)長度大于接口的MTU,還需要進(jìn)行分片操作,然后再經(jīng)過GRE封裝后發(fā)出,即先分片后封裝。當(dāng)該IP數(shù)據(jù)報(bào)頭DF位置1表明該數(shù)據(jù)包進(jìn)行了分片,當(dāng)接口接收到的報(bào)文大于自己的MTU時(shí),則回送ICMP消息表明自己需要分片接收數(shù)據(jù)包(type為3,code為4,附帶該接口的MTU)。 1.3.2 隧道對端的解封裝過程當(dāng)路由器收到一個IP數(shù)據(jù)報(bào)時(shí),如果其目的地址是本地且其報(bào)頭的協(xié)議字段為47,說明該數(shù)據(jù)報(bào)是經(jīng)過GRE封裝的,需要在本路由器上進(jìn)行解析。 GRE報(bào)文經(jīng)過合法性檢查后,需要根據(jù)GRE報(bào)文的源地址和目的地址映射到本地保存的GRE隧道編號,若對應(yīng)的GRE隧道不存在,則丟棄該數(shù)據(jù)報(bào)。 接著進(jìn)行GRE選項(xiàng)的處理,目前我司路由器僅支持key選項(xiàng)而忽略其他選項(xiàng)。若GRE報(bào)頭中flag字段的key標(biāo)記與本路由器對應(yīng)隧道的key標(biāo)記不同,或者都置了key標(biāo)記而key值不同,則丟棄該數(shù)據(jù)報(bào)。 把去除GRE封裝的IP數(shù)據(jù)報(bào)頭的TTL減1,然后進(jìn)行進(jìn)一步的處理。通過查找路由判斷數(shù)據(jù)報(bào)是要本地投遞還是轉(zhuǎn)發(fā)。TTL的處理方法表明,藏在外網(wǎng)IP后的內(nèi)網(wǎng)IP不會在隧道轉(zhuǎn)發(fā)的過程中將TTL遞減。 解封裝時(shí),如果內(nèi)部IP頭的地址是原封裝設(shè)備,則會造成路由環(huán)路。要避免這種情況的發(fā)生。 1.4 設(shè)備版本信息
第2章 配置GRE2.1 GRE配置思路
GRE的主要配置步驟包括: 1. 創(chuàng)建隧道,設(shè)置隧道模式為GRE; 2. 配置隧道源地址和目的地址; 3. 配置私網(wǎng)路由的出口為tunnel接口或者將下一跳設(shè)置為對端的tunnel ip。 此外可根據(jù)需要啟用密鑰、tunnel sequence選項(xiàng)、tunnel checksum選項(xiàng)等。 2.2 GRE配置命令下面介紹GRE的主要配置命令。 1. 創(chuàng)建隧道,并進(jìn)入該隧道接口配置模式
<tunnel-number>的格式為tunnel+<id>,如tunnel1,id取值范圍在1~64。 2. 配置隧道為GRE隧道
3. 為所在隧道配置一個隧道源地址
4. 為所在隧道配置一個隧道目的地址
5. 為隧道配置密鑰
隧道兩端的密鑰必須相同。 6. 配置本隧道啟用tunnel sequence選項(xiàng)
7. 配置本隧道啟用tunnel checksum選項(xiàng)
第3章 GRE配置實(shí)例3.1 網(wǎng)絡(luò)拓?fù)?/span>
如圖3.1?1所示,某公司為了連接兩個部門之間的網(wǎng)絡(luò),啟用了GRE構(gòu)建隧道。規(guī)劃中路由器的loopback作為tunnel source和tunnel destination,并設(shè)置兩個私網(wǎng)地址作為tunnel地址,打通100.100.100.0/24和200.200.200.0/24的隧道通路。
![]()
圖3.1?1 GRE典型配置組網(wǎng) 3.2 配置步驟
GER的fei_1/1連接的是100.100.100.0/24的內(nèi)部網(wǎng)絡(luò),fei_1/2連接到運(yùn)營商提供的公網(wǎng)接口,接口IP地址為 GER的配置: GER(config)#int loopback1 GER(config-if)#ip address GER(config)#int fei_1/1 GER(config-if)#ip address 100.100.100.1 255.255.255.0 GER(config)#int fei_1/2 GER(config-if)#ip address GER(config)#int tunnel1 GER(config-if)#ip address 172.16.1.1 255.255.255.252 GER(config-if)#tunnel mode gre ip GER(config-if)#tunnel source GER(config-if)#tunnel destination GER(config)#ip route GER(config)#ip route 200.200.200.0 255.255.255.0 tunnel1 GAR的配置: GAR(config)#int loopback1 GAR(config-if)#ip address GAR(config)#int fei_1/1 GAR(config-if)#ip address 200.200.200.1 255.255.255.0 GAR(config)#int fei_2/1 GAR(config-if)#ip address GAR(config)#int tunnel1 GAR(config-if)#ip address 172.16.1.1 255.255.255.252 GAR(config-if)#tunnel mode gre ip GAR(config-if)#tunnel source GAR(config-if)#tunnel destination GAR(config)#ip route GAR(config)#ip route 100.100.100.0 255.255.255.0 tunnel1 配置要點(diǎn):要使tunnel接口協(xié)議up,tunnel source和tunnel destination之間必須路由可達(dá)。建議tunnel source和tunnel destination的IP地址取用設(shè)備的loopback,這樣可以防止物理接口異常導(dǎo)致隧道故障,并充分利用公網(wǎng)上的冗余路由,保證GRE隧道的穩(wěn)定性。Tunnel接口的IP地址可以用ip unnumber配置,但是推薦配置私有IP地址使配置更加清晰。 第4章 GRE維護(hù)與診斷使用以下命令可以檢查Tunnel接口狀態(tài):
當(dāng)GRE出現(xiàn)故障時(shí),可以通過以下步驟確認(rèn)問題。 1. 查看tunnel接口是否協(xié)議UP GER(config)#show ip interface brief 2. 檢查tunnel source和tunnel destination之間是否路由可達(dá) GER(config)#ping 3. 檢查tunnel接口是否能夠相互ping通 GER(config)#ping 172.16.1.2 source 172.16.1.1 |
|