Как сервер может ответить с другим IP (виртуальным IP) при использовании Keepalived?
Я изучал Keepalived для целей высокой доступности.
У меня есть некоторые фундаментальные вопросы, касающиеся поведения TCP/IP, когда Keepalived на месте.
С Keepalived клиенты могут получить доступ к серверам через его виртуальный IP-адрес. Это достигается благодаря MAC-переводу. Но, в конце концов, хост-сервер получает пакеты с другим IP-адресом назначения, а не собственным IP-адресом. Сначала я думал, что хост отклонит пакет с IP-адресом, отличным от его собственного, но это нормально.
Что меня озадачило, так это то, что хост-сервер также отвечает на запросы , используя виртуальный IP-адрес, которого нет ни на одном из его интерфейсов.
Как стек TCP/IP может создать пакет с IP-адресом источника, отличным от его сетевого интерфейса? Влияет ли keepalived на конструкции пакетов внутри стека TCP/IP? Я, хотя Keepalived будет действовать только на уровне приложений.
Заранее спасибо за любые разъяснения.
1 ответ
Виртуальный ip присутствует на одном интерфейсе. Вы можете легко проверить это с ip addr list eth0
команда. Один интерфейс может иметь несколько IP-адресов. Таким образом, в действительности все IP-адреса являются "виртуальными", даже если у вас есть только один. И мы называем "реальный IP" первым по умолчанию.