天天看點

Cisco路由器配置GRE隧道舉例

隧道技術 概述

        一種技術(協定)或者政策的兩個或多個子網穿過另一種技術(協定)或者政策的網絡實作互聯,稱之為overlay topology,這一技術是電信技術的永恒主題之一。

        電信技術在發展,多種網絡技術并存,一種技術的網絡孤島可能需要穿過另一種技術的網絡實作互聯,這種情況如果發生在高層協定的PDU封裝于低層協定PDU 中時通常稱之為複用,特别地三層PDU穿過二層網絡地技術稱為租用鍊路或虛電路;而如果穿越發生在一種協定PDU封裝在同一層協定的PDU中,或者封裝在 高層協定的PDU中時,人們通常稱之為隧道。

         隧道提供了一種某一特定網絡技術的PDU穿過不具備該技術轉發能力的網絡的手段,如多點傳播資料包穿過不支援多點傳播的網絡;另一種情況是有時因為管理政策的原 因,一個管理者(政策)的子網不能通過和另一個管理者(政策)的網絡互聯而連接配接,而是要穿過另一個管理者(政策)的網絡實作連接配接,這就是所謂的 VPN(Virtual Private Networks),不管是L2 VPN還是L3 VPN都需要利用隧道技術實作。是以隧道某種意義上可以概括為穿越不同的網絡的技術,不同既可以是技術方面的,也可以是管理政策方面的。

隧道可以作為一個虛拟接口來實作。隧道接口并不指定特定的“乘客”或“傳輸”協定連接配接,而是一種結構,可以實作任何标準點到點封裝的服務。由于隧道是點到 點連接配接,是以對每個連接配接必須配置 一 個單獨的隧道。

       GRE是一種應用較為廣泛的一種網絡層協定PDU封裝于任一種網絡層協定PDU中的技術,經常被用來構造GRE隧道穿越各種三層網絡,并得到了大多數電信 裝置廠商的支援。

        GRE(通用路由協定封裝)是由Cisco和Net-smiths等公司于1994年送出給IETF的,标号為RFC1701和RFC1702。目前有多 數廠商的網絡裝置均支援GRE隧道協定。GRE 規定了如何用一種網絡協定去封裝另一種網絡協定的方法。GRE的隧道由兩端的源IP位址和目的IP位址來定義,允許使用者使用IP包封裝IP、IPX、 AppleTalk包,并支援全部的路由協定(如RIP2、OSPF等)。通過GRE,使用者可以利用公共IP網絡連接配接IPX網絡、AppleTalk網 絡,還可以使用保留位址進行網絡互連,或者對公網隐藏企業網的IP位址。

        封裝後一個GRE資料包的格式如下:

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)                    |



      

文章轉載至http://bbs.net527.cn   無憂網客聯盟

無憂網客聯盟主站

無憂linux時代

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      

        ----GRE在標頭中包含了協定類型,這用于标明乘客協定的類型;校驗和包括了GRE的標頭和完整的乘客協定與資料;密鑰用于接收端驗證接收的資料;序 列号用于接收端資料包的排序和差錯控制;路由用于本資料包的路由。

        ----GRE隻提供了資料包的封裝,它并沒有加密功能來防止網絡偵聽和攻擊。是以在實際環境中它常和IPsec在一起使用,由IPsec提供使用者資料的 加密,進而給使用者提供更好的安全性。

        GRE協定的主要用途有兩個:企業内部協定封裝和私有位址封裝。在國内,由于企業網幾乎全部采用的是TCP/IP協定,是以在中國建立隧道時沒有對企業内 部協定封裝的市場需求。企業使用GRE的唯一理由應該是對内部位址的封裝。當營運商向多個使用者提供這種方式的VPN業務時會存在位址沖突的可能性。

        路由封裝(GRE)最早是由Cisco提出的,而目前它已經成為了一種标準,被定義在RFC 1701, RFC 1702, 以及RFC 2784中。簡單來說,GRE就是一種隧道協定,用來從一個網絡向另一個網絡傳輸資料包。

        如果你覺得它和虛拟專用網(VPN)有些類似,那隻是因為:從技術上講,GRE隧道是某一類型的VPN,但是并不是一個安全隧道方式。不過你也可以使用某 種加密協定對GRE隧道進行加密,比如VPN網絡中常用的IPSec協定。

        實際上,點到點隧道協定(PPTP)就是使用了GRE來建立VPN隧道。比如,如果你要建立Microsoft VPN隧道,預設情況下會使用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

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

        在這個例子中,兩個路由器均擁有虛拟接口,即隧道接口。這一接口屬于各自的網絡,就好像一個點到點的T1環路。跨越隧道網絡的資料采用串行網絡方式傳輸。

        對于每個路由器都有兩種途徑将資料傳遞到另一端,即通過串行接口以及通過隧道接口(通過隧道傳遞資料)。該隧道可以傳輸非路由協定的資料,如 NetBIOS或AppleTalk。如果資料需要通過網際網路,你可以使用IPSec對其進行加密。

        從下面的資訊回報可以看出,路由器B上的隧道接口和其他網絡接口沒有什麼不同:

RouterB# sh ip int brie

Interface   IP-Address     OK?       Method Status                 Protocol

Ethernet0   10.1.1.1       YES        manual up                     down

Serial0     192.168.4.2   YES        manual up                     up

Serial1     unassigned    YES       unset   administratively down down

Tunnel0     1.1.1.1         YES         manual up                     up

RouterB#

[Tunnel就是一個接口,如果使用還需另外的政策。]

        解決GRE隧道的問題

        由于GRE是将一個資料包封裝到另一個資料包中,是以你可能會遇到GRE的資料報大于網絡接口所設定的資料包最大尺寸的情況。解決這種問題的方法是在隧道 接口上配置ip tcp adjust-mss 1436。另外,雖然GRE并不支援加密,但是你可以通過tunnel key指令在隧道的兩頭各設定一個密鑰。這個密鑰其實就是一個明文的密碼。由于GRE隧道沒有狀态控制,可能隧道的一端已經關閉,而另一端仍然開啟。這一 問題的解決方案就是在隧道兩端開啟keepalive資料包。它可以讓隧道一端定時向另一端發送keepalive資料,确認端口保持開啟狀态。如果隧道 的某一端沒有按時收到keepalive資料,那麼這一側的隧道端口 也會關閉。

-------------------------------------------

in RFC1701:

Forwarding of GRE packets

   Normally, a system which is forwarding delivery layer packets will not differentiate GRE packets from other packets in any way. However, a GRE packet may be received by a system. In this case, the system should use some delivery-specific means to determine that this is a GRE packet. Once this is determined, the Key, Sequence Number and Checksum fields if they contain valid information as indicated by the corresponding flags may be checked. If the Routing Present bit is set to 1, then the Address Family field should be checked to determine the semantics and use of the SRE Length, SRE Offset and Routing Information fields. The exact semantics for processing a SRE for each Address Family is defined in other documents.

   Once all SREs have been processed, then the source route is complete, the GRE header should be removed, the payload's TTL MUST be decremented (if one exists) and the payload packet should be forwarded as a normal packet. The exact forwarding method depends on the Protocol Type field.

繼續閱讀