Eu posso sugerir duas alternativas, você pode escolher uma delas ou a sua própria.
Você pode configurar seu serviço para ouvir o endereço curinga e, assim, evitar completamente a regra DNAT. A regra SNAT será então aplicada nos pacotes de saída.
Ou, dependendo de qual solução de HA você está usando, você pode configurá-lo para iniciar seu serviço escutando no IP flutuante (192.168.0.40) à medida que ele é migrado.
Nota não tão relacionada, mas esse tipo de incômodo não existe em CARP OpenBSD . Com o CARP você tem o IP virtual configurado em todos os nós, mas está ativo em apenas um. Isso significa que você pode ter seu serviço escutando no IP virtual em todos os nós.
Isso não é tão bonito, mas você pode configurar o IP virtual em todos os nós (e até mesmo atualizá-lo) e usar arptables
para desabilitar as respostas ou anúncios do ARP para esse IP. Você pode então habilitar ou desabilitar a regra ARP quando um nó se torna um mestre ou escravo.