Мой tun2socks программное обеспечение (Linux, Windows) создает виртуальный сетевой интерфейс , который передает все входящие TCP соединения через указанный прокси - сервер. Он может использовать только прокси-сервер SOCKS и по умолчанию может только пересылать TCP, хотя UDP также может быть перенаправлен, если вы можете запустить мой сервер udpgw
пересылки где-то за SOCKS. Предполагая, что вы соответствуете этим требованиям, вот как вы можете настроить его:
Сначала создайте виртуальный интерфейс и настройте его. В Linux:
openvpn --mktun --dev tun0 --user <your_user>
ifconfig tun0 10.0.0.1/24
Или в Windows просто установите OpenVPN, чтобы получить виртуальный интерфейс TAP-Win32, и назначьте ему IP 10.0.0.1, маску сети 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 не находится в локальной сети, вы должны добавить маршрут исключения с более высокой метрикой, чтобы предотвратить перенаправление соединений обратно в виртуальный интерфейс. Смотрите ссылку вверху для получения дополнительной информации.