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