Linux 机器可以在不同的接口/网络上拥有两个相同的 IP 地址吗?

Linux 机器可以在不同的接口/网络上拥有两个相同的 IP 地址吗?

是否可以从两个不同的接口/网络分配两个相同的 IP 地址和子网?

这样的机器会如何表现?路由表会是什么样子的?

答案1

嗯,不仅是可能的,而且有时很有用,甚至是需要的。

例如,当您在 L3 交换环境中有两个到不同交换机的链接时,这是一个选择。当然,配置需要的不仅仅是在两个接口上设置相同的 IP。

据我所知,您可以根据具体情况,通过两种方式可靠地管理多个接口之间共享的 IP。

如果您需要在不同的 LAN 上部署相同的配置,则可以使用命名空间,将不同的接口分配给不同的命名空间,并以复制的方式在每个命名空间上运行所需的服务。请参阅这个很棒的回答

其他更常见的(我猜)用例是我提到的,其中您的主机直接连接到两个或更多个 L3 交换机。在这种情况下,您可能希望提供负载平衡,在这种情况下,您可以在两个接口中配置相同的 IP,并使用两个不同的路由表和多跳。这解释得很好这里

答案2

是否可以从两个不同的接口/网络分配两个相同的 IP 地址和子网?

如果 IP 不同:

同一子网中的两个 NIC 按照定义位于同一网络中。这意味着使用哪个 NIC 来访问该网络中的任何东西都无关紧要。确切的行为取决于系统。大多数人可能会选择一个并坚持使用它。您可能能够根据您的操作系统配置负载平衡或故障转移。

当然,如果您预计 NIC 2 上有流量,那么当流量在 NIC 1 上发送时,这种情况就不会发生,因为 NIC 1 上的流量接收者将使用 NIC 1 的 IP,而不是 NIC 2。

如果您在公司环境中通过有线和无线连接连接到同一个网络,就会出现这种情况。

策略路由如果您希望不同的流量在同一个子网内的不同 NIC 上移动,那么您就需要研究这一点。

如果 IP 相同:

这会很乱。系统使用 ARP 将 IP 转换为 MAC 地址,以便以太网适配器可以相互通信。哪个 NIC 的 ARP 流量首先响应,则将使用哪个 NIC,这可能是不可预测的,因此您根本不知道流量最终会流向何处。

如果你希望 2 个 NIC 组合在一起以一个 IP 发送流量,则需要研究组队或者粘合。这需要双方建立相同的团队/纽带。

答案3

我认为您不能在多个接口上设置相同的 IP 地址,这没有意义。但您可以创建一个桥并在桥接接口上设置 IP 地址。从外部看,这台机器在多个接口上似乎具有相同的 IP 地址。

至于同一子网中的多个接口,我以前曾使用过它进行负载平衡,不过那是在某个 BSD 系统上。其理念是每个接口使用不同的路由表。但请记住,这是一种相当先进的技术,而 Linux 并不是真正为此而设计的。

看看这篇文章http://pontus.ullgren.com/view/multiple_interfaces_on_the_same_subnet 还有这个关于 serverfault 的问题可能会有帮助。

相关内容