Cisco GRE 路由语义到 ip_gre

Cisco GRE 路由语义到 ip_gre

我正在阅读有关设置 GRE IP 隧道的这篇文章:https://packetpushers.net/anatomy-of-gre-tunnels/

其中有一节介绍在路由器 A 上创建 GRE 隧道接口

R1:
interface Tunnel100
tunnel mode gre
ip address 102.1.1.1 255.255.255.0
ipv6 enable                     
tunnel source Loopback0           
tunnel destination 2.2.2.2

我没有 Cisco 路由器,但我尝试在 Debian 机器上创建类似的 GRE 隧道。在典型的 ip_gre 隧道设置中,隧道源/隧道目标映射到什么。

ip tunnel add Tunnel100 mode gre remote 2.2.2.2 local [?] ttl 64
ip addr add 102.1.1.1/24 dev Tunnel100
ip link set gre0 up

我的上述 ip_gre 设置配置正确吗?

一旦 gre 隧道启动,我是否应该能够从 102.1.1.1/24 IP 地址范围 ping 到 2.2.2.2 网络后面的主机?

答案1

IP 隧道主要是点对点,因此它们无法发送或接收广播流量(存在更复杂的技术,但目前我们先不讨论它们)。

所以不,你的设置不正确:你需要配置远程地址对于隧道也是如此。是的,掩码可以是任何你能想到的,但实际上它仍然是 /32 - 所有其他掩码只会混淆你的路由堆栈,并且大多数情况下,只有当掩码不干扰此接口上的实际 /32 时,事情才会起作用。对于 Cisco IOS,由于遗留问题,通常有 /30 或 /31 掩码。

后者意味着您必须为接口分配单独的网络前缀,否则您将无法访问隧道远程后面的网络。

那 2.2.2.2 的问题呢——它的形式让我认为你混淆了隧道的地址。外部地址仅用于确保数据包将通过网络路由,否则将被丢弃。例如,ip dst 为 192.168.0.1 的数据包无法通过 WAN,这就是为什么为了通过 WAN 连接网络 192.168.0.0/24 和 192.168.1.0/24,可以使用来自公共空间的外部 IP 地址创建隧道。ip tunnel add通常包含(公共)地址,并ip addr add包含当然,如果两对都是私密的,这种方法就会奏效,但这种设置并不直观。

相关内容