Você deve usar o roteamento de políticas para implementar isso. As regras não serão muito complicadas.
Sua rota padrão (principal) deve apontar para a interface VPN. Você provavelmente usará a opção --redirect-gateway def1
do OpenVPN para que isso seja gerenciado automaticamente para você quando a VPN for ativada. Isso faz com que o OpenVPN substitua a rota padrão do sistema por um par de /1
rotas que têm o mesmo efeito e garante que o próprio OpenVPN ainda possa alcançar seu ponto remoto da maneira normal sem o óbvio loop de roteamento.
Esta rota padrão fará com que o tráfego originado localmente saia pela VPN e também fará com que as respostas ao tráfego que chega através da VPN saiam da VPN.
Agora, você deseja substituir isso por uma regra de política para pacotes associados a conexões que vieram na interface não-VPN. Você quer fazer esses pacotes saírem pela interface não-VPN.
O seguinte deve fazer isso (1) combinando pacotes que tenham o endereço IP público não-VPN como endereço de origem e solicitando que eles sejam roteados através de uma tabela de roteamento diferente, (2) nessa tabela de roteamento, enviando tudo para sua rota padrão original (não VPN).
ip route add table 42 default via X.Y.Z.W
ip rule add from A.B.C.D/32 table 42
A.B.C.D
deve ser o seu endereço IP público (não VPN) e X.Y.Z.W
deve ser a sua rota original do sistema (através do seu ISP, não através da sua VPN).
A configuração similar para o tráfego IPv6 é deixada como um exercício para você: -)