Isso pode ser um bug no alvo do iptables MASQUERADE. Em seu cenário, parece que você tem os seguintes eventos coincidentes:
- os pacotes pertencem a uma conexão já presente na tabela de estados
- a entrada de estado inclui uma fonte de endereço NAT que não pertence mais ao sistema
Assim, uma tentativa de mascarar o pacote pode falhar devido a um endereço inválido para ser mascarado, portanto, o pacote está sendo roteado inalterado.
O comportamento esperado do destino MASQUERADE seria ter as entradas de estado correspondentes desmarcadas quando uma interface fica inativa ou o endereço é alterado, portanto, essa situação não deveria ter ocorrido. Mas tem havido um bug antigo relatado para o iptables , que soa como poderia desencadear um tipo similar de comportamento.
Para solucionar mais, anote o endereço IP público do roteador, reproduza o problema e observe a tabela de estados usando egrep 12.34.56.78 /proc/net/ip_conntrack
(onde 12.34.56.78 é o endereço IP que você anotou anteriormente). Se você obtiver linhas conntrack com o endereço IP antigo apesar do endereço da interface pública ter mudado, provavelmente você está correndo para um bug do iptables - considere atualizar seu kernel / iptables e reportar o problema para a equipe do netfilter.