移动端

TG-NT四步教您学会GRE隧道技术

2015年06月18日 16:48$artinfo.Reprint点击量:1669

  隧道技术概述:
  
  一种技术(协议)或者策略的两个或多个子网穿过另一种技术(协议)或者策略的网络实现互联,称之为overlay topology,这一技术是电信技术的永恒主题之一。
  
  电信技术在发展,多种网络技术并存,一种技术的网络孤岛可能需要穿过另一种技术的网络实现互联,这种情况如果发生在高层协议的PDU封装于低层协议PDU中时通常称之为复用,特别地三层PDU穿过二层网络地技术称为租用链路或虚电路;而如果穿越发生在一种协议PDU封装在同一层协议的PDU中,或者封装在高层协议的PDU中时,人们通常称之为隧道。
  
  隧道提供了一种某一特定网络技术的PDU穿过不具备该技术转发能力的网络的手段,如组播数据包穿过不支持组播的网络;另一种情况是有时因为管理策略的原因,一个管理者(策略)的子网不能通过和另一个管理者(策略)的网络互联而连接,而是要穿过另一个管理者(策略)的网络实现连接,这就是所谓的VPN(VirtualP rivate Networks),不管是L2VPN还是L3VPN都需要利用隧道技术实现。因此隧道某种意义上可以概括为穿越不同的网络的技术,不同既可以是技术方面的,也可以是管理策略方面的。
  
  隧道可以作为一个虚拟接口来实现。隧道接口并不特定的“乘客”或“传输”协议连接,而是一种结构,可以实现任何标准点到点封装的服务。由于隧道是点到点连接,因此对每个连接必须配置一个单独的隧道。
  
  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数据包的格式如下:

  
  ----GRE在包头中包含了协议类型,这用于标明乘客协议的类型;校验和包括了GRE的包头和完整的乘客协议与数据;密钥用于接收端验证接收的数据;序列号用于接收端数据包的排序和差错控制;路由用于本数据包的路由。
  
  ----GRE只提供了数据包的封装,它并没有加密功能来防止网络侦听和攻击。所以在实际环境中它常和IPsec在一起使用,由IPsec提供用户数据的加密,从而给用户提供更好的安全性。
  
  GRE协议的主要用途有两个:企业内部协议封装和私有地址封装。在国内,由于企业网几乎全部采用的是TCP/IP协议,因此在中国建立隧道时没有对企业内部协议封装的市场需求。企业使用GRE的*理由应该是对内部地址的封装。当运营商向多个用户提供这种方式的VPN业务时会存在地址冲突的可能性。
  
  路由封装(GRE)zui早是由Cisco提出的,而目前它已经成为了一种标准,被定义在RFC1701,RFC1702,以及RFC2784中。简单来说,GRE就是一种隧道协议,用来从一个网络向另一个网络传输数据包。
  
  如果你觉得它和虚拟网(VPN)有些类似,那只是因为:从技术上讲,GRE隧道是某一类型的VPN,但是并不是一个安全隧道方式。不过你也可以使用某种加密协议对GRE隧道进行加密,比如VPN网络中常用的IPSec协议。
  
  实际上,点到点隧道协议(PPTP)就是使用了GRE来创建VPN隧道。比如,如果你要创建MicrosoftVPN隧道,默认情况下会使用PPTP,这时就会用到GRE。
  
  为什么要用GRE?
  
  为什么要使用GRE进行隧道传输呢?原因如下:
  
  有时你需要加密的多播传输。GRE隧道可以像真实的网络接口那样传递多播数据包,而单独使用IPSec,则无法对多播传输进行加密。多播传输的例子包括OSPF,EIGRP,以及R*2。另外,大量的视频、VoIP以及音乐流程序使用多播。
  
  你所采用的某种协议无法进行路由,比如NetBIOS或在IP网络上进行非IP传输。比如,你可以在IP网络中使用GRE支持IPX或AppleTalk协议。
  
  你需要用一个IP地址不同的网络将另外两个类似的网络连接起来。
  
  如何配置GRE隧道?
  
  在Cisco路由器上配置GRE隧道是一个简单的工作,只需要输入几行命令即可实现。以下是一个简单的例子。
  
  路由器A:
  
  interface Ethernet0/1
  
  ipaddress10.2.2.1255.255.255.0
  
  interface Serial0/0
  
  ipaddress192.168.4.1255.255.255.0
  
  interface Tunnel0
  
  ipaddress1.1.1.2255.255.255.0
  
  tunnelsource Serial0/0
  
  tunneldestination192.168.4.2
  
  路由器B:
  
  interface Fast Ethernet0/1
  
  ipaddress10.1.1.1255.255.255.0
  
  interface Serial0/0
  
  ipaddress192.168.4.2255.255.255.0
  
  interface Tunnel0
  
  ipaddress1.1.1.1255.255.255.0
  
  tunnelsource Serial0/0
  
  tunneldestination192.168.4.1
  
  在这个例子中,两个路由器均拥有虚拟接口,即隧道接口。这一接口属于各自的网络,就好像一个点到点的T1环路。跨越隧道网络的数据采用串行网络方式传输。
  
  对于每个路由器都有两种途径将数据传递到另一端,即通过串行接口以及通过隧道接口(通过隧道传递数据)。该隧道可以传输非路由协议的数据,如NetBIOS或AppleTalk。如果数据需要通过互联网,你可以使用IPSec对其进行加密。
  
  从下面的信息反馈可以看出,路由器B上的隧道接口和其他网络接口没有什么不同:

  
  解决GRE隧道的问题:
  
  由于GRE是将一个数据包封装到另一个数据包中,因此你可能会遇到GRE的数据报大于网络接口所设定的数据包zui大尺寸的情况。解决这种问题的方法是在隧道接口上配置iptcpadjust-mss1436。另外,虽然GRE并不支持加密,但是你可以通过tunnelkey命令在隧道的两头各设置一个密钥。这个密钥其实就是一个明文的密码。由于GRE隧道没有状态控制,可能隧道的一端已经关闭,而另一端仍然开启。这一问题的解决方案就是在隧道两端开启keepalive数据包。它可以让隧道一端定时向另一端发送keepalive数据,确认端口保持开启状态。如果隧道的某一端没有按时收到keepalive数据,那么这一侧的隧道端口也会关闭。
版权与免责声明: 凡本网注明“来源:智慧城市网”的所有作品,均为浙江兴旺宝明通网络有限公司-智慧城市网合法拥有版权或有权使用的作品,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:智慧城市网www.afzhan.com”。违反上述声明者,本网将追究其相关法律责任。

本网转载并注明自其它来源(非智慧城市网www.afzhan.com)的作品,目的在于传递更多信息,并不代表本网赞同其观点或和对其真实性负责,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品第一来源,并自负版权等法律责任。

编辑精选

更多

本站精选

更多

专题推荐

更多

名企推荐

更多

浙公网安备 33010602000006号