GRE ××× :

这种×××并不存在安全性 因此一般应该使用的是GRE over IPsec ×××

Tunnel 源指定为本地网关公网的接口或IP tunnel目标指定为对端网关的公网接口IP

其实就是私网的数据包封装一层公网IP头部而已。

原理: 公网IP + GRE头(tunnel IP+私网IP数据 (三层IP包头)

 

封装GRE头部,GRE头部4byte。再加私网头部20byte,并在外部封装公网IP以穿越R2-R5-R3(公网)。就相当于给分公司到总公司的数据包打了2IP头部,即IPinIP

R2R3上我们分别定义了一个tunnel 0口,私网的数据包到达R2,R3时,会被发送至tunnel 0中,并进行二次封装封装公网IPR2R3公网出口IP。从而使数据包在公网中穿越,此时数据包具备双层IP头部。当到达对端的出口路由器时,会尝试解封装掉公网头部。从而露出私网头部,路由器检查这层私网IP头部的IP源目的IP地址,并查找有关其目标相关的路由条目,检查到后,会直接对数据进行转发。

 

R1–R2—R5–R3—-R4

R1 为分公司

R4 为总公司

R2 为分公司的出口路由器

R3 为总公司的出口路由器

模拟公网 R5

网络拓扑如下:

clip_p_w_picpath021

 

 

 

首先保证网络的连通性,这是必须的!!!        

R1: 分公司

#        
version 5.20, Alpha 1011          
#          
sysname RT1          

interface Ethernet0/0/0          
undo shut          
port link-mode route          
ip address 192.168.1.1 255.255.255.0          
#          
ip route-static 0.0.0.0 0.0.0.0 192.168.1.2 指一条默认路由        

user-interface con 0          
idle-timeout 0 0            
user-interface vty 0 4            
#            
return

R2: 分公司出口路由器

version 5.20, Alpha 1011        
#          
sysname RT2          

interface Ethernet0/0/0          
undo shut          
port link-mode route          
ip address 192.168.1.2 255.255.255.0          
#          
interface Serial0/2/0          
undo shut          
link-protocol ppp          
ip address 172.16.1.1 255.255.255.0          
#          
interface Tunnel0          
undo shut          
ip address 10.1.1.1 255.255.255.0          
source Serial0/2/0          
destination 172.16.2.2          
#          
ip route-static 0.0.0.0 0.0.0.0 172.16.1.2 指一条到Internet的默认路由        
ip route-static 192.168.2.0 255.255.255.0 Tunnel0 (
指一条下一跳为tunnel 0,目的地址为目标网络号的静态路由)将数据从隧道中发过去
       
user-interface con 0          
idle-timeout 0 0            
user-interface vty 0 4            
#            
return

R5: 模拟的公网

#        
version 5.20, Alpha 1011          
#          
sysname RT5          
interface Serial0/2/0          
undo shut          
link-protocol ppp          
ip address 172.16.1.2 255.255.255.0          
#          
interface Serial0/2/1          
link-protocol ppp          
ip address 172.16.2.1 255.255.255.0          
#          
user-interface con 0          
idle-timeout 0 0          
user-interface vty 0 4          
#          
return

R3: 总公司的出口路由器

version 5.20, Alpha 1011        
#          
sysname RT3          
interface Serial0/2/0          
undo shut          
link-protocol ppp          
ip address 172.16.2.2 255.255.255.0          
#          
interface Serial0/2/1          
undo shut          
link-protocol ppp          
ip address 192.168.2.1 255.255.255.0          

interface Tunnel0          
undo shut          
ip address 10.1.1.2 255.255.255.0          
source Serial0/2/0          
undo shut          
destination 172.16.1.1          
#          
ip route-static 0.0.0.0 0.0.0.0 172.16.2.1 指一条到Internet的默认路由        
ip route-static 192.168.1.0 255.255.255.0 Tunnel0 (
指一条下一跳为tunnel 0,目的地址为目标网络号的静态路由)将数据从隧道中发过去
       

user-interface con 0          
idle-timeout 0 0            
user-interface vty 0 4            
#            
return

 

R4: 总公司

version 5.20, Alpha 1011        
#          
sysname RT4          
#          
interface Serial0/2/0          
undo shut          
link-protocol ppp          
ip address 192.168.2.2 255.255.255.0          

ip route-static 0.0.0.0 0.0.0.0 192.168.2.1 指一条默认路由        

user-interface con 0          
idle-timeout 0 0            
user-interface vty 0 4            
#            
return
       

说明:

因为 R1 R4分别模拟的是分公司和总公司

R2为分公司的出口路由器 R3为总公司的出口路由 因此需要分别指定一条静态路由

R5模拟的是公网

需要在R1R4上分别指一条默认路由,以其相邻的路由器接口为下一跳。

R3R4上分别指定对端私有网段为目标地址,tunnel 0口为下一跳,写一条静态路由。使分公司内网和总公司内网之间的流量走R2R3之间建立起来的隧道。

 

 

 

H3C路由器上debug GREICMP得到的信息:

Debug命令:

Terminal debugging

Terminal monitor

Debugging ip packet

Debugging ip icmp

Debugging gre packet

Debugging gre error

Debugging gre all

R4 ping R1得出以下debug信息:

 

*Feb 18 17:24:15:454 2012 RT2 GRE/7/debug:Gre packet has been sent to ip queue successfully.

*Feb 18 17:24:15:454 2012 RT2 IPFWD/7/debug_case:

Receiving, interface = Tunnel0, version = 4, headlen = 20, tos = 0,

pktlen = 84, pktid = 96, offset = 0, ttl = 254, protocol = 1,

checksum = 14325, s = 192.168.2.2, d = 192.168.1.1

prompt: Receiving IP packet from Tunnel0

 

*Feb 18 17:24:15:454 2012 RT2 IPFWD/7/debug_case:

Sending, interface = Ethernet0/0/0, version = 4, headlen = 20, tos = 0,

pktlen = 84, pktid = 96, offset = 0, ttl = 253, protocol = 1,

checksum = 14581, s = 192.168.2.2, d = 192.168.1.1

prompt: Sending the packet from Tunnel0 at Ethernet0/0/0

 

*Feb 18 17:24:15:454 2012 RT2 IPFWD/7/debug_case:

Receiving, interface = Ethernet0/0/0, version = 4, headlen = 20, tos = 0,

pktlen = 84, pktid = 104, offset = 0, ttl = 255, protocol = 1,

checksum = 14061, s = 192.168.1.1, d = 192.168.2.2

prompt: Receiving IP packet from Ethernet0/0/0

 

*Feb 18 17:24:15:454 2012 RT2 IPFWD/7/debug_case:

Sending, interface = Tunnel0, version = 4, headlen = 20, tos = 0,

pktlen = 84, pktid = 104, offset = 0, ttl = 254, protocol = 1,

checksum = 14317, s = 192.168.1.1, d = 192.168.2.2

prompt: Sending the packet from Ethernet0/0/0 at Tunnel0

 

*Feb 18 17:24:15:454 2012 RT2 GRE/7/debug:

Tunnel0 packet:Before encapsulation,

Outer packet header 192.168.1.1->192.168.2.2(length = 84)

*Feb 18 17:24:15:454 2012 RT2 GRE/7/debug:

Tunnel0 packet:After encapsulation,

Outgoing packet header 172.16.1.1->172.16.2.2(length = 108)

*Feb 18 17:24:15:454 2012 RT2 GRE/7/debug:Output: Gre packet has been fast-switched successfully, interface index is 0x2f0000.

 

GRE Tunnel只支持路由器,不支持集中器和PIXASA

GRE支持IP ,IPX等协议。

GRE支持P2P GRE multipoint GRE

P2P GRE只能在2台路由器之间建立。

MGRE 可以在多台路由器上建立。

P2P GRE 支持IP 单播,组播及IGP 动态路由协议和非IP协议。

MGRE 只支持单播,组播以及动态IGP路由协议,不支持非IP协议。

 

要求:本源地址有效,隧道起始和重点的路由可达时,隧道接口才能UP