Linux 上的辅助 IP 使用相同的网络掩码或 /32

Linux 上的辅助 IP 使用相同的网络掩码或 /32

似乎有(至少)两种方法可以在 Linux 上为接口添加辅助 IP 地址。所谓辅助,是指它将接受发往该 IP 地址的流量,并且对该 IP 的连接的响应将使用它作为源,但该框发起的任何流量(例如传出的 TCP 连接)都不会使用辅助地址。

两种方式都从添加主地址开始,例如ip addr add 172.16.8.10/24 dev lan。然后我可以使用网络掩码/24(与主地址匹配)或 来添加辅助地址/32

如果我将其添加为/24,它将被标记为次要地址,因此不会被用作传出数据包的源,但这会造成两个地址被错误地以错误的顺序添加的风险。如果我将其添加为/32,则不会发生错误的顺序,但它不会被标记为次要地址,我不确定这可能会带来什么不良影响。

所以,我想知道,哪种方法最不可能被打破?(如果重要的话,这台机器上的主要服务是 MySQL,但它也运行 NFSv3。我正在添加第二台机器作为热备用,并希望通过更改拥有辅助 IP 的机器在它们之间切换。)

答案1

如果我将其添加为 /24,它将被标记为次要地址,因此不会被用作传出数据包的源,但这会造成两个地址被错误地以错误的顺序添加的风险。如果我将其添加为 /32,则不会发生错误的顺序,但它不会被标记为次要地址,我不确定这可能会带来什么不良影响。

我不太明白你的意思。系统启动时,网络接口的配置是确定性的。通过正确配置网络,你可以决定首先分配哪个地址,将哪个地址分配为辅助地址。

如果您使用的是 RedHat-ish 系统,则主网络配置文件ifcfg-eth0(例如)将在任何别名接口(例如)之前处理ifcfg-eth0:0。我不太确定 Debian-ish 系统上的行为,但看起来文件/etc/network/interfaces可能会按顺序处理,因此将别名定义放在主地址之后,一切就绪了。

所以,我想知道哪种方法最不可能被打破?

如果您的两个地址都在同一个网络上,我不知道哪个地址更容易或更不容易中断。不管怎样,我通常使用 /32 网络掩码配置辅助地址,因为主地址已经提供了必要的网络路由。

答案2

您不能指望地址是“确定性的”。在故障转移配置的情况下,您可能会遇到类似起搏器之类的东西,它会介入并删除或添加 IP 到接口。由于您不知道起搏器何时会安装 IP,因此您无法保证顺序或依赖任何此类确定性行为。

因此,我发现 Linux 中的连接跟踪有点令人沮丧。我有一个 HA 防火墙配置,所有传出的数据包都发送到固定地址。因此,传入故障转移 IP 的流量会导致从固定地址(不同)传出的流量,因此看起来没有建立或与传入连接相关,并被丢弃。

相关内容