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つの質問があります。
gre0
の情報ですが、これは私が知らない他の設定にも適用されます)はどこに保存されますか?その他の情報が必要な場合はお知らせください。
助けてくれてありがとう。
gre0
トンネルインターフェースは、フォールバックインターフェースと呼ばれ、特別な意味があります。モジュールの初期化時にip_gre
カーネルモジュールによって作成されます。この機能を無効にすることはできません。
ホストが適切なトンネルインターフェイスが見つからないgreパケットを受信すると、このフォールバックインターフェイスが使用されます。残念ながら、それは本当に文書化されていない機能です。 ソースコード のみに記載されています。
他のタイプのトンネリングにも同じロジックが使用されます。
したがって、他のgreトンネルを失うことなく、完全に削除することはできません。ただし、ip link set dev gre0 name gre_fallback
コマンドを使用して名前を変更できます。次に、gre0
という名前で他のgreトンネルを作成できます。
私はこの問題に対する答えを見つけたと思います。
しばらくいじってから、クリーンインストールで問題を再現することにしました。
Debianのインストール後、ip_gre
モジュールはデフォルトでカーネルに挿入されません。 ip tunnel show
はトンネルを表示しません。 ip_gre
モジュールを挿入した後、トンネルを作成しないと、gre0
が表示され、期待どおりに削除および変更できません。したがって、gre0
は、ip_gre
モジュールによってデフォルトで作成されるダミートンネルのようです。
システムの最初の(そして唯一の)GREトンネルとしてgre0
トンネルを作成しようとするのは自然なことかもしれないので、この「機能」は完全に文書化されておらず、予想外の機能でさえあるのでイライラします。
Greモジュールが完全に削除されていることを確認する必要があります。走る
Sudo lsmod | grep gre
モジュールがリストにあるかどうかを確認します。そうであれば、実行します
Sudo rmmod ip_gre
Sudo rmmod gre
カーネルからそれらを削除します。