我在设置一些 Linux 机器时遇到了麻烦。
我必须使用具有相同 IP 地址的多个 Vlan ID。
因此我在 /etc/network/interfaces 中添加了几个条目,如下所示:
auto eno1.42
iface eno1.42 inet static
address 10.1.0.1
netmask 255.255.255.0
broadcast 10.1.0.255
vlan-raw-device eno1
auto eno1.43
iface eno1.43 inet static
address 10.1.0.1
netmask 255.255.255.0
broadcast 10.1.0.255
vlan-raw-device eno1
等等。我在几个基于 Debian 的嵌入式系统上执行了此操作(使用 eth0 而不是 eno1)...并且运行良好。
但是当我尝试使用最新版本的 Ubuntu/Mint 时遇到了麻烦。
如果我向另一台 Linux 机器(基于 Debian)发送 ping 命令,该机器的设置方式相同 - 但 IP 为 10.1.0.2...
ping -I eno1.43 10.1.0.2
...我没有得到回应。
但是在 wireshark 中,我有时可以看到带有正确标签 43 的响应。但我还可以看到来自基于 debian 的机器的许多未答复的 ARP 请求查询“谁有 10.1.0.1”。
顺便说一句:IP 转发已启用。
我究竟做错了什么?
我是否需要在路由表中添加一个条目?
对于这种情况(同一 IP 上的多个 VLAN)有没有更好的解决方案?
答案1
将同一个 IP 添加到多个网络接口是行不通的,无论是 VLAN 网络接口还是其他接口。除非每个应用程序都绑定到一个接口(您可能很幸运,因为无法做到这一点的应用程序没有处于活动状态),否则它在嵌入式机器上也行不通。
这看起来很像XY问题,因此请编辑问题并描述为什么你想这样做吗?主要目标是什么你想要实现什么目标?
VLAN 的 IP 范围重叠也可能导致严重的网络问题,所以不要这样做。
如果你真的真的需要做一些有趣的事情,您可以为每个 VLAN 创建一个网络命名空间。但修复您的设置可能更好。