O que você deseja é chamado de roteamento baseado em política. O Google retornará muitas informações sobre esse tópico, e é muito complicado responder completamente em uma postagem de resposta do ServerFault.
A visualização de 10.000 pés é que você:
- Crie tabelas de roteamento adicionais no kernel.
- Configure cada tabela de roteamento para usar uma rota padrão diferente (uma para sua conexão normal e outra para sua VPN).
- Usando o iptables, identifique e
mark
cada pacote de acordo com suas regras / política. - Atribua as marcas que você usou na etapa 3 para dizer ao kernel qual tabela de roteamento usar para cada pacote.
Os comandos básicos para conseguir isso:
echo 200 novpn >> /etc/iproute2/rt_tables
ip route add table 200 default via 192.0.2.1
iptables -t mangle -I OUTPUT -p tcp --dport 21 -d server.example.com -j MARK --set-mark 200
ip rule add fwmark 200 table novpn
Substitua 192.0.2.1 pelo seu roteador padrão na sua rede local.