GRE协议Tunnel
- 格式:ppt
- 大小:648.50 KB
- 文档页数:40
gre隧道报文格式
GRE隧道报文格式是指通用路由封装(GenericRoutingEncapsulation,GRE)协议中用于传输数据的报文格式。
GRE是一种隧道协议,可以将其他协议的数据包封装在GRE包中,然后在网络中传输。
以下是GRE隧道报文格式的具体解析:
1. GRE协议头部:GRE协议头部包含以下字段:
- 位标识符(Flags):用于标识GRE报文中是否有可选字段。
- 协议类型(Protocol Type):表示GRE报文中封装的上层协议类型,如IP、IPv6等。
- 标志(Key):用于标识GRE隧道的唯一性。
- 严格路由源选项(Strict Source Route Option):用于指定GRE报文的传输路径,即源地址到目的地址的路径必须按照该选项中指定的路径传输。
可选字段。
- 递归隧道选项(Recursive Tunnel Option):用于支持多层隧道,即在GRE封装的数据包中再次封装GRE协议头部,以便在多个网络之间传输。
可选字段。
- 其他可选字段。
2. GRE协议数据部分:GRE协议数据部分是指封装在GRE包中的上层协议数据包,如IP包、TCP包等。
总之,GRE隧道报文格式的设计使得它能够有效地传输各种类型的数据包,并提供了可选的字段以支持更多的功能。
- 1 -。
VPN 虚拟专用网,全称:Virtual Private Network 是一种基于公共数据网的服务,它主要依赖ISP,在公共网络中建立虚拟专用通信网络。
隧道技术:在VPN中广泛使用了隧道技术,隧道是一种封装技术,它是利用一种网络协议来传输另一种网络协议。
即利用一种网络协议,将其它的一些协议产生的数据报文封装在自己的报文中,而后在网络中传输,它的通信只是一个虚拟的连接。
隧道是通过隧道协议来实现,隧道协议包括:第二层隧道协议(PPTP、L2TP)和第三层隧道协议(GRE、IPsec),下面主要讲解第三层隧道协议:GREGRE隧道协议GRE 通用路由封装协议,英文名称:Generic Routing Encapsulation 它实际上是一种封装协议,提供了将一种协议的报文封装在另一种协议报文中的机制,使报文能够在异种网络中传输,异种报文传输的通道称为tunnel(隧道)GRE数据包的格式是乘客协议、封装协议与运输协议3部分组成1.乘客协议:用户要传输的数据,这是真正用户要传输的数据,可以是IP或IPX等2.封装协议:用于建立、保持、拆卸隧道的协议,比如GRE、IPSEC,它把乘客协议报文进行“包装”,加上一个GRE头部,然后再把封装好的原始报文和GRE头部,放在IP地方的“数据区”,由IP进行传输。
3.运输协议:主要是指乘客协议被封装协议封装之后要发送出去应用的协议,现在我们主要使用的是IP协议。
如果使用我们平时发信来比喻的话,乘客协议就是我们写的信的内容(不同的协议就等于是不同的语言),而封装协议就是指信封,它对信件进行封装,而运输协议就是我们用哪种方式(协议)把信送出去。
示例:gre在中小企业中的应用拓扑图现在我们的要求就是让北京总公司与上海分公司通过广域网之后,两边内网能够相互通信,由于是实验环境,我们使用一个三层交换机来模拟广域网,为了保证其安全性,使用两个H3C的防火墙来做GRE接入第二阶段:配置广域网通信1.配置广域网<Quidway>systemEnter system view, return to user view with Ctrl+Z.[Quidway]vlan 10 //创建vlan10[Quidway-vlan10]port eth0/1 //将1端口加入vlan[Quidway-vlan10]vlan 20 //创建vlan20[Quidway-vlan20]port eth0/2 //将端口2加入[Quidway-vlan20]int vlan 10[Quidway-Vlan-interface10]ip add 61.130.131.1 255.255.255.0 //配置vlan ip [Quidway-Vlan-interface10]int vlan 20[Quidway-Vlan-interface20]ip add 61.130.130.1 255.255.255.0 //配置vlan ip2.北京总公司防火墙配置<H3C>system[H3C]int eth0/0[H3C-Ethernet0/0]ip add 192.168.1.1 24 //配置内网网关[H3C-Ethernet0/0]int eth0/4[H3C-Ethernet0/4]ip add 61.130.131.2 24 //配置外网ip[H3C]firewall zone untrust[H3C-zone-untrust]add int eth0/4 //将eth0/4加入untrust区域[H3C-zone-untrust][H3C]ip route-static 0.0.0.0 0 61.130.131.1 //配置静态路由3.上海分公司防火墙配置<H3C>systemSystem View: return to User View with Ctrl+Z.[H3C]int eth0/0[H3C-Ethernet0/0]ip add 192.168.2.1 24 //内网网关[H3C-Ethernet0/0]int eth0/4[H3C-Ethernet0/4]ip add 61.130.130.2 24 //外网IP[H3C]firewall zone untrust[H3C-zone-untrust]add int eth0/4 //将eth0/4加入untrust区域[H3C]ip route-static 0.0.0.0 0 61.130.130.1 //配置静态路由4.测试使用北京防火墙ping上海防火墙端口ip[H3C]ping 61.130.130.2PING 61.130.130.2: 56 data bytes, press CTRL_C to breakReply from 61.130.130.2: bytes=56 Sequence=1 ttl=254 time=19 msReply from 61.130.130.2: bytes=56 Sequence=2 ttl=254 time=6 msReply from 61.130.130.2: bytes=56 Sequence=3 ttl=254 time=5 msReply from 61.130.130.2: bytes=56 Sequence=4 ttl=254 time=5 msReply from 61.130.130.2: bytes=56 Sequence=5 ttl=254 time=6 ms--- 61.130.130.2 ping statistics ---5 packet(s) transmitted5 packet(s) received0.00% packet lossround-trip min/avg/max = 5/8/19 ms第二阶段:隧道配置1. 北京总公司防火墙配置[H3C]int Tunnel 10 //创建隧道10[H3C-Tunnel10]tunnel-protocol gre //gre封装协议[H3C-Tunnel10]source 61.130.131.2 //源ip(外网合法ip)[H3C-Tunnel10]destination 61.130.130.2 //目的ip(对端合法ip)[H3C-Tunnel10]ip add 192.168.4.1 24 //隧道ip[H3C-Tunnel10]quit[H3C]ip route-static 192.168.2.0 255.255.255.0 Tunnel 10 //静态路由,指出到达192.168.2.0网段的路由进入tunnel 10进行传输[H3C]firewall zone untrust[H3C-zone-untrust]add int Tunnel 10 //把隧道加入非安全区域2. 上海总公司防火墙配置[H3C]int Tunnel 20[H3C-Tunnel20]tunnel-protocol gre[H3C-Tunnel20]source 61.130.130.2[H3C-Tunnel20]destination 61.130.131.2[H3C-Tunnel20]ip add 192.168.4.2 24[H3C-Tunnel20]quit[H3C]ip route-static 192.168.1.0 255.255.255.0 Tunnel 20[H3C]firewall zone untrust[H3C-zone-untrust]add interface Tunnel 203.测试使用北京总公司一个主机ping上海分公司的网关C:Documents and SettingsAdministrator>ping 192.168.2.1Pinging 192.168.2.1 with 32 bytes of data:Reply from 192.168.2.1: bytes=32 time=8ms TTL=254Reply from 192.168.2.1: bytes=32 time=5ms TTL=254Reply from 192.168.2.1: bytes=32 time=4ms TTL=254Reply from 192.168.2.1: bytes=32 time=4ms TTL=254Ping statistics for 192.168.2.1:Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:Minimum = 4ms, Maximum = 8ms, Average = 5ms[温馨提醒:合同协议是经验性极强的领域,无法思考和涵盖全面,最好找专业律师起草或审核后使用。
GRE隧道协议GRE(Generic Routing Encapsulation,通用路由封装)是一种常用的隧道协议,它可以在Internet Protocol(IP)网络上封装其他协议的数据包,以实现数据包的路由和传输。
本文将介绍GRE隧道协议的基本原理、使用场景以及配置方法。
1. GRE隧道协议的基本原理GRE隧道协议是一种将其他协议的数据包封装在IP数据包中进行传输的技术。
它可以在源主机和目的主机之间创建一条逻辑连接,通过该连接传输封装后的数据包。
GRE隧道协议的基本原理如下:•GRE隧道协议使用封装(encapsulation)和解封装(decapsulation)的方式实现数据包的传输。
在源主机上,GRE隧道协议将要传输的数据包封装在一个GRE数据包中,并添加相应的头部信息。
然后,该GRE数据包会被封装在一个IP数据包中进行传输。
在目的主机上,GRE数据包会被解封装,恢复成原始的数据包,并将其传递给目标协议栈进行处理。
•GRE隧道协议的封装过程是通过在原始数据包前添加GRE头部信息实现的。
GRE头部包含了一系列字段,用于指示封装数据包的协议类型、源地址、目的地址等信息。
这些字段可以帮助目的主机正确地解封装数据包,并将其交给相应的协议栈进行处理。
•GRE隧道协议可以在IP网络上建立逻辑连接,使得源主机和目的主机之间可以进行数据包的传输。
这条逻辑连接可以是点对点的,也可以是多对多的。
在点对点连接中,只有两个主机之间的数据包可以通过GRE隧道进行传输。
而在多对多连接中,多个主机之间的数据包可以通过GRE隧道进行传输。
2. GRE隧道协议的使用场景GRE隧道协议在计算机网络中有着广泛的应用场景。
下面介绍几个常见的使用场景:•远程访问:GRE隧道协议可以用于远程访问,通过在公共网络上建立隧道连接,使得远程用户可以安全地访问内部网络资源。
远程用户的数据包会经过GRE隧道进行封装和传输,然后在目的网络上解封装,达到远程访问的目的。
Gre tunnel是提供点对点通信的一种方法。
<;!-- [if !mso]>; <;style>; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} <;/style>; <;![endif]-->;<;!-- [if !ppt]-->;<;!-- [endif]-->;gre tunnel :Linux1 和 Linux2 都有一个网卡,但是该网卡上都分别配置了两个 ip :Linux1 的 192.168.1.10 充当一个网关, 192.168.2.10 是本身的 ip 地址Linux2 的 192.168.4.10 充当一个网关, 192.168.3.10 是本身的 ip 地址Linux1 和 Linux2 能够通过 ip192.168.2.10 和 192.168.3.10 互相网络通信。
在 192.168.1.10 上:去往 192.168.4.x 的使用 gre tunnel 设备,经由 grentun 封装为从 192.168.2.10/32 去往 192.168.3.10/32在 192.168.4.10 上:去往 192.168.1.x 的使用 gre tunnel 设备,经由 grentun 封装为从 192.168.3.10/32 去往 192.168.2.10/32在 192.168.2.10 和 192.168.3.10 上会分别进行解封,然后路由。
配置过程,以 192.168.1.10 为例:iptunnel add netb (虚拟设备名) mode gre remote 192.168.3.10 local 192.168.2.10 ttl 255ip link set netb up (开启该虚拟设备)ipaddr add 192.168.1.10/24 dev netb (添加 ip 地址或网段地址到设备)iproute add 192.168.4.10/24 dev netb (添加路由)即从 192.168.1.10/24 去往 192.168.4.10/24 的,要使用这个虚拟设备 netb 。
GRE协议简介1. 协议简介gre(generic routing encapsulation,通⽤路由封装)协议是对某些⽹络层协议(如ip 和ipx)的数据报进⾏封装,使这些被封装的数据报能够在另⼀个⽹络层协议(如ip)中传输。
gre 是vpn(virtual private network)的第三层隧道协议,在协议层之间采⽤了⼀种被称之为tunnel(隧道)的技术。
tunnel 是⼀个虚拟的点对点的连接,在实际中可以看成仅⽀持点对点连接的虚拟接⼝,这个接⼝提供了⼀条通路使封装的数据报能够在这个通路上传输,并且在⼀个 tunnel 的两端分别对数据报进⾏封装及解封装。
⼀个报⽂要想在tunnel中传输,必须要经过加封装与解封装两个过程,下⾯以图3-1的⽹络为例说明这两个过程:(1) 加封装过程连接novell group1 的接⼝收到ipx 数据报后⾸先交由ipx 协议处理,ipx 协议检查ipx 报头中的⽬的地址域来确定如何路由此包。
若报⽂的⽬的地址被发现要路由经过⽹号为1f 的⽹络(tunnel 的虚拟⽹号),则将此报⽂发给⽹号为1f 的tunnel端⼝。
tunnel ⼝收到此包后进⾏gre 封装,封装完成后交给ip 模块处理,在封装ip 报⽂头后,根据此包的⽬的地址及路由表交由相应的⽹络接⼝处理。
(2) 解封装的过程解封装过程和加封装的过程相反。
从tunnel 接⼝收到的ip 报⽂,通过检查⽬的地址,当发现⽬的地就是此路由器时,系统剥掉此报⽂的ip 报头,交给gre 协议模块处理(进⾏检验密钥、检查校验和及报⽂的序列号等);gre 协议模块完成相应的处理后,剥掉gre 报头,再交由ipx 协议模块处理,ipx 协议模块象对待⼀般数据报⼀样对此数据报进⾏处理。
系统收到⼀个需要封装和路由的数据报,称之为净荷(payload),这个净荷⾸先被加上gre 封装,成为gre 报⽂;再被封装在ip 报⽂中,这样就可完全由ip 层负责此报⽂的向前传输(forwarded)。
实验拓扑:预备知识:通用路由封装(GenericRoutingEncapsulation,简称GRE)隧道按照通过IPv4网络传输数据的定义,GRE通过将需要传输的数据包封装在GRE数据包内,从而使一个网络协议能够通过另一个网络协议进行传输。
GRE 是通过隧道传输IPv6业务负载的一个理想机制。
实验说明:路由器ISP模拟运营商,分部R1要和总部R2通信,但是不想让Internet上的路由器学到其内网网络,所以在R1和R2之间做条隧道,总部和分部之间启用EIGRP路由协议。
实验过程:第一步:配置R1,ISP,R2的接口地址R1>enR1#conf tEnter configuration commands, one per line. End with CNTL/Z.R1(config)#no ip domai looR1(config)#line con 0R1(config-line)#no exec-tR1(config-line)#lo00:01:24: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/1, changed state to downgg synR1(config-line)#exiR1(config)#int s 1/1R1(config-if)#ip add 131.1.1.1 255.255.255.252R1(config-if)#no shR1(config-if)#int loo 0R1(config-if)#ip add 192.168.0.1 255.255.255.0R1(config-if)#endR1#sh ip i00:01:57: %SYS-5-CONFIG_I: Configured from console by consoleR1#sh ip int bInterface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES unset administratively down downSerial1/0 unassigned YES unset administratively down downSerial1/1 131.1.1.1 YES manual up down Serial1/2 unassigned YES unset administratively down downSerial1/3 unassigned YES unset administratively down downSerial2/0 unassigned YES unset administratively down downSerial2/1 unassigned YES unset administratively down downSerial2/2 unassigned YES unset administratively down downSerial2/3 unassigned YES unset administratively down downLoopback0 192.168.0.1 YES manual up up R1#ISP>enISP#conf tEnter configuration commands, one per line. End with CNTL/Z.ISP(config)#no ip domain looISP(config)#line con 0ISP(config-line)#no exec-tISP(config-line)#logg synISP(config-line)#exiISP(config)#int s 1/0ISP(config-if)#ip add 131.1.1.2 255.255.255.252ISP(config-if)#no shISP(config-if)#int s 1/1ISP(config-if)#i00:02:55: %LINK-3-UPDOWN: Interface Serial1/0, changed state to up 00:02:56: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to upISP(config-if)#ip add 131.1.1.5 255.255.255.252ISP(config-if)#no shISP(config-if)#endISP#sh ip in00:03:09: %SYS-5-CONFIG_I: Configured from console by consoleISP#sh ip int bInterface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES unset administratively down downSerial1/0 131.1.1.2 YES manual up up Serial1/1 131.1.1.5 YES manual up up Serial1/2 unassigned YES unset administratively down downSerial1/3 unassigned YES unset administratively down downSerial2/0 unassigned YES unset administratively down downSerial2/1 unassigned YES unset administratively down downSerial2/2 unassigned YES unset administratively down downSerial2/3 unassigned YES unset administratively down downISP#R2>enR2#conf tEnter configuration commands, one per line. End with CNTL/Z.R2(config)#no ip doma looR2(config)#line con 0R2(config-line)#no exec-tR2(config-line)#logg synR2(config-line)#exiR2(config)#int s 1/0R2(config-if)#ip add 131.1.1.6 255.255.255.252R2(config-if)#no shR2(config-if)#int loo 0R2(config-if)#ip add00:04:14: %LINK-3-UPDOWN: Interface Serial1/0, changed state to upR2(config-if)#ip add00:04:15: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to upR2(config-if)#ip add 192.168.1.1 255.255.255.0R2(config-if)#endR2#sh ip int00:04:24: %SYS-5-CONFIG_I: Configured from console by consolebR2#sh ip int bInterface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES unset administratively down downSerial1/0 131.1.1.6 YES manual up up Serial1/1 unassigned YES unset administratively downdownSerial1/2 unassigned YES unset administratively down downSerial1/3 unassigned YES unset administratively down downSerial2/0 unassigned YES unset administratively down downSerial2/1 unassigned YES unset administratively down downSerial2/2 unassigned YES unset administratively down downSerial2/3 unassigned YES unset administratively down downLoopback0 192.168.1.1 YES manual up up R2#第二步:测试直连连通性ISP#sh cdp neiCapability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - RepeaterDevice ID Local Intrfce Holdtme Capability Platform Port ID R2 Ser 1/1 155 R 7206VXR Ser 1/0R1 Ser 1/0 153 R 7206VXR Ser 1/1ISP#//邻居建立直连连通性正常第三步:配置GRE隧道R1#conf tEnter configuration commands, one per line. End with CNTL/Z.R1(config)#ip route 0.0.0.0 0.0.0.0 s 1/1//默认路由出接口应该指向物理接口R1(config)#int tuR1(config)#int tunnel 0R1(config-if)#ip add00:07:42: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to downR1(config-if)#ip add 172.16.0.1 255.255.255.0R1(config-if)#tuR1(config-if)#tunnel sour s 1/1R1(config-if)#tunR1(config-if)#tunnel desR1(config-if)#tunnel destination 131.1.1.6R1(config-if)#no shR1(config-if)#00:08:04: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to upR1(config-if)#endR1#sh run int tunnel 0Building configuration...Current configuration : 117 bytes!interface Tunnel0ip address 172.16.0.1 255.255.255.0tunnel source Serial1/1tunnel destination 131.1.1.6end//分部R1上的tunnel配置完成R2#conf tEnter configuration commands, one per line. End with CNTL/Z.R2(config)#ip route 0.0.0.0 0.0.0.0 s 1/0R2(config)#int tuR2(config)#int tunnel 0R2(config-if)#ip add 172.16.00:12:07: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to downR2(config-if)#ip add 172.16.0.2 255.255.255.0R2(config-if)#tunR2(config-if)#tunnel sou s1/0R2(config-if)#tunR2(config-if)#tunnel des 131.1.1.1R2(config-if)#no shR2(config-if)#00:12:40: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel0, changed state to upR2(config-if)#endR2#sh run int tunnel 0Building configuration...Current configuration : 117 bytes!interface Tunnel0ip address 172.16.0.2 255.255.255.0tunnel source Serial1/0tunnel destination 131.1.1.1endR1#sh ip rouCodes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGPD - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter areaN1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGPi - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2ia - IS-IS inter area, * - candidate default, U - per-user static routeo - ODR, P - periodic downloaded static routeGateway of last resort is 0.0.0.0 to network 0.0.0.0172.16.0.0/24 is subnetted, 1 subnetsC 172.16.0.0 is directly connected, Tunnel0131.1.0.0/30 is subnetted, 1 subnetsC 131.1.1.0 is directly connected, Serial1/1C 192.168.0.0/24 is directly connected, Loopback0S* 0.0.0.0/0 is directly connected, Serial1/1R1#ping 172.16.0.2Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 172.16.0.2, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 20/31/40 ms R1#//隧道直连连通性正常第四步:在R1和R2上启用路由协议R1#conf tEnter configuration commands, one per line. End with CNTL/Z.R1(config)#router eig 90R1(config-router)#no auR1(config-router)#net 192.168.0.0R1(config-router)#net 172.16.0.0R1(config-router)#endR1#R2#conf tEnter configuration commands, one per line. End with CNTL/Z.R2(config)#router eig 90R2(config-router)#no auR2(config-router)#net 172.16.0.0R2(config-router)#net 192.168.1.00:19:58: %DUAL-5-NBRCHANGE: IP-EIGRP 90: Neighbor 172.16.0.1 (Tunnel0) is up: new adjacencyR2(config-router)#net 192.168.1.1R2(config-router)#endR2#R1#sh ip rouCodes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGPD - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter areaN1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGPi - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2ia - IS-IS inter area, * - candidate default, U - per-user static routeo - ODR, P - periodic downloaded static routeGateway of last resort is 0.0.0.0 to network 0.0.0.0172.16.0.0/24 is subnetted, 1 subnetsC 172.16.0.0 is directly connected, Tunnel0131.1.0.0/30 is subnetted, 1 subnetsC 131.1.1.0 is directly connected, Serial1/1C 192.168.0.0/24 is directly connected, Loopback0D 192.168.1.0/24 [90/297372416] via 172.16.0.2, 00:00:21, Tunnel0//eigrp 通过Tunnle口学到到总部的路由S* 0.0.0.0/0 is directly connected, Serial1/1R1#sh ip eig neiIP-EIGRP neighbors for process 90H Address Interface Hold Uptime SRTT RTO Q Seq Type(sec) (ms) Cnt Num0 172.16.0.2Tu012 00:01:39 44 5000 0 3//EIGRP邻居建立ISP#sh ip rouCodes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGPD - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter areaN1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGPi - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2ia - IS-IS inter area, * - candidate default, U - per-user static routeo - ODR, P - periodic downloaded static routeGateway of last resort is not set131.1.0.0/30 is subnetted, 2 subnetsC 131.1.1.0 is directly connected, Serial1/0C 131.1.1.4 is directly connected, Serial1/1ISP#//Internet ISP路由器上只有公网路由,这样保证了安全。
GREtunnel与ipsec tunnelGRE: Generic Routing EncapsulationGRE tunnel是⽤于解决IPv6⽅案的⼀种,GRE通过通过重封装实现不同协议的通信。
但是GRE没有安全加密的特性,需要ipsec的帮助。
iipsec vpn的tunnel mode与gre over ipsec的区别psec tunnel mode是通过ipsec的加密技术对数据进⾏的隧道⽅式再封装,是在原有的ip数据包外⾯再加⼀层封装。
⽽后者是ipsec对已经经过gre封装的数据进⾏的传输模式的封装,通过修改现有ip数据包头部⽽⾮前者的再封装模式。
ipsec隧道不⽀持传输IPSEC Over GRE即IPSEC在⾥,GRE在外。
先把需要加密的数据包封装成IPSEC包,然后再扔到GRE隧道⾥。
作法是把IPSEC的加密图作⽤在Tunnel⼝上的,即在Tunnel⼝上监控(访问控制列表监控本地ip⽹段-源i和远端ip⽹段-⽬的地),是否有需要加密的数据流,有则先加密封装为IPSEC包,然后封装成GRE包进⼊隧道(这⾥显⽽易见的是,GRE隧道始终⽆论如何都是存在的,即GRE隧道的建⽴过程并没有被加密),同时,未在访问控制列表⾥的数据流将以不加密的状态直接⾛GRE隧道,即存在有些数据可能被不安全地传递的状况。
⽽GRE Over IPSEC是指,先把数据分装成GRE包,然后再分装成IPSEC包。
做法是在物理接⼝上监控,是否有需要加密的GRE流量(访问控制列表针对GRE两端的设备ip),所有的这两个端点的GRE数据流将被加密分装为IPSEC包再进⾏传递,这样保证的是所有的数据包都会被加密,包括隧道的建⽴和路由的建⽴和传递。
使⽤GRE的主要原因是VPN IPSec的局限性-不⽀持组播 (which is used by DHCP, DNS etc)-不⽀持除了IP以外的Routed ProtocolIPSec可以⽤三个词来形容-Powerful-Flexible-Limited-并⾮所有的VPN都像IPSec⼀样强⼤,早期的隧道技术主要是为了通过重封装实现让数据在不同的媒体上传递-任何不同的可路由协议⽣成的数据包都可以在GRE隧道上传递(IP/IPX/AppleTalk)-本质是插⼊⼀个包头,类似Dot1Q-对GRE⽽⾔,被他封装的是第四层的包,封装后有了新的IP包头,所以它本⾝是第三层的,但其实⾥⾯有两个IP包头-GRE包头只有4个字节,前两个是扩展包头,后两个字节表⽰payload类型是IP还是IPX等-默认情况下:No confidentiality, No authentication, No data integerity assurance, No compression-可以通过配置命令实现⼀个较为初级的⽤户认证-使⽤Keepalive来检测GRE隧道的状态-Optional Header包含:checksum,Key,Seq number,offset。
GRE (Generic Routing Encapsulation)GRE是一种最传统的隧道协议,其根本功能就是要实现隧道功能,通过隧道连接的两个远程网络就如同直连,GRE在两个远程网络之间模拟出直连链路,从而使网络间达到直连的效果,为此,GRE需要完成多次封装,总共有3次,换句话说,就是在GRE隧道中传输的数据包都有3个爆头,因为只谈IP协议,所以GRE中的IP数据包是一层套一层,总共有3个IP地址,GRE在实现隧道时,需要创建虚拟直连链路,GRE实现的虚拟链路可以认为是隧道,隧道是模拟链路,所以隧道两端也有IP地址,但隧道需要在公网中找到起点和重点,所以隧道的源和终点分别都以公网IP地址结尾,该链路是通过GRE协议来完成的,隧道传递数据包的过程分为3步:1、接收原始IP数据包当作乘客协议,原始数据包包头的IP地址为私有IP地址。
2、将原始IP数据包封装进GRE协议,GRE协议成为封装协议(Encapsulation Protocol),封装的包头IP地址为虚拟直连链路两端的IP地址。
3、将整个GRE数据包当作数据,在外层封装公网的IP包头,也就是隧道的起源和终点,从而路由到隧道终点。
GRE隧道中传输的数据包格式如下:;.注:1、其中公网IP包头部分也成为传输协议(Transport Protocol)2、GRE会在原始IP数据包之外,额外多封装24个字节或28个字节,具体视GRE模式而定。
下图为GRE传输数据过程:;.;. GRE要在远程路由器之间创建虚拟直连链路,也就是隧道(Tunnel),如果没有该隧道,GRE不能完成隧道功能,隧道是GRE最基本的功能,也是GRE所有功能;上图环境中,当上海分公司R2将数据包IP地址封装为192.168.1.4发往武汉时,GRE操作过程如下:1、假设R1与R3的GRE虚拟直连链路(隧道)已经简历,隧道链路两端的地址分别为1.1.1.1和1.1.1.2,隧道两端的起源和终点分别为202.1.1.1和61.1.1.1.2、R1收到目标IP为192.168.1.4的数据包后,将原始数据包当作乘客数据包封装进GRE协议中,并且添加GRE包头,包头中源IP 为隧道本端地址1.1.1.1,包头中目标IP为隧道对端地址1.1.1.2,从而完成GRE数据包的分装。
GRE隧道协议的动态路由与广域网互联实现随着网络的不断发展和进步,广域网(WAN)在现代企业中起着至关重要的作用。
为了实现多个广域网之间的互联,需要使用一种有效的协议来进行动态路由。
本文将探讨GRE(通用路由封装)隧道协议,并介绍如何利用该协议实现广域网的互联。
一、GRE隧道协议概述GRE隧道协议是一种网络协议,常用于在IP网络上封装其他协议。
它通过在IP头部添加额外的GRE头部,将原始IP包封装在GRE报文中进行传输。
使用GRE协议可以在现有网络基础上创建一个逻辑隧道,使得两个非直接相连的网络可以进行通信。
在GRE隧道中,隧道两端的设备被称为源端和目的端。
源端将原始IP包封装在GRE报文中,并在IP头部中指定目的端的IP地址。
目的端接收GRE报文后,解析原始IP包并将其传递到本地网络。
二、GRE隧道协议的动态路由实现动态路由是一种通过协议交换路由信息并决定最佳路径的方式。
GRE隧道协议可以与动态路由协议结合使用,实现网络中各个节点之间的路由动态调整。
常见的动态路由协议包括BGP(边界网关协议)、OSPF(开放最短路径优先)和EIGRP(增强内部网关路由协议)。
这些协议可以借助GRE隧道来建立动态路由,以实现广域网的互联。
在GRE隧道中,源端和目的端需要配置动态路由协议来交换路由信息。
源端的路由器可以利用动态路由协议将目的端所在网络的路由信息传递给目的端,使得目的端能够正确地转发流量。
三、GRE隧道协议的广域网互联实现GRE隧道协议广泛应用于广域网互联的场景。
通过GRE隧道,不同地理位置的广域网可以通过互联网实现互通。
下面将介绍GRE隧道协议在广域网互联中的实现步骤:1. 配置隧道接口:在源端和目的端的路由器上配置GRE隧道接口,指定隧道两端的IP地址,并激活该接口。
2. 配置动态路由协议:在源端和目的端的路由器上配置动态路由协议,例如OSPF或EIGRP。
确保两端的路由器能够交换路由信息。
3. 配置隧道路由:在源端的路由器上配置隧道路由,将需要传输的目的端网络与隧道接口进行关联。