基于Macvlan的界面从主机ping,但不是从命名空间

[编辑]

生产系统目前是一个混合物理和基于ESXi的系统。 即使在预生产环境中,我们显然也不会使用virtualbox! 这里仅用于在我的桌面上直接快速缩小问题的范围。

感谢对meta的“搁置”的解释!

[/编辑]

我的设置:

  1. 专用networkingvboxnet1 10.0.7.0/24
  2. 1主机,Ubuntu桌面
  3. 1个虚拟机,ubuntu服务器(VirtualBox)

地址布局:

  1. 主机:10.0.7.1
  2. VM:10.0.7.101
  3. VM MAC NAMESPACE :10.0.7.102

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 | | | | | | | | | | | +----------------+ | | | +--------------------+ | +------------------------+ 

什么工作:

  • HostVM之间Ping
  • NSNS之间
  • 来自NS dhclient

什么不行:

  • NSVM之间的ping
  • NSHost之间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

    我希望它有帮助!