Sim, isso pode ser feito. Você precisa de policy routing
, isto é, a capacidade de lidar com duas tabelas de roteamento distintas simultaneamente. O motivo é que você precisa ter dois gateways simultâneos, um para o Squid e outro para os aplicativos restantes. Dois gateways não são permitidos nos sistemas operacionais, a única exceção é o roteamento de políticas no kernel do Linux.
Você encontra uma explicação muito boa e muito curta sobre o roteamento de políticas (às vezes também chamado de origem) na resposta de David Schwartz para uma pergunta em um site irmão (Unix e Linux).
Você precisará configurar sua VPN para que sua tabela de roteamento seja a tabela de roteamento alternativa . Os detalhes dependem do tipo de VPN que você usa.
Agora, supondo que a interface virtual VPN seja chamada tun0
, com o endereço IP 10.0.0.2
, você precisará de uma regra que use a segunda tabela de roteamento (vamos chamá-la table2
) para aplicativos provenientes de 10.0.0.2
:
ip rule add from 10.0.0.2 table table2
e você também precisa ter certeza de que Squid
se vincula a 10.0.0.2
como seu endereço de saída: para isso, você precisa da diretiva
tcp_outgoing_address 10.0.0.2