Отказоустойчивость Keepalived не работает для цели Static NAT за Cisco ASA

Отказоустойчивость Keepalived не работает для цели Static NAT за Cisco ASA

У меня есть Cisco ASA[0] с парой Linux-боксов в DMZ, на которых запущены Keepalived и HAproxy, действующие как пара отказоустойчивости для балансировки нагрузки для другой пары серверов Windows, также в DMZ. Я убежден, что Keepalived работает правильно. Я могу успешно выполнить ping виртуального адреса (10.0.1.8) с другого хоста в DMZ; когда я останавливаю Keepalived на главном сервере (10.0.1.6), несколько ping-запросов завершаются неудачей, прежде чем резервный сервер (10.0.1.7) берет на себя управление виртуальным адресом. Аналогичные несколько сбоев происходят, когда я перезапускаю Keepalived на главном сервере. Этот другой хост может видеть веб-страницы, размещенные на двух серверах Windows, через HAProxy, когда активен либо основной, либо вторичный сервер.

Виртуальный IP-адрес имеет статическое сопоставление NAT с внешним адресом (например, 1.2.3.8). Когда я пробую провести аналогичный тест из-за пределов брандмауэра, пинги на 1.2.3.8 работают только тогда, когда активен основной сервер. Когда я останавливаю службу Keepalived на основном сервере, пинги из-за пределов брандмауэра не проходят, а пинги изнутри DMZ проходят успешно.

Я вижу, что запись MAC-адреса для виртуального IP-адреса меняется, когда я останавливаю и перезапускаю Keepalived на первичной ОС, поэтому ASA, похоже, знает, когда первичная и вторичная ОС активны. Однако, похоже, он отказывается транслировать NAT входящий трафик, когда вторичная ОС активна. Я думаю, что ASA пытается предотвратить подделку адреса, но в этом случае я бы очень хотел, чтобы ASA это разрешила. Я не могу понять, как это сделать (или с чего начать, на самом деле). Есть предложения?

[0] - На самом деле это пара в конфигурации отказоустойчивости, но я не думаю, что это имеет значение.

Связанный контент