我们有这样的情况:一台Ubuntu VM的路由器在同一个物理网卡上有多个VLAN接口。 这些VLAN接口是dynamicconfiguration的,并被拆除并连接到可由用户添加或删除机器的networking。
有时我们有一种情况,例如,在VLAN 1上,路由器的IP为10.0.0.254,邻居机器的IP为10.0.0.1。 同时,在VLAN 2上,路由器的IP为10.0.0.1,邻居机器的IP为10.0.0.2。
当VLAN 1 10.0.0.1发送一个ARP询问“谁有10.0.0.254 tell 10.0.0.1”时,路由器不响应。 在路由器上嗅探stream量,显示ARP请求到达时带有适当的VLAN标记,但被丢弃。
路由器是否认为ARP消息到达了错误的接口?
一些注意事项:
使单个networking节点连接到使用相同IP地址的两个不同networking不是受支持的configuration。 地址冲突是使用RFC 1918地址的一个众所周知的缺点。 这就是为什么引入RFC 4193的原因,并规定必须随机生成40个地址位。
如果您不想重新编号networking来解决地址冲突,并且如果您不想升级到IPv6,这样可以避免在第一种情况下发生这种冲突,那么您可以得到的最可靠的设置是分割单个networking节点分为两个或多个networking节点。
单个Linux虚拟机可以同时作为多个独立的networking节点运行。 该function称为networking命名空间。 每个networking名称空间都有自己的一组networking接口,本地地址,路由表条目和防火墙规则。 不同的networking名称空间可以通过虚拟networking接口相互通信。
有关networking命名空间function的文档可以使用man ip-netns (或者如果您使用的是旧版本,则为man ip )。
如果路由器的某个接口上有IP地址10.0.0.1,则声称拥有该IP地址的另一台计算机将被视为ARP欺骗。 即使你确实得到它来回答ARP,你也永远无法将数据包从路由器发送到10.0.0.1 – 路由表将是什么样的?
你需要给路由器和连接到不同IP地址的所有东西。
这听起来像你的用户的机器没有configuration发送免费ARP请求,当他们最初创build或当一个IP被新分配给他们。 你可以使用arping工具完成这样的事情。