我需要在同一物理设备 (eth1) 上配置两个不同的 MAC 和 IP 地址。
但是当我在默认/全局命名空间中配置 macvlan 接口并在其上配置 vlan 时。我可以直接从外部主机 ping vlan IP 地址,而无需对其进行标记 (ping)。但另一方面:标记的 ping 不起作用。当我在非全局/非默认命名空间中设置网络配置时,也会发生同样的情况。
ip addr add 169.254.255.126/16 dev eth1
ip link set dev eth1 up
# ping 169.254.255.126 # PING from external host is working: fine
ip link add macvlan link eth1 type macvlan mode bridge
ip addr add 169.254.255.127/16 dev macvlan
ip link set dev macvlan up
# ping 169.254.255.127 # PING from external host is working: fine
ip link add link macvlan name vlan2 type vlan id 2
ip addr add 169.254.255.128/16 dev vlan2
ip link set dev vlan2 up
# ping 169.254.255.128 # PING from external host works without vlan tag: FAIL
# ping 169.254.255.128 -I VLAN2 # no PING response external host with vlan tag: FAIL
那么,如何在其全局/默认命名空间中的同一物理接口上设置两个虚拟接口(不同的 MAC+IP),它们的作用就像真实设备一样?
可选:如果没有全局选项,则可以接受命名空间。
仅供参考:我在内核 5.4 的 UBUNTU 18.04 以及内核 4.9 的嵌入式 buildroot 系统上对其进行了测试(两次结果相同)。
答案1
经过一些测试和进一步研究后,问题是我尝试将同一网络区域的多个 IP 地址放置到多个网络接口。
为了使这项工作正常进行,需要非全局命名空间。
所以我们可以在这里关闭这个问题。谢谢