1つのネットワークアプリケーションをテストするPythonスクリプトを開発しています。テストの一環として、1つのインターフェイス(物理インターフェイス)から別のインターフェイス(ブリッジ)にネットワーク構成(IPアドレス、ルート...)を移動して、システムを元に戻す必要があります元の状態に戻します。 Pythonでこれを達成する最もエレガントなアプローチは何ですか?IP設定をあるインタフェースから別のインタフェースに移動する
私が考えているいくつかのアイデア:ルートが失われないように、テスト中に物理インターフェイスからIPアドレスの割り当てを解除しない場合は
- が。しかし、これは、試験中に同じIPアドレスがブリッジに共存することを意味します。特定のLinuxカーネルでこれが問題になるのでしょうか?しかし、それは私のシステムで正常に動作するようです...
- にブリッジを割り当て、物理インターフェイスから割り当てを解除します。 Pythonで簡単に実装するには、単純な呼び出しと解析を行うことが必要です(
ifconfig
)。しかし、デフォルトルートが物理インターフェイスを通過していた場合は、同じ時刻に、物理インターフェイスからIPアドレスを割り当て解除したときに消えてしまいます。 ip route ls
の出力を解析し、IP設定と一緒にルートを移動します。これは唯一合理的なアプローチだと思われますが、かなりのコーディングが必要になります。多分もっとエレガントなものがありますか?
iptables-save eth0>eth0_conf
のように、iptables-restore eth0_conf
?その他の提案はありますか?
このテストツールは、移植可能で、別のLinuxカーネルで実行できる必要があります。
- ブリッジインタフェースがダウン
- 設定
- が
ifconfig eth0 down && ifconfig br0 up
実行し、復元するために、ブリッジインタフェースであることを確認します:
は私がルートを復元するためのインターフェースをアップ/ダウンさせあなたのアプローチを好む:ここ
は、これを達成するためにxendのnetwork-bridge
スクリプトから別の例です。私はこれが私のために働くかもしれないと思います。今の唯一の問題は、eth0-> br0からルートを移動する方法です(私は両方のインターフェースがテスト中に上がっているはずです)。 –@AnsisAttekaあなたはあなたの設定をさらに詳しく説明できますか? br0にはどのインタフェースが含まれていますか? eth0とbr0は同じ物理ネットワーク上にありますか?あなたは何を達成しようとしていますか? – mensi
同じサブネット内に2つの物理インターフェースを持つことは、少なくとも私の経験では、痛みをすることができます。私は – mensi