Impossible de supprimer le tunnel GRE

15

Je configure un tunnel GRE sous Linux 2.6.26 et j'ai été confronté à un problème très étrange pour lequel je n'ai trouvé aucune solution.

J'ai créé un tunnel GRE appelé gre0, mais quoi que je fasse, je suis tout simplement incapable de supprimer ce tunnel. La commande ip tunnel del gre0échoue avec la réponse ioctl: Operation not permitted. Toute tentative de modification des adresses du tunnel échoue également.

Les commandes suivantes illustrent le problème:

# 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

Je peux créer, modifier et supprimer d'autres tunnels sans aucun problème, mais gre0reste simplement là et ne disparaît pas, même si je redémarre ou supprime les interfaces.

Si je retire le ip_gremodule, le tunnel disparaît. Dès que j'insère à nouveau le module, gre0réapparaît et le problème persiste.

J'ai deux questions:

  1. Que puis-je faire pour me débarrasser de ce tunnel embêtant? Je soupçonne que cela pourrait être un noyau ou un bug de module.
  2. Où ces données persistantes (dans ce cas, les informations pour gre0, mais cela s'applique à toute autre configuration dont je ne suis même pas au courant) sont stockées?

Si vous avez besoin d'autres informations, veuillez me le faire savoir.

Merci beaucoup pour toute aide.

alecov
la source

Réponses:

2

L' gre0interface de tunnel est nommée interface de secours et a une signification particulière. Il est créé par le ip_gremodule du noyau lors de l'initialisation du module. Vous ne pouvez pas désactiver cette fonction.

Lorsque l'hôte reçoit des paquets gre pour lesquels l'interface de tunnel appropriée n'est pas trouvée, cette interface de secours sera utilisée. Malheureusement, c'est vraiment une fonctionnalité non documentée. Ce n'est décrit que dans le code source .

La même logique est utilisée pour d'autres types de tunnellisation.

Vous ne pouvez donc pas le supprimer complètement sans perdre d'autres tunnels gre. Mais vous pouvez le renommer avec la commande ip link set dev gre0 name gre_fallback. Et puis vous pouvez créer l'autre tunnel gre avec un gre0nom.

Anton Danilov
la source
Après huit ans, la bonne réponse apparaît. Merci!
alecov
23

Je crois que je me suis trouvé une réponse à ce problème.

Après avoir bricolé pendant un moment, j'ai décidé de reproduire le problème dans une installation propre.

Le ip_gremodule n'est pas inséré par défaut dans le noyau après l'installation de Debian. ip tunnel shown'affiche aucun tunnel. Après avoir inséré le ip_gremodule, mais sans créer de tunnel, gre0apparaît et est non supprimable et immuable comme prévu. Il gre0semble donc que ce soit un faux tunnel créé par défaut par le ip_gremodule.

La partie frustrante est que cette «fonctionnalité» est totalement non documentée, et même inattendue, car il pourrait être naturel de tenter de créer un gre0tunnel comme premier (et seul) tunnel GRE dans un système.

alecov
la source
7
Cela est également vrai pour tunl0 et sit0.
Oliver Twist du
Et, pour tunl0, c'est à la ipipplace.
i336_
0

Vous devez vérifier que le module gre est complètement supprimé. Courir

sudo lsmod | grep gre

pour vérifier si le module est dans la liste. Si c'est le cas, exécutez

sudo rmmod ip_gre
sudo rmmod gre

pour les supprimer du noyau.

Tony
la source