Software para split tunneling para Windows

~~Uso wireguard e é ótimo. No entanto, gostaria de fazer com que ele funcione apenas em alguns aplicativos (você provavelmente pode adivinhar o porquê).[/s]

Passei dias tentando fazer isso no Windows e não consegui, e soluções populares de VPN (Por exemplo, NordVPN) de split tunneling não funcionam porque são bloqueadas pelo meu ISP (não posso nem comprar o programa). Além disso, mudar os IPs no arquivo de configuração também não funciona para o Discord - tentei sem sucesso. Se alguém souber algo que eu possa fazer para split tunnel no Windows, seria muito apreciado. Obrigado~~

RESOLVIDO: Comprei um VPS na Azure na minha região e criei uma instância com PiVPN. Aumenta de 10 a 20 de ping em qualquer servidor que conecto (o que posso suportar) e a velocidade da rede diminuiu 10 megabits. Sempre mantenho este VPN conectado, e isso também desbloqueia sites bloqueados! Funciona ótimo para mim, pode não funcionar para você.

O VPS custa cerca de 9,50 dólares por mês, mais barato que soluções populares (Por exemplo, NordVPN), mas não possui múltiplas localizações. Por outro lado, esse VPN realmente funciona para mim, ao contrário do NordVPN! Mantém meu tráfego seguro e mascara meu IP. A solução não é ideal, mas funciona para mim. Você pode usar crédito do Azure para o servidor até acabar (crédito estudantil).

Consegui realizar split tunneling para “apps” com o aplicativo oficial do WireGuard no Windows.

Basicamente, habilitei a execução de scripts (precisa editar o registro) pois scripts não estão habilitados por padrão no WireGuard no Windows. Quando uma conexão é iniciada, o WireGuard adiciona uma nova rota padrão após o túnel com (baixa prioridade), além de definir a métrica da interface como (baixa prioridade). Isso significa que, embora tecnicamente o Windows envie o tráfego pelo túnel, provavelmente nunca acontecerá porque todas as outras rotas têm prioridade maior.

Depois usei um programa de proxy para criar um SOCKS5 local no Windows e então permiti que qualquer programa que queira passar pelo VPN use o proxy SOCKS5.

Demorei um tempo, mas consegui! Posso te passar os passos se estiver interessado?

Sempre quis saber como os provedores comerciais de VPN implementam algo assim no Windows. Como no Nord VPN, você pode selecionar os processos que precisam passar pelo VPN e deixar de fora os demais. Entendo que você pode fazer isso no Linux com namespace de rede, mas no Windows parece ser uma tecnologia diferente.

e execute apenas esses aplicativos na VM.

Isso é bem simples e posso fazer facilmente, mas não é ideal. Sempre executar uma cópia do Windows só para usar o BetterDiscord e ter o recurso de voz funcionando não é ideal.

Você também pode fazer ao contrário, com o host executando o cliente VPN e aplicativos que precisam do VPN, e a VM executando os aplicativos que não precisam do VPN. Mas você precisa configurar a rede para que a VM tenha acesso direto à rede externa – a maioria das ferramentas de virtualização que usam o Windows Desktop padrão usam a conexão da máquina host por padrão. Em Hyper-V, se o VPN estiver na VM, o switch padrão funcionará, mas se o VPN estiver no host, você precisa criar um switch externo e usá-lo para a VM.

Os aplicativos que não precisam do VPN seriam GTA, Risk of Rain 2, Minecraft, aplicativos que não deveriam estar rodando em uma VM devido ao desempenho piorado.

Idealmente, eu teria Linux (PopOS) e uma VM de Windows de 120 GB no meu SSD NVMe. Então eu usaria passthrough e jogaria todos meus jogos nisso, enquanto uso namespaces para fazer o Discord funcionar através do VPN no host, mas desisti após 10 dias tentando. Se você tiver outras soluções, me avise. Não me importo de colocar a mão na massa.

Essa é certamente a opção mais fácil.

Desculpe pela necropostagem, mas eu adoraria saber como fazer! Prefiro não usar soluções proprietárias como Wiresock, TunnlTo, ForceBindIP, etc., então encontrar sua solução após uma hora de pesquisa na internet me deu alguma esperança.

Obrigado. Isso me lembrou que tenho Proxifer, mas não o uso há um tempo. Problema resolvido!

Sim, não faz sentido para mim! Que feitiçaria essas empresas usam para fazer o split tunneling funcionar? Meu ISP está constantemente bloqueando o site da NordVPN, ExpressVPN e SurfShark – eles nem carregam, então usá-los não é uma opção.

Sim, claro, consegui isso no Windows, e como o wireguard do Windows não permite rodar scripts por padrão, você precisa alterar as chaves do registro conforme explicado no repositório oficial do Github deles. link acima.
Isso me permitiu adicionar scripts post-up e pre-down, toda vez que conecto ou desconecto usando um túnel específico no aplicativo oficial do wireguard com uma métrica de 9999. Basicamente, uma métrica de 9999 (baixa prioridade), além de definir a métrica da interface como 9999. Isso significa que, embora o Windows roteie o tráfego pelo túnel, provavelmente nunca acontecerá porque todas as outras rotas têm prioridade maior. Como comparação, a maioria das métricas de rota é menor que 500 (quanto menor, maior prioridade).
No mesmo script, copio o IP atribuído pelo provedor VPN e o echo em um arquivo de texto no local que você especificar no Windows. Com esse IP, uso um programa chamado 3proxy para criar uma porta SOCKS5 ou HTTP (prefiro SOCKS5) local no Windows.
Então você pode especificar qualquer programa para usar o IP localhost com o proxy socks5 que configurou no 3proxy.
Essa é a versão resumida! Espero que ajude!
Se você estiver interessado e quiser saber exatamente como fiz, posso criar um documento e enviar.

Existe uma maneira mais fácil de fazer isso no wireguard. Confira o wiresock em (https://www.wiresock.net)

O método que uso é longo!

Obrigado pela resposta!

Na verdade, tentei fazer por conta própria primeiro com base no seu comentário antigo. Usei o Dante proxy para rodar um SOCKS5 dentro do WSL, não funcionou e só deu timeout. Mas vejo que o 3proxy tem uma versão para Windows, vou conferir!

Também configurei a métrica da rota para 999, mas mesmo assim, roteava. Li em algum lugar que uma rota mais específica, como 10.X.X.X, é sempre preferida sobre o padrão 0.0.0.0 mesmo se a prioridade for baixa. Isso está certo? Você já enfrentou esse problema?

Obrigado pela ajuda. Ainda vou brincar um pouco mais por conta própria, mas se não conseguir, te incomodarei alguns dias depois :slight_smile:

Olá,

Respondi ao seu post com os passos de como fazer isso. Fique à vontade para olhar, pode te servir como guia. Estou curioso para saber como você configurou a métrica da rota? Você usou meu método ou fez manualmente?

Meu método não é uma solução confiável se você tem preocupações de segurança altas. Sim, limitar o IP como 10.X.X.X, como você mencionou, é bom, mas isso só funciona se você controlar ambos os lados (cliente e servidor). Se você tem um provedor de VPN, não há como controlar totalmente. Será apenas do lado do cliente.