Meu software tun2socks (Linux, Windows) cria uma interface de rede virtual que encaminha todas as conexões TCP recebidas por meio de um servidor proxy especificado. Ele pode usar apenas um proxy SOCKS e, por padrão, pode encaminhar apenas o TCP, embora o UDP também possa ser encaminhado se você puder executar meu udpgw
encaminhador 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, basta instalar o OpenVPN para obter a interface virtual TAP-Win32 e atribuir-lhe 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
está o IP do roteador virtual dentro da interface virtual. Ele deve estar na mesma sub-rede e diferente daquela atribuída à 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"
Nesse ponto, você poderá 10.0.0.2
executar ping no roteador virtual (nesse caso, o tun2socks
programa em execução será o responsável por responder). Para encaminhar conexões por meio do proxy, tudo o que você precisa fazer é encaminhá-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 servidor SOCKS não estiver na rede local, você deverá adicionar uma rota de exceção com métrica mais alta para impedir que as conexões sejam roteadas de volta para a interface virtual. Veja o link na parte superior para obter mais informações.