Sobre o projeto

vpnonly é uma ferramenta leve de split-tunneling para macOS que roteia apenas os aplicativos especificados pelo usuário por uma VPN WireGuard. Diferentemente dos clientes VPN convencionais que tunelam tudo, o vpnonly mantém o navegador, apps bancários e serviços de streaming na conexão normal de internet, enviando somente os apps escolhidos pela saída VPN. A ferramenta funciona aproveitando o firewall PF embutido no macOS, capaz de corresponder pacotes por pertencimento a grupo Unix em vez de por aplicativo. Ao iniciar um app via vpnonly, ele executa o aplicativo com um grupo especial atribuído, então as regras PF direcionam o tráfego desse grupo pela interface WireGuard enquanto todo o resto continua normalmente. O projeto consiste em aproximadamente 350 linhas de scripts shell e um pequeno arquivo C de inicialização. Não requer kernel extension, não exige Network Extension entitlement e nunca modifica /etc/pf.conf nem a rota padrão. As regras residem em um anchor dedicado, e derrubar a VPN limpa apenas essas regras. Para suporte a WireGuard, ele incorpora o wireguard-go padrão do Homebrew. A versão CLI funciona com NordVPN imediatamente, mas provedores que usam cryptokey routing (Mullvad, Proton, servidores self-hosted) exigem o wireguard-go modificado que reescreve o endereço de origem interno — esse patch está incluído no app compilado para Mac mas ainda não na fórmula CLI. Limitações conhecidas incluem Safari e outros apps WebKit (eles encaminham conexões através de processos distintos do sistema que nunca carregam o grupo), consultas DNS (não tuneladas, então resoluções ainda saem normalmente) e IPv6 (bloqueado para apps agrupados ao invés de tunelado). Também não há reconexão automática caso o servidor cai. Instalação via Homebrew: brew tap kanishkdan/vpnonly && brew install vpnonly. Uma versão paga de app para Mac ($19 para dois Macs) também está disponível em vpnonly.app com recursos adicionais como toggles por app sem relançar, atualizações automáticas e seletor de país. O código-fonte sob app-engine/ é publicado com checksums para que usuários possam auditar exatamente o que roda como root antes de confiar. Todos os scripts privilegiados são curtos o suficiente para serem lidos em cinco minutos.