Virtualboxには、内部ネットワークに接続されている2つの仮想マシン(VM)があります。最初に、n0という名前のネットワーク名前空間があります。この名前空間をネットワークインターフェイスに接続し、最後に内部接続を使用して2番目の仮想マシン(VM2)に接続しようとしています。ネットワークの例:
ご覧のとおり、192.168.127.2/24と192.168.127.1/24の間の接続が必要です。
openvswitchを使用してこの問題を解決しようとしました(動作しません)。
sudo ovs-vsctl add-br br0
sudo ifconfig br0 up
sudo ip link add veth type veth peer name veth-br
sudo ip link set veth netns ns0
sudo ifconfig veth-br up
sudo ovs-vsctl add-port br0 veth-br
sudo ip netns exec ns0 ip addr add 192.168.127.2/24 dev veth
sudo ip netns exec ns0 ip link set veth up
sudo ip addr add 192.168.127.3/24 dev br0
sudo ovs-vsctl add-port br0 eth0
この問題を解決するのに役立ちますか?ソリューションが正しく機能するように改善する方法をご存知ですか?
拡張ネットワークトポロジ:
ns1とns0の間には有効な接続がありますが、ns1を192.168.127.1/24に接続しようとしています。これを行うには、192.168.127.2/24と192.168.127.1/24の間の接続に加えて固定パスを追加する必要がありますが、これはできません。 openvswitchと次のコマンドを使用してこれを実行しようとしています。
sudo ip netns exec ns1 route add -net 192.168.127.0/24 gw 192.168.1.10 dev wlan1
sudo ip route add 192.168.1.0/24 via 192.168.127.2 dev br0
ここで、br0 は openvswitch-bridge です。
答え1
(質問を変更することは説明を追加するのに許容される方法なので、完全に大丈夫です)
しかし、まだopenvswitchが必要な理由を理解していません。私がすることは次のとおりです(ネットワークセグメントを線で表現する方法に注意してください。これらのセグメントを明確に示すことはネットワーク設計にとって重要です)。
192.168.1.*/24 192.168.127.*/24
WLAN Internal
: |
: +------------------------------+ | +----------------------+
: | +--------------------------+ | | | |
+--|-|- wlan0 192.168.1.1 | | +--|- 192.168.127.1 eth0 |
: | | ns1 | | | | |
: | +--------------------------+ | | | VM2 |
: | | | +----------------------+
: | +--------------------------+ | |
+--|-|- wlan1 192.168.1.10 | | |
: | | | | |
: | | macvlan0 192.168.127.2 -|-|--+
: | | (to eth0) ns0 | | |
: | +--------------------------+ | |
: | | |
: | eth0 192.168.127.4 ---|--+
: | | |
: | VM1 | |
+------------------------------+
したがって、VM1、ns0、および VM2 は virtualbox 内部ネットワークでお互いを見ることができます。私たちが言うとはいまだあなたの目標はわからない。
macvlan
したがって、マスターとして使用して作成し、eth0
内部に移動しますns0
。
# In VM1, main namespace
ip link add macvlan0 link eth0 type macvlan mode bridge
ip link set macvlan0 netns ns0
ip -n ns0 addr add 192.168.127.2/24 dev macvlan0
ip -n ns0 link set macvlan0 up
ip -n ns0 show macvlan0
あるいは、内部ネットワークの DHCP サーバーを使用して、macvlan に IP を取得して DHCP クライアントを実行させることもできます。ディストリビューションに応じて、上記の項目を永久に作成する方法はさまざまです。
解決策は、virtualboxの内部ネットワーキングで使用されるmacvlanに依存します(そうでないかもしれません。私が書いたように、virtualboxのネットワーキングは奇妙です)。うまくいかない場合は、次のことを試みるのは、内部セグメントを破棄し、仮想マシンを使用してセグメントを接続することです。
openvswitch は不要で、実際に openvswitch を virtualbox 内部ネットワーキングと組み合わせる簡単な方法はありません。
したがって、どこかで読んで興味深いので、openvswitchを使用したい場合は、ここで使用する必要はないかもしれません。