GRE的主要作用是什么?


通用路由封装(GRE)最初由Cisco开发,现在是一个RFC 1701、RFC 1702和RFC 2784定义的标准。GRE是一个在网络之间传输数据包的通道协议。

  如果对你而言它听起来像一个虚拟专用网络(×××),这是因为理论上确实是这样:技术上,GRE是一种×××,但它并不是一种安全的通道方法。不过,你可以用IPSec这样的加密方法对GRE进行加密,构建一个安全的×××。

  实际上,点对点通道协议(PPTP)就使用GRE来建立×××通道。例如,如果你应用微软×××通道,在默认情况下,你使用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

  InterfaceIP-AddressOK?MethodStatusProtocol

  Ethernet010.1.1.1YESmanualupdown

  Serial0192.168.4.2YESmanualupup

  Serial1unassignedYESunsetadministratively downdown

  Tunnel01.1.1.1YESmanual upup

  RouterB#

  GRE通道故障修复

  由于GRE把一个数据包封装到另一个数据包中,因此你可能会遇到以下情形:你发送的数据包超出你的接口所允许的大小。在通道接口上配置ip tcp adjust-mss 1436,就可以解决这个问题。

  虽然GRE不提供加密功能,但你可以使用tunnel key命令在通道的两端激活一个密钥,它就像一个没有加密的简单明文密码。

  因为GRE通道没有状态,那么可能出现这样的情况:通道的一端关闭,而另一端仍然开放。在解决这个问题,可以在通道的两端启动keepalive数据包。这样设置后,通道的两端定期向另一端发送一个keepalive数据包。如果一端没有在指定的时间收到keepalive数据包,两端的通道就会关闭。