我在 Virtualbox 中有两个与内部网络连接的虚拟机(VM)。在第一个上,我有名为 n0 的网络命名空间。我想将此命名空间连接到网络接口,最后使用内部连接将其与第二个虚拟机 (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 - 桥。
答案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
witheth0
作为 master ,并将其移到里面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 因为您在某处读到它并且发现它很有趣,那么也许您不必在这里使用它。