Моє програмне забезпечення 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.2IP-адреса віртуального роутера всередині віртуального інтерфейсу. Він повинен бути в тій самій підмережі, що і відрізняється від тієї, призначеної самому віртуальному інтерфейсу ( 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 відсутній у локальній мережі, вам потрібно додати маршрут винятків з вищою метрикою, щоб запобігти маршрутизації з'єднань назад у віртуальний інтерфейс. Для отримання додаткової інформації див. Посилання вгорі.