My tun2socks программное обеспечение (Linux, Windows) создает виртуальный сетевой интерфейс, который перенаправляет все входящие TCP-соединения через указанный прокси-сервер. Он может использовать только прокси-сервер SOCKS, и по умолчанию может пересылать только TCP, хотя UDP также может быть перенаправлен, если вы можете запустить my udpgw
форвардер где-то за носками. Если вы соответствуете этим требованиям, вот как вы можете настроить его:
создать виртуальный интерфейс и настроить его. На Linux:
openvpn --mktun --dev tun0 --user <your_user>
ifconfig tun0 10.0.0.1/24
или, на Windows, просто установите OpenVPN, чтобы получить виртуальный интерфейс Tap-Win32, и назначьте ему IP 10.0.0.1, netmask 255.255.255.0.
затем запустите tun2socks, который выполняет фактическую пересылку:
badvpn-tun2socks --tundev tun0
--netif-ipaddr 10.0.0.2 --netif-netmask 255.255.255.0
--socks-server-addr <socks_server_address>:<socks_port>
здесь 10.0.0.2
является IP виртуального маршрутизатора внутри виртуального интерфейса. Он должен находиться в той же подсети, что и виртуальный интерфейс (10.0.0.1/24
). На Windows, вместо tun0
, использование:
--tundev "tap0901:<display_name_of_TAP-Win32_device>:10.0.0.1:10.0.0.0:255.255.255.0"
в этот момент Вы должны быть в состоянии пинговать виртуальный маршрутизатор 10.0.0.2
(в этом случае работает tun2socks
программа будет отвечать). Для пересылки соединений через прокси-сервер достаточно направить их через виртуальное устройство. На Linux:
route add default gw 10.0.0.2 metric 0
или на Windows:
route add 0.0.0.0 mask 0.0.0.0 10.0.0.2 metric 0
важной частью здесь является то, что маршрут переопределяет любой существующий маршрут по умолчанию. Кроме того, если ваш сервер SOCKS не находится в локальной сети, необходимо добавить маршрут исключения с более высокой метрикой, чтобы предотвратить маршрутизацию соединений обратно в виртуальный интерфейс. См. ссылку наверху для получения дополнительной информации.