У меня есть Cisco ASA [0] с парой Linux-серверов в демилитаризованной зоне, на которой запущены Keepalived и HAproxy, работающие как пара аварийного переключения балансировки нагрузки для другой пары серверов Windows, также находящихся в демилитаризованной зоне. Я уверен, что Keepalived работает правильно. Я могу успешно пропинговать виртуальный адрес (10.0.1.8) с другого хоста в DMZ; когда я останавливаю Keepalived на главном сервере (10.0.1.6), происходит сбой нескольких эхо-запросов до того, как резервная копия (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] - На самом деле это пара из них в конфигурации аварийного переключения, но я не думаю, что это актуально.