GRE tunnel(通用路由封裝)
GRE tunnel通用路由封閉協議
Ip in ip
啥意思,就是將一個IP的包,再次封閉在一個IP包裡,亂嗎?
別亂,看看倒底是怎麼回事兒,
其實這東西就是一個VPN的原型,啥叫VPN?用於連線兩個或多個站點的技術,實現雙向區域網通訊,當然VPN的種類還是蠻多的呢~
後面面學習的時候要一一見到,ipsec, ssl dm easyvpn Mpls...
大概意思明白了,為什麼還要把IP再將封裝到IP中呢?
其實這一點也很好理解,首先,私有地址是無法在公網上跑的,這毋庸置疑,那如何實現兩個節點之間的互聯呢?也許你會想到BGP? 別鬧,啥企業上來就玩兒BGP啊,不要錢啊?
當需要實現兩個節點互通,且不想投入過多時,這個時候就要考慮
其意思就是將區域網的IP,封閉到GRE的tunnel隧道里,到達對端以後再將外層的封裝拆除,實現“和內網訪問一樣”的效果
看個例項吧 ,R1(內網192.168.1.0/24) R3(內網172.16.1.0/24)外網為12.0.0.0/24 和23.0.0.0
R1,R3分別下聯著兩個分支,R2仿internet,
如何實現兩個節點之點的互通呢?使用tunnel
現條件:
NAT是肯定要有的,對吧,企業網關出去肯定要轉成公網IP的,
然後就是tunnel的配置了,
1 先要建立
2 指定隧道源和目的,建立隧道,
3 為隧道注入路由,(對端內網網段)
就這樣實現互通了
NAT的部份咱們直接跳過了啊~
老生長談了
直接上GRE部份
R1(config)#inte tunnel 1 //建立 tunnel 編號1 R1(config-if)#ip add 100.1.1.1 255.255.255.0 //配置一個IP地址, R1(config-if)#tunnel source f0/0 //隧道源的IP(介面) R1(config-if)#tunnel destination 23.0.0.3 //隧道目的IP R1(config)#ip route 172.16.1.0 255.255.255.0 tunnel 1 //和對端做靜態,從tunnel 口出去 R3(config)#inter tunnel 1 R3(config-if)#ip add 100.1.1.2 255.255.255.0 R3(config-if)#tunnel source f0/0 R3(config-if)#tunnel destination 12.0.0.1 R3(config)#ip route 192.168.1.0 255.255.255.0 tun 1
至此GRE完成,
先來看看兩邊的區域網能否通訊~
通是可以通的,但是它是怎麼走的呢
Trace一下
先到達自己的閘道器,
然後到達下一跳為tunnel口的對端 IP
再到對端 區域網內。
等於是資料又經過了一次封裝,
GRE的封裝過程
可以直接從一個包來分析一下
由下至上,ICMP協議,ping包,
Ipv4 sip 172.16.1.10 ,dip 192.168.1.10 (用pc2ping的pc1)
GRE
Ipv4 sip 23.0.0.3 , dip 12.0.0.1
裡層資料,IPV4,源172.16.1.10 目的ip 192.168.1.10
傳到路由器時,檢視路由,需要從tunnel口出去,
由進行GRE的封裝,
然後再加上新的IP,這裡的新IP頭部就是我們配置的 tunnel source 以及tunnel destination
IPV4源23.0.0.3 目的IP 12.0.0.1
這時不禁會想到一個問題
我們配置了tunnel 的ip地址,好像在抓包中也沒有看到啊~封裝在哪裡了呢?
其實配置tunnel 口IP主要目的有兩點,
1,使靜態路由生效
2,做為資料轉發的下一跳
最後,請問,tunnel 的ip 兩端可以不一樣嗎?
R3(config)#inter tunnel 1 R3(config-if)#ip add 200.3.3.3 255.255.255.0
可以看到,就算是兩端的tunnel ip 不一樣,也沒有問題
因為這裡起到決定因素的不是這個IP ,
而是tunnel source 以及tunnel destination 的指定。
----------------------------------------------
CCIE成長之路 ---梅利