我有两台物理服务器,它们的配置如下:
ServerI:
IPADDR=10.1.1.5
NETMASk=255.255.255.0
ServerII:
IPADDR=10.1.1.5 (Same IP)
NETMASk=255.255.0.0 (different NETMASK)
因为NETMASK不同,我想知道我把两台服务器放在同一个Switch上,这样可以吗?
我有两台物理服务器,它们的配置如下:
ServerI:
IPADDR=10.1.1.5
NETMASk=255.255.255.0
ServerII:
IPADDR=10.1.1.5 (Same IP)
NETMASk=255.255.0.0 (different NETMASK)
因为NETMASK不同,我想知道我把两台服务器放在同一个Switch上,这样可以吗?
如果两个地址相同的设备在同一个网络上,那么就会发生地址冲突。
您可能可以在使用 NAT 的两个独立网络上解决此问题,但它可能会变得非常丑陋,并且只能使用一段时间,直到可以重新寻址一个或另一个。
因为NETMASK不同,我想知道我把两台服务器放在同一个Switch上,这样可以吗?
不,使用不同的子网掩码并不能阻止 IP 冲突。基本上有两种可能的结果。
一些 IP 堆栈会在启动接口之前检查重复地址,而另一些则不会。如果第二个出现的设备进行了重复检查,那么您最终会发现一个系统正常工作而另一个系统不工作。如果(由于缺乏重复检查)两个接口都出现,那么将发送到哪个服务器流量变得不可预测,导致故障排除噩梦。
如果您的交换机具有管理功能,那么您可以将设备拆分到单独的 vlan。这将阻止它们相互冲突,但也意味着它们之间没有直接的路径。
可以构建一个 NAT 盒以允许它们进行通信,但这很棘手,因为大多数 NAT 实现不处理重叠的地址空间。这通常意味着如果您想让两个具有相同 IP 的服务器相互通信,您必须使用两个单独的 NAT 引擎实例对流量进行两次 NAT。
请注意,NAT 引擎的两个独立实例并不一定意味着两个独立的硬件设备。例如,现代 Linux 内核有一个称为“网络命名空间”的功能,它允许网络堆栈(包括 NAT 引擎)的多个单独实例。
因为NETMASK不同,我想知道我把两台服务器放在同一个Switch上,这样可以吗?
不。[*]
网络掩码仅用于路由数据包 - 决定目的地是本地还是使用哪个网关。网络掩码不用于寻址,因此在同一 L2 网段/交换机/VLAN 上使用相同 IP 地址的两个节点总是会发生冲突。
如前所述,涉及 NAT、ARP 过滤、静态 ARP、端口转发过滤(专用 VLAN)等的变通方法是可能的,但通常要避免。
[*]同一交换机上的两台服务器并没有明确排除使用多个 VLAN,其中重复的 IP 地址肯定是可能的(但不切实际)。