使用 Keepalived 时,服务器如何使用不同的 IP(虚拟 IP)响应?

使用 Keepalived 时,服务器如何使用不同的 IP(虚拟 IP)响应?

我一直在研究 Keepalived 的高可用性目的。

我对使用 Keepalived 时的 TCP/IP 行为有一些基本疑问。

使用 Keepalived,客户端可以通过其虚拟 IP 地址访问服务器。这得益于 MAC 转换。但最终,主机服务器会收到具有不同目标 IP 而不是其自身 IP 的数据包。最初我以为主机会拒绝具有不同于其自身 IP 的数据包,但那没关系。

令我困惑的是,主机服务器也响应请求使用虚拟 IP 地址,该地址不存在于其任何接口上

TCP/IP 堆栈如何构造与其网络接口具有不同源 IP 的包?keepalived 是否作用于 TCP/IP 堆栈内的包构造?我认为 Keepalived 只作用于应用层。

在此先感谢您的澄清。

答案1

虚拟 IP 存在于一个接口上。您可以使用ip addr list eth0命令轻松检查它。一个接口可以有多个 IP 地址。因此,实际上所有 IP 地址都是“虚拟的“,即使你只有一个。我们称之为”真实 IP“第一个默认的。

相关内容