通用路由封装(GRE)最初由Cisco开发,现在是一个RFC 1701、RFC 1702和RFC 2784定义的标准。GRE是一个在网络之间传输数据包的通道协议。
假如对你而言它听起来像一个虚拟专用网络(VPN),这是因为理论上确实是这样:技术上,GRE是一种VPN,但它并不是一种安全的通道方法。不过,你可以用IPSec这样的加密方法对GRE进行加密,构建一个安全的VPN。
实际上,点对点通道协议(PPTP)就使用GRE来建立VPN通道。例如,假如你应用微软VPN通道,在默认情况下,你使用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数据包,两端的通道就会关闭。
欲了解更多信息,请查阅Cisco通用路由封装(GRE)资源列表。
进入讨论组讨论。