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


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, але це стосується будь-якої іншої установки, про яку я, можливо, навіть не знаю)?

Якщо потрібна будь-яка інша інформація, будь ласка, повідомте мене про це.

Велике спасибі за будь-яку допомогу.

Відповіді:


2

Інтерфейс gre0тунелю названий резервним інтерфейсом і має особливе значення. Він створений ip_greмодулем ядра при ініціалізації модуля. Ви не можете відключити цю функцію.

Коли хост отримує gre пакети, для яких не знайдений відповідний інтерфейс тунелю, буде використаний цей резервний інтерфейс. На жаль, це дійсно недокументована функція. Тільки у вихідному коді це описано.

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

Таким чином, ви не можете його повністю видалити без втрати інших gre тунелів. Але ви можете перейменувати його за допомогою команди ip link set dev gre0 name gre_fallback. І тоді ви можете створити інший gre tunel з gre0назвою.


Через вісім років з’являється правильна відповідь. Спасибі!
alecov

23

Я вважаю, що знайшов собі відповідь на цю проблему.

На деякий час роздумуючи, я вирішив відтворити проблему в чистій установці.

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

Розчаровує те, що ця "особливість" є абсолютно недокументованою і навіть є несподіваною, оскільки, можливо, природно спробувати створити gre0тунель як перший (і єдиний) тунель GRE в системі.


7
Це справедливо і для tunl0 і sit0.
Олівер Твіст

І, натомість tunl0, це ipipзамість цього.
i336_

0

Вам потрібно переконатися, що gre модуль повністю видалений. Біжи

sudo lsmod | grep gre

щоб перевірити, чи є модуль у списку. Якщо це так, запустіть

sudo rmmod ip_gre
sudo rmmod gre

щоб видалити їх з ядра.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.