GRE

Generic Routing Encapsulation (GRE) 是一种隧道协议,用于在 IP 之上封装各种网络协议,在 RouterOS 中实现为虚拟接口,并提供可选的 keepalive 以及 MTU、MSS 钳制、DSCP 设置等属性,以实现可靠的流量转发。

GRE

Generic Routing Encapsulation (GRE) 是一种隧道协议,最初由 Cisco 开发,用于在 IP 网络上封装各种网络层协议。它在隧道端点之间创建虚拟点对点链路,允许不同的协议流量通过路由式基础设施传输。

GRE 作为无状态隧道运行,其行为与 IPIP 和 EoIP 类似。由于端点之间不维护会话状态,即使远端变得不可达,流量仍会继续被转发到该远端。这可能导致流量被黑洞,直到路由重新收敛或隧道状态发生变化。

在 RouterOS 中,GRE 接口实现为虚拟接口,可根据所需的拓扑用于路由式和桥接式网络设计。

为了改进故障检测,RouterOS 为 GRE 隧道提供了可选的 keepalive 机制。Keepalive 监控远端端点的可达性,并在对端停止响应时自动禁用隧道接口,从而降低流量被发送到非活动隧道的风险。

提示

GRE 隧道会额外增加 24 字节的开销(4 字节 GRE 头 + 20 字节 IP 头)。GRE 隧道只能转发 IP 和 IPv6 数据包(EtherType 0x0800 和 0x86DD)。当 GRE 隧道被用作路由网关时,不要使用 "Check gateway" 选项中的 "arp"。 GRE 在 /interface/gre 和 /interface/gre6 菜单中配置。

配置示例

此示例的目标是通过互联网在两个远程站点之间获得三层连接。

该示例使用两个站点:Site1 的本地网络范围为 10.1.101.0/24,Site2 的本地网络范围为 10.1.202.0/24。

第一步是创建 GRE 隧道。站点 1 上的路由器:

/interface/gre/add name=myGre remote-address=192.168.90.1 local-address=192.168.80.1

站点 2 上的路由器:

/interface/gre/add name=myGre remote-address=192.168.80.1 local-address=192.168.90.1

警告

在此示例中未配置 keepalive,因此即使远端隧道端点不可达,隧道接口也会带有 running 标志。 现在,设置隧道地址和正确的路由。站点 1 上的路由器:

/ip/address/add address=172.16.1.1/30 interface=myGre
/ip/route/add dst-address=10.1.202.0/24 gateway=172.16.1.2

站点 2 上的路由器:

/ip/address/add address=172.16.1.2/30 interface=myGre
/ip/route/add dst-address=10.1.101.0/24 gateway=172.16.1.1

此时,两个站点已通过 GRE 隧道获得三层连接。