[编辑]
生产系统目前是一个混合物理和基于ESXi的系统。 即使在预生产环境中,我们显然也不会使用virtualbox! 这里仅用于在我的桌面上直接快速缩小问题的范围。
感谢对meta的“搁置”的解释!
[/编辑]
我的设置:
vboxnet1 10.0.7.0/24 地址布局:
在VM ,我运行了以下命令:
ip netns add mac # create a new nmespace ip link add link eth0 mac0 type macvlan # create a new macvlan interface ip link set mac0 netns mac
在VM中的mac命名空间中:
ip link set lo up ip link set mac up ip addr add 10.0.7.102/24 dev mac0
所以我们基本上是以(像Inception一样)?
+------------------------+ | Host: 10.0.7.1 | | | | +--------------------+ | | | VM: 10.0.7.101 | | | | | | | | +----------------+ | | | | | NS: 10.0.7.102 | | | | | | | | | | | +----------------+ | | | +--------------------+ | +------------------------+
什么工作:
Host和VM之间Ping NS和NS之间 NS dhclient 什么不行:
NS和VM之间的ping NS和Host之间ping 我开始疯狂的地方:
host tcpdump(真正的机器)实际上显示了ARP请求和答复 NS tcpdump显示发送给主机的ARP请求 VM tcpdump使整个混乱工作(!) – > ping开始得到答案,当tcpdump在虚拟机上启动?! 所以,我敢打赌,你是渴望它,我的问题是:如何使它工作? 我怀疑在NS内的macvlan上的ARP有问题,但无法弄清楚究竟是什么…
顺便说一句,我做了直接在虚拟机(没有命名空间)的mac0接口相同mac0和它的工作完美无瑕。
好吧,对于后人来说,tcpdump让所有突然出现的事情都应该使我走上正轨。 它在内部将eth0切换到混杂模式。 也就是说, eth0会产生所有的networkingstream量,而不仅仅是服务器的主MAC
但是,这正是macvlan工作原理:它增加了一个新的虚拟MAC地址,这是虚拟机networking适配器所不知道的。
所以简单的解决方法是手动: ifconfig eth0 promisc
我希望它有帮助!