无法删除 GRE 隧道

ale*_*cov 16 linux tunneling gre

我正在 Linux 2.6.26 中配置 GRE 隧道,但我遇到了一个非常奇怪的问题,我找不到任何解决方案。

我创建了一个名为 的 GRE 隧道gre0,但无论我做什么,我都无法删除这条隧道。命令ip tunnel del gre0失败并返回响应ioctl: Operation not permitted。任何更改隧道地址的尝试也会失败。

以下命令说明了问题:

# ip tunnel del gre0
ioctl: Operation not permitted
# ip tunnel change gre0
# ip tunnel change gre0 remote <some address> local <some address>
ioctl: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我可以毫无问题地创建、更改和删除其他隧道,但gre0只是停留在那里并且不会消失,即使我重新启动或关闭接口。

如果我移除ip_gre模块,隧道就会消失。一旦我再次插入模块,就会gre0再次出现并且问题仍然存在。

我有两个问题:

  1. 我该怎么做才能摆脱这个讨厌的隧道?我怀疑这可能是内核或模块错误。
  2. 这种持久性数据(在这种情况下, 的信息gre0,但这适用于我什至可能不知道的任何其他设置)存储在哪里?

如果需要任何其他信息,请告诉我。

非常感谢您的帮助。

ale*_*cov 25

我相信我已经找到了这个问题的答案。

经过一段时间的修补,我决定在全新安装中重现该问题。

ip_gre安装 Debian 后,该模块默认不会插入到内核中。ip tunnel show不显示任何隧道。插入ip_gre模块后,但没有创建任何隧道,gre0出现并且如预期的那样不可删除和不可更改。因此gre0似乎是ip_gre模块默认创建的虚拟隧道。

令人沮丧的是,这个“功能”完全没有记录,甚至是一个意想不到的功能,因为尝试创建一个gre0隧道作为系统中第一个(也是唯一一个)GRE 隧道可能是很自然的。

  • 对于 tunl0 和 sat0 也是如此。 (7认同)

Ant*_*lov 6

gre0隧道接口被命名为备用接口,并具有特殊的意义。它是由ip_gre内核模块在模块初始化时创建的。您无法禁用此功能。

当主机收到未找到合适隧道接口的 gre 数据包时,将使用此回退接口。不幸的是,它确实是未记录的功能。仅在源代码中对此进行了描述。

相同的逻辑用于其他类型的隧道。

所以你不能在不丢失其他 gre 隧道的情况下完全删除它。但是你可以用 command 重命名它ip link set dev gre0 name gre_fallback。然后您可以创建另一个具有gre0名称的gre 隧道。

  • 八年后,正确答案出现。谢谢! (2认同)