web-dev-qa-db-ja.com

GREトンネルを削除できません

Linux 2.6.26でGREトンネルを構成していますが、解決策を見つけることができない非常に奇妙な問題に直面しています。

gre0というGREトンネルを作成しましたが、どうしてもこのトンネルを削除できません。コマンド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が再び表示され、問題が解決しません。

2つの質問があります。

  1. この厄介なトンネルを取り除くにはどうすればよいですか?これはカーネルまたはモジュールのバグの可能性があります。
  2. そのような永続的なデータ(この場合はgre0の情報ですが、これは私が知らない他の設定にも適用されます)はどこに保存されますか?

その他の情報が必要な場合はお知らせください。

助けてくれてありがとう。

15
alecov

gre0トンネルインターフェースは、フォールバックインターフェースと呼ばれ、特別な意味があります。モジュールの初期化時にip_greカーネルモジュールによって作成されます。この機能を無効にすることはできません。

ホストが適切なトンネルインターフェイスが見つからないgreパケットを受信すると、このフォールバックインターフェイスが使用されます。残念ながら、それは本当に文書化されていない機能です。 ソースコード のみに記載されています。

他のタイプのトンネリングにも同じロジックが使用されます。

したがって、他のgreトンネルを失うことなく、完全に削除することはできません。ただし、ip link set dev gre0 name gre_fallbackコマンドを使用して名前を変更できます。次に、gre0という名前で他のgreトンネルを作成できます。

3
Anton Danilov

私はこの問題に対する答えを見つけたと思います。

しばらくいじってから、クリーンインストールで問題を再現することにしました。

Debianのインストール後、ip_greモジュールはデフォルトでカーネルに挿入されません。 ip tunnel showはトンネルを表示しません。 ip_greモジュールを挿入した後、トンネルを作成しないと、gre0が表示され、期待どおりに削除および変更できません。したがって、gre0は、ip_greモジュールによってデフォルトで作成されるダミートンネルのようです。

システムの最初の(そして唯一の)GREトンネルとしてgre0トンネルを作成しようとするのは自然なことかもしれないので、この「機能」は完全に文書化されておらず、予想外の機能でさえあるのでイライラします。

23
alecov

Greモジュールが完全に削除されていることを確認する必要があります。走る

Sudo lsmod | grep gre

モジュールがリストにあるかどうかを確認します。そうであれば、実行します

Sudo rmmod ip_gre
Sudo rmmod gre

カーネルからそれらを削除します。

0
Tony