web-dev-qa-db-fra.com

Ne peut pas supprimer le tunnel GRE

Je configure un tunnel GRE sous Linux 2.6.26 et je suis confronté à un problème très étrange pour lequel je ne pouvais trouver aucune solution.

J'ai créé un tunnel GRE appelé gre0, mais peu importe ce que je fais, 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, changer et supprimer d'autres tunnels sans aucun problème, mais gre0 Il suffit de rester là et ne s'en va pas, même si je redémarre ou prenez les interfaces vers le bas.

Si je supprime le ip_gre Module, le tunnel disparaît. Dès que j'insérer le module à nouveau, gre0 réapparaît et le problème continue.

J'ai deux questions:

  1. Que puis-je faire pour vous débarrasser de ce tunnel pagesky? Je soupçonne que cela pourrait être un noyau ou un bug de module.
  2. Lorsque de telles données persistantes (dans ce cas, les informations pour gre0, mais cela s'applique à toute autre configuration que je pourrais être même inconsciente) est stockée?

Si une autre information est nécessaire, merci de me le faire savoir.

Merci beaucoup pour toute aide.

15
alecov

Les gre0 Interface tunnel est nommé comme l'interface de secours et a une signification particulière. Il est créé par ip_gre Module 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 tunnel approprié est introuvable, cette interface spécifique sera utilisé. Malheureusement, il est vraiment caractéristique non documentée. Seulement en le code source ceci est décrit.

Même logique est utilisée pour d'autres types de tunnels.

Donc, vous ne pouvez pas 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 vous pouvez alors créer l'autre tunnel gre avec gre0 Nom.

3
Anton Danilov

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

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

Les ip_gre Module n'est pas inséré par défaut dans le noyau après avoir installé Debian. ip tunnel show n'affiche aucun tunnel. Après avoir inséré le ip_gre module, mais sans créer de tunnel, gre0 apparaît et est indocile et inchangé comme prévu. Ainsi gre0 semble être un tunnel factice créé par défaut par le ip_gre module.

La partie frustrante est que cette "caractéristique" est totalement non documentée et est même une inattendue, car elle pourrait être naturelle de tenter de créer un gre0 tunnel comme premier (et seulement) tunnel GRE dans un système.

23
alecov

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, courez

Sudo rmmod ip_gre
Sudo rmmod gre

pour les supprimer du noyau.

0
Tony