GRE-Tunnel kann nicht gelöscht werden

15

Ich konfiguriere einen GRE-Tunnel in Linux 2.6.26 und habe ein sehr seltsames Problem festgestellt, für das ich keine Lösung finden konnte.

Ich habe einen GRE-Tunnel mit dem Namen erstellt gre0, aber egal, was ich mache, ich kann diesen Tunnel einfach nicht löschen. Der Befehl ip tunnel del gre0schlägt mit der Antwort fehl ioctl: Operation not permitted. Jeder Versuch, die Adressen des Tunnels zu ändern, schlägt ebenfalls fehl.

Die folgenden Befehle veranschaulichen das Problem:

# 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

Ich kann problemlos andere Tunnel erstellen, ändern und löschen, bleibe aber gre0dabei und gehe nicht verloren, auch wenn ich neu starte oder die Schnittstellen herunterfahre.

Wenn ich das ip_greModul entferne , verschwindet der Tunnel. Sobald ich das Modul wieder einsetze, gre0erscheint es wieder und das Problem geht weiter.

Ich habe zwei Fragen:

  1. Was kann ich tun, um diesen lästigen Tunnel loszuwerden? Ich vermute, dass dies ein Kernel- oder ein Modulfehler sein könnte.
  2. Wo werden solche persistenten Daten (in diesem Fall die Informationen für gre0, dies gilt jedoch für jedes andere Setup, von dem ich möglicherweise überhaupt nichts weiß) gespeichert?

Wenn weitere Informationen benötigt werden, lassen Sie es mich bitte wissen.

Vielen Dank für jede Hilfe.

Alecov
quelle

Antworten:

2

Die gre0Tunnelschnittstelle wird als Fallback-Schnittstelle bezeichnet und hat eine besondere Bedeutung. Es wird vom ip_greKernel-Modul bei der Initialisierung des Moduls erstellt. Sie können diese Funktion nicht deaktivieren.

Wenn der Host Gre-Pakete empfängt, für die die passende Tunnelschnittstelle nicht gefunden wurde, wird diese Fallback-Schnittstelle verwendet. Leider ist es wirklich undokumentiert. Nur im Quellcode wird dies beschrieben.

Dieselbe Logik wird für andere Arten des Tunnelns verwendet.

Sie können es also nicht vollständig entfernen, ohne andere Tunnel zu verlieren. Aber Sie können es mit Befehl umbenennen ip link set dev gre0 name gre_fallback. Und dann können Sie den anderen gre-Tunnel mit gre0Namen erstellen .

Anton Danilov
quelle
Nach acht Jahren erscheint die richtige Antwort. Vielen Dank!
Alecov
23

Ich glaube, ich habe eine Antwort auf dieses Problem gefunden.

Nachdem ich eine Weile gebastelt hatte, beschloss ich, das Problem in einer sauberen Installation zu reproduzieren.

Das ip_greModul wird nach der Installation von Debian nicht standardmäßig in den Kernel eingefügt. ip tunnel showzeigt keinen Tunnel an. Nach dem Einsetzen des ip_greModuls, ohne jedoch einen Tunnel zu erstellen, wird gre0angezeigt und ist erwartungsgemäß nicht löschbar und unveränderbar. Es gre0scheint sich also um einen Dummy-Tunnel zu handeln, der standardmäßig vom ip_greModul erstellt wird.

Der frustrierende Teil ist, dass dieses „Feature“ völlig undokumentiert und sogar unerwartet ist, da es natürlich sein könnte, einen gre0Tunnel als ersten (und einzigen) GRE-Tunnel in einem System zu erstellen .

Alecov
quelle
7
Dies gilt auch für tunl0 und sit0.
Oliver Twist
Und für tunl0, es ist ipipstatt.
i336_
0

Sie müssen sicherstellen, dass das gre-Modul vollständig entfernt wurde. Lauf

sudo lsmod | grep gre

um zu überprüfen, ob das Modul in der Liste enthalten ist. Wenn ja, lauf

sudo rmmod ip_gre
sudo rmmod gre

um sie aus dem Kernel zu entfernen.

Tony
quelle