veth が同じネットワーク アドレスを持つ場合、ネットワーク インターフェイスが機能しないのはなぜですか?

veth が同じネットワーク アドレスを持つ場合、ネットワーク インターフェイスが機能しないのはなぜですか?

Linux で veth のペアを作成しました。ネットワーク部分が eth0 と同じ IP アドレスを割り当てると、ネットワークが壊れるようです。たとえば、eth0 は 192.168.0.3、veth1 は 192.168.0.100 です。一方、すべての表示はすべて稼働ip a/lしていることを示していますが、ping/nc などはローカル ホストとリモート ホストで機能しません。

これに関してどこかに制限事項が書かれていますか?

答え1

一般的なネットワーク原則として、異なるサブネットには異なるサブネットIP範囲が必要ですそして特定のマシン上のサブネットへのインターフェースが 1 つだけある

これらの原則に違反することはできますが、その場合、これを機能させるのはあなた次第です (アプリケーションを特定のインターフェースにバインドするなどの努力も必要になります)。

veth ペアはサブネットを形成します。両方の veth インターフェイスを同じネットワーク名前空間に配置し、質問のように IP アドレスを割り当てると、両方の原則に違反することになります。したがって、これは機能しません。

通常、vethペアの1つを別のネットワーク名前空間に移動します(vethペアはネットワーク名前空間を接続するためのものなので)。そして、表示されているvethに違うサブネットを作成し、そのサブネット内の両方の veth インターフェイスにアドレスを割り当てます。


しかし、ホスト名前空間内のホスト veth に同じネットワーク アドレスがあると、メイン インターフェイスが機能しなくなります。

はい。だから違うveth ペア上のサブネットを作成し、通常のサブネットと同様にルーティングを実行します。

そしてこれがXY問題、そして何か特定のことを実現したい場合は、質問を編集して目標を明記してください。コンテナ内でネットワークを構築する方法は他にもあります (例: macvlan)。

異なるネットワークセグメントを相互に転送するために必ずしもブリッジを作成する必要はありません。

ただし、名前空間と他の名前空間の両方に同じサブネットを設定する場合は、 が必要です。(または を使用しますmacvlan)。

どこかに「同じ」ネットワーク アドレスを配置しようとしたり、異なるインターフェイスに「同じ」サブネットを配置しようとしたりすると、ルーティングは機能しません。

関連情報