yad*_*taf 10 networking linux namespaces iproute2
[编辑]
生产系统目前是一个混合物理和基于 ESXi 的系统。即使在预生产环境中,我们显然也永远不会使用 virtualbox!在这里使用它只是为了直接在我的桌面上快速缩小问题的范围。
感谢您对元数据“暂停”的解释!
[/编辑]
我的设置:
vboxnet110.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
Run Code Online (Sandbox Code Playgroud)
在mac命名空间上,在 VM 内部:
ip link set lo up
ip link set mac up
ip addr add 10.0.7.102/24 dev mac0
Run Code Online (Sandbox Code Playgroud)
所以我们基本上最终得到:(比如 Inception ?)
+------------------------+
| Host: 10.0.7.1 |
| |
| +--------------------+ |
| | VM: 10.0.7.101 | |
| | | |
| | +----------------+ | |
| | | NS: 10.0.7.102 | | |
| | | | | |
| | +----------------+ | |
| +--------------------+ |
+------------------------+
Run Code Online (Sandbox Code Playgroud)
什么工作:
Host和VMNS和NSNS什么不起作用:
NS和之间pingVMNS和之间pingHost我开始发疯的地方:
host(the real machine) 实际上显示了 ARP 请求和回复NS显示发送到主机的 ARP 请求VM使整个混乱工作(!)--> 在 VM 上启动 tcpdump 时,ping 开始得到答案?!?所以,我敢打赌你很渴望它,我的问题是:如何让它发挥作用?我怀疑 NS 内 macvlan 上的 ARP 有问题,但无法弄清楚究竟是什么......
顺便说一句,我mac0直接在 VM(没有命名空间)上对接口进行了相同的实验,并且它完美地工作。
yad*_*taf 13
好的,所以,对于后代来说,tcpdump 使所有突然工作的事实应该让我走上正轨。它在内部所做的是切换eth0到混杂模式。也就是说,eth0会产生所有的网络流量,而不仅仅是与服务器主MAC
但是,这正是macvlan工作原理:它添加了一个新的辅助虚拟 MAC 地址,“物理”(即 VM)网络适配器不知道该地址。
所以简单的解决方法是手动: ifconfig eth0 promisc
我希望它有帮助!