Eu não sei de uma solução "pronta para usar" que faz isso de forma totalmente automática e transparente. É possível. O melhor que posso fazer é fornecer um resumo de "alto nível".
Basicamente, você está olhando para um problema de roteamento. Você deseja que o tráfego destinado a sub-redes específicas transite por endereços IP de gateway diferentes. Se você estiver disposto a viver sem uma solução dinâmica, faça o seguinte:
- Descubra quais sub-redes representam o tráfego em "países diferentes" e qual VPN você quer que eles usem. Digamos, por exemplo, que qualquer coisa em 10.4.0.0/16 esteja em um país diferente e você NÃO queira que ela saia, exceto por meio de uma VPN. Você tem seu modem conectado a
eth0
e tem o IP de gateway padrão do seu ISP. - Isso é muito mais fácil se seu provedor de VPN usa um protocolo que cria um adaptador de rede virtual para cada VPN (por exemplo, OpenVPN cria uma interface
tun0
virtual, o PPTP faz algo semelhante se lembrar corretamente - o IPSec pode fornecer você emite). Digamos que você tenha um provedor baseado no OpenVPN que forneça um arquivo de configuração apropriado e crie umtun0
para você. - Use o comando
ip route
para criar uma nova rota informando que qualquer tráfego que saia do sistema destinado a 10.4.0.0/16 deve sair por meio detun0
. Você precisa atribuir a métrica adequada aonde ela sempre será usada sobre o seu gateway padrão real. - Para ser realmente seguro, convém criar algumas regras
iptables
que bloqueiam todo o tráfego que sai do seu gateway padrão (eth0
, sua NIC real) para 10.4.0.0/16. Isso evita vazamentos. - Você precisa colocar seus comandos
ip route
em um script que é executado na inicialização. - Faça isso novamente para seu segundo intervalo de IP e VPN.
- Em seguida, o tráfego não em um desses intervalos de IPs deixará de fora
eth0
(ou seja, seu gateway padrão).
Você pode descobrir facilmente o alcance de IP do ISP de um site remoto com whois
, a menos que eles usem algum tipo de interface CDN. Se um frontend do CDN for usado, como o Cloudflare, o site parecerá vir de um local totalmente diferente. Nesse caso, é melhor usar um proxy de camada HTTP, como squid
, que pode redirecionar o tráfego para IPs diferentes com base no conteúdo da URL.