一个子网中有两条 GRE 隧道

网络工程 隧道 格雷
2021-08-04 18:06:20

在此处输入图片说明 http://www.firewall.cx/cisco-technical-knowledgebase/cisco-routers/868-cisco-router-gre-ipsec.html

在上面的例子中,R1:

R1(config)# interface Tunnel0
R1(config-if)# ip address 172.16.0.1 255.255.255.0
R1(config-if)# tunnel source 1.1.1.10
R1(config-if)# tunnel destination 2.2.2.10

和 R2:

R2(config)# interface Tunnel0
R2(config-if)# ip address 172.16.0.2 255.255.255.0
R2(config-if)# tunnel source 2.2.2.10
R2(config-if)# tunnel destination 1.1.1.10

当带有 dst IP172.16.0.2地址的数据包到达 R1 时,R1 如何知道将它发送到哪里?它检查它的路由表并知道它172.16.0.2是直接连接的吗?无论如何,它会2.2.2.10向该数据包添加新的 IP 标头(dst IP 设置为-tunnel 目标)和 GRE 标头。

当 R2 收到数据包时,它知道该数据包的地址是其2.2.2.10 FE0/1接口,并且它与在 R2 上设置的隧道源 IP 地址相匹配。因此,它删除了外部 IP 和 GRE 标头,将数据包与 dst IP 保留在一起172.16.0.2并将其转发(当然不是在这种情况下,但如果 dst IP 不同,则会如此)。

假设有另一个路由器 - R3。是否可以使用同一网络在 R1 和 R3 之间建立隧道172.16.0.0/24

当 R1 ping R2 - 的隧道接口时172.16.0.2,它如何知道如何将其发送到那里?它可能会检查他自己的 Tunnel0 配置:哦,我应该将它发送到172.16.0.2,它与我的 Tunnel0 接口在同一子网中172.16.0.1然后它检查tunnel destination地址以了解它的2.2.2.10. 换句话说,它不能直接 ARP,172.16.0.2因为它不是物理连接。

假设我添加了带有 Tunnel1 接口172.16.0.4/24R3,其公共 IP 为3.3.3.10. 接下来我在 R1 上配置 Tunnel1:

R1(config)# interface Tunnel1
R1(config-if)# ip address 172.16.0.3 255.255.255.0
R1(config-if)# tunnel source 1.1.1.10
R1(config-if)# tunnel destination 3.3.3.10

从 R1 ping 172.16.0.2 可能不起作用,因为现在我在 R1 上有两条隧道使用相同的子网(R1-R2 和 R1-R3)。R1 不知道我在这里指的是哪个隧道,因此它不知道隧道目的地。


TLDR 这是否意味着我们需要为每个隧道使用不同的子网?如果是这样,不是所有的隧道子网都应该是 /30 吗?我们只需要两个 IP 用于隧道 - 源和目标。

1个回答

“普通”GRE 隧道用作点对点连接。/30(甚至 /31)可以更好地利用您的子网空间。也存在多点GRE隧道,例如DMVPN。在这里,您可以将多个隧道端点连接到一个隧道接口。在这种情况下,您将需要更大的子网。