Невозможно удалить GRE Tunnel

15

Я настраиваю туннель GRE в Linux 2.6.26, и я столкнулся с очень странной проблемой, для которой я не смог найти никакого решения.

Я создал вызываемый туннель 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хранятся такие постоянные данные (в данном случае информация , но это относится к любой другой настройке, о которой я даже не подозреваю)?

Если нужна какая-либо другая информация, пожалуйста, дайте мне знать.

Большое спасибо за любую помощь.

alecov
источник

Ответы:

2

gre0Туннельный интерфейс назван интефейсом и имеет особое значение. Он создается ip_greмодулем ядра при инициализации модуля. Вы не можете отключить эту функцию.

Когда хост получает пакеты gre, для которых не найден подходящий туннельный интерфейс, этот резервный интерфейс будет использоваться. К сожалению, это действительно недокументированная функция. Только в исходном коде это описано.

Та же логика используется для других типов туннелирования.

Таким образом, вы не можете удалить его полностью без потери других туннелей. Но вы можете переименовать его с помощью команды ip link set dev gre0 name gre_fallback. И тогда вы можете создать другой туннель gre с gre0именем.

Антон Данилов
источник
Через восемь лет появляется правильный ответ. Благодарность!
Алецов
23

Я считаю, что я нашел ответ на эту проблему.

Немного повозившись, я решил воспроизвести проблему в чистой установке.

ip_greМодуль не установлен по умолчанию в ядре после установки Debian. ip tunnel showне отображает туннель После вставки ip_greмодуля, но без создания какого-либо туннеля, он gre0появляется и не подлежит восстановлению и не может быть изменен, как ожидалось. Таким образом, gre0кажется, что фиктивный туннель создан ip_greмодулем по умолчанию .

Огорчает то, что эта «особенность» полностью недокументирована и даже является неожиданной, поскольку может быть естественным попытаться создать gre0туннель в качестве первого (и единственного) GRE-туннеля в системе.

alecov
источник
7
Это также верно для tunl0 и sit0.
Оливер Твист
И, для tunl0, это ipipвместо этого.
i336_
0

Вы должны убедиться, что модуль gre полностью удален. Бегать

sudo lsmod | grep gre

проверить, есть ли модуль в списке. Если это так, запустите

sudo rmmod ip_gre
sudo rmmod gre

удалить их из ядра.

Тони
источник