无法删除GRE隧道


15

我正在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

我可以毫无问题地创建,更改和删除其他隧道,但是gre0即使我重新启动或关闭接口,它也可以一直存在并且不会消失。

如果卸下ip_gre模块,则隧道消失。再次插入模块后,gre0再次出现,问题继续。

我有两个问题:

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

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

非常感谢您的帮助。

Answers:


2

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

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

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

因此,您不能完全删除它,而不会丢失其他gre隧道。但是您可以使用command重命名ip link set dev gre0 name gre_fallback。然后,您可以使用gre0名称创建另一个gre隧道。


八年后,出现正确答案。谢谢!
alecov

23

我相信我已经找到了解决这个问题的方法。

修补了一段时间后,我决定在干净的安装中重现此问题。

ip_gre模块是不是默认安装Debian后内核插入。ip tunnel show不显示任何隧道。插入ip_gre模块后,但未创建任何隧道,该模块gre0出现并且不可删除,并且无法按预期进行更改。因此,gre0似乎是ip_gre模块默认创建的虚拟隧道。

令人沮丧的是,此“功能”是完全没有文档记载的,甚至是出乎意料的,因为尝试将gre0隧道创建为系统中的第一个(也是唯一的)GRE隧道很自然。


7
对于tunl0和sit0也是如此。
Oliver Twist

而且,对于tunl0,它是ipip
i336_

0

您需要验证gre模块是否已完全删除。跑

sudo lsmod | grep gre

检查模块是否在列表中。如果是,请运行

sudo rmmod ip_gre
sudo rmmod gre

从内核中删除它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.