Meu software tun2socks (Linux, Windows) cria uma interface de rede virtual que encaminha todas as conexões TCP recebidas através de um servidor proxy especificado. Ele só pode usar um proxy SOCKS e, por padrão, só pode encaminhar o TCP, embora o UDP também possa ser encaminhado se você puder executar meu encaminhador udpgw
em algum lugar atrás do SOCKS. Supondo que você atenda a esses requisitos, veja como você pode configurá-lo:
Primeiro, crie a interface virtual e configure-a. No Linux:
openvpn --mktun --dev tun0 --user <your_user>
ifconfig tun0 10.0.0.1/24
Ou, no Windows, apenas instale o OpenVPN para obter a interface virtual do TAP-Win32 e atribua-lhe o IP 10.0.0.1, máscara de rede 255.255.255.0.
Em seguida, inicie o tun2socks, que faz o encaminhamento real:
badvpn-tun2socks --tundev tun0
--netif-ipaddr 10.0.0.2 --netif-netmask 255.255.255.0
--socks-server-addr <socks_server_address>:<socks_port>
Aqui, 10.0.0.2
é o IP do roteador virtual dentro da interface virtual. Ele deve estar na mesma sub-rede e diferente daquele atribuído à própria interface virtual ( 10.0.0.1/24
). No Windows, em vez de tun0
, use:
--tundev "tap0901:<display_name_of_TAP-Win32_device>:10.0.0.1:10.0.0.0:255.255.255.0"
Neste ponto, você deve conseguir executar o ping do roteador virtual 10.0.0.2
(nesse caso, o programa tun2socks
em execução será o único a responder). Para encaminhar conexões através do proxy, tudo o que você precisa fazer é rotea-las pelo dispositivo virtual. No Linux:
route add default gw 10.0.0.2 metric 0
Ou no Windows:
route add 0.0.0.0 mask 0.0.0.0 10.0.0.2 metric 0
A parte crítica aqui é que a rota substitui qualquer rota padrão existente. Além disso, se o seu servidor SOCKS não estiver na rede local, você precisará adicionar uma rota de exceção com uma métrica mais alta para evitar que as conexões sejam roteadas de volta para a interface virtual. Veja o link no topo para mais informações.