Mi software tun2socks (Linux, Windows) crea una interfaz de red virtual que reenvía todas las conexiones TCP entrantes a través de un servidor proxy específico. Solo puede usar un proxy SOCKS y, de forma predeterminada, solo puede reenviar TCP, aunque UDP también puede reenviarse si puede ejecutar mi udpgw
reenviador en algún lugar detrás de SOCKS. Suponiendo que cumpla con esos requisitos, así es como puede configurarlo:
Primero cree la interfaz virtual y configúrela. En Linux:
openvpn --mktun --dev tun0 --user <your_user>
ifconfig tun0 10.0.0.1/24
O, en Windows, simplemente instale OpenVPN para obtener la interfaz virtual TAP-Win32 y asígnele IP 10.0.0.1, máscara de red 255.255.255.0.
Luego inicie tun2socks, que realiza el reenvío 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>
Aquí, 10.0.0.2
está la IP del enrutador virtual dentro de la interfaz virtual. Debe estar en la misma subred y diferente de la asignada a la interfaz virtual ( 10.0.0.1/24
). En Windows, en lugar de tun0
usar:
--tundev "tap0901:<display_name_of_TAP-Win32_device>:10.0.0.1:10.0.0.0:255.255.255.0"
En este punto, debería poder hacer ping al enrutador virtual 10.0.0.2
(en cuyo caso el tun2socks
programa en ejecución será el que responda). Para reenviar conexiones a través del proxy, todo lo que tiene que hacer es enrutarlas a través del dispositivo virtual. En Linux:
route add default gw 10.0.0.2 metric 0
O en Windows:
route add 0.0.0.0 mask 0.0.0.0 10.0.0.2 metric 0
La parte crítica aquí es que la ruta anula cualquier ruta predeterminada existente. Además, si su servidor SOCKS no está en la red local, debe agregar una ruta de excepción con una métrica más alta para evitar que las conexiones se enruten de nuevo a la interfaz virtual. Vea el enlace en la parte superior para más información.