Подключение к OpenVPN через прокси или Tor
Вся представленная информация несёт лишь ознакомительный характер и не призывает вас к действиям нарушающих закон! Мы помогаем вам защитить свои конфиденциальные данные.
Приветствуем всех участников нашего проекта "BLACK CRD"!
Не забудь вступить и подписаться:
Если вы с нами, то вы уже в какой то степени защищены.
Особенности подключения OpenVPN через HTTP прокси
Если вы планируете подключаться к OpenVPN через HTTP/HTTPS прокси, то используйте протокол TCP вместо UDP, в противном случае вы столкнётесь с ошибкой:
Options error: --http-proxy MUST be used in TCP Client mode (i.e. --proto tcp-client)
Даже если вы добавите опцию «--proto tcp-client» к команде подключения к OpenVPN серверу работающему на UDP, то вы успешно подключитесь к прокси-серверу, но попытки подключиться к OpenVPN окажутся неудачными. Из-за ошибки клиент будет постоянно пытаться переподключиться к OpenVPN:
2021-11-06 09:41:10 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
2021-11-06 09:41:10 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
2021-11-06 09:41:10 TCP/UDP: Preserving recently used remote address: [AF_INET]157.245.118.66:44220
2021-11-06 09:41:10 Socket Buffers: R=[131072->131072] S=[16384->16384]
2021-11-06 09:41:10 Attempting to establish TCP connection with [AF_INET]157.245.118.66:44220 [nonblock]
2021-11-06 09:41:10 TCP connection established with [AF_INET]157.245.118.66:44220
2021-11-06 09:41:10 Send to HTTP proxy: 'CONNECT 185.117.153.79:5300 HTTP/1.0'
2021-11-06 09:41:10 Send to HTTP proxy: 'Host: 185.117.153.79'
2021-11-06 09:41:10 HTTP proxy returned: 'HTTP/1.1 200 Connection established'
2021-11-06 09:41:12 TCP_CLIENT link local: (not bound)
2021-11-06 09:41:12 TCP_CLIENT link remote: [AF_INET]157.245.118.66:44220
2021-11-06 09:41:13 Connection reset, restarting [0]
2021-11-06 09:41:13 SIGUSR1[soft,connection-reset] received, process restarting
2021-11-06 09:41:13 Restart pause, 5 second(s)
2021-11-06 09:41:18 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
2021-11-06 09:41:18 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
2021-11-06 09:41:18 TCP/UDP: Preserving recently used remote address: [AF_INET]157.245.118.66:44220
2021-11-06 09:41:18 Socket Buffers: R=[131072->131072] S=[16384->16384]
2021-11-06 09:41:18 Attempting to establish TCP connection with [AF_INET]157.245.118.66:44220 [nonblock]
2021-11-06 09:41:18 TCP connection established with [AF_INET]157.245.118.66:44220
2021-11-06 09:41:18 Send to HTTP proxy: 'CONNECT 185.117.153.79:5300 HTTP/1.0'
2021-11-06 09:41:18 Send to HTTP proxy: 'Host: 185.117.153.79'
2021-11-06 09:41:18 HTTP proxy returned: 'HTTP/1.1 200 Connection established'
2021-11-06 09:41:20 TCP_CLIENT link local: (not bound)
2021-11-06 09:41:20 TCP_CLIENT link remote: [AF_INET]157.245.118.66:44220
2021-11-06 09:41:20 Connection reset, restarting [0]
2021-11-06 09:41:20 SIGUSR1[soft,connection-reset] received, process restarting
2021-11-06 09:41:20 Restart pause, 5 second(s)
2) Использование прокси скажется на производительности сети
Использование прокси снизит скорость передачи трафика в OpenVPN сети и также увеличит пинг.
3) Настройка Squid
Настройка прокси-сервера Squid для работы с OpenVPN не требует каких-то специальных опций. Например, для использования Squid в качестве прокси-сервера для подключения к OpenVPN без аутентификации достаточно указать следующие строки в конфигурационном файле (замените порт 44220 любой другой):
Дополнительно вы можете настроить Basic или Digest аутентификацию — OpenVPN поддерживает их обе.
Как проверить, что подключение к OpenVPN действительно выполняется через прокси
1) Журналы клиента и сервера
Журналы клиента и сервера должны содержать многочисленные упоминания IP и порта прокси-сервера.
К примеру, исходные данные такие:
Пример журнала клиента: как можно увидеть, подключение осуществляется с прокси 157.245.118.66:44220; на прокси сервер отправляются команды, содержащие упоминания VPN сервера 185.117.153.79:5300:
2021-11-06 11:07:25 TCP/UDP: Preserving recently used remote address: [AF_INET]157.245.118.66:44220
2021-11-06 11:07:25 Socket Buffers: R=[131072->131072] S=[16384->16384]
2021-11-06 11:07:25 Attempting to establish TCP connection with [AF_INET]157.245.118.66:44220 [nonblock]
2021-11-06 11:07:26 TCP connection established with [AF_INET]157.245.118.66:44220
2021-11-06 11:07:26 Send to HTTP proxy: 'CONNECT 185.117.153.79:5300 HTTP/1.0'
2021-11-06 11:07:26 Send to HTTP proxy: 'Host: 185.117.153.79'
2021-11-06 11:07:27 HTTP proxy returned: 'HTTP/1.1 200 Connection established'
2021-11-06 11:07:29 TCP_CLIENT link local: (not bound)
2021-11-06 11:07:29 TCP_CLIENT link remote: [AF_INET]157.245.118.66:44220
2021-11-06 11:07:29 TLS: Initial packet from [AF_INET]157.245.118.66:44220, sid=ae11f46a 0d3d585c
В журнале OpenVPN сервера написано, что подключение пришло от IP адреса прокси:
2021-11-06 11:13:07 us=508241 TCP connection established with [AF_INET]157.245.118.66:47930
2) Маршрут трафика
При использовании OpenVPN подключения все маршруты перенаправляются через IP OpenVPN сервера. Если же подключение выполняется через прокси, то в настройках маршрута пользователя все соединения отправляются через IP адрес прокси сервера.
Пример маршрутов с выключенным OpenVPN подключением:
default via 192.168.1.1 dev wlo1 proto dhcp metric 600
192.168.1.0/24 dev wlo1 proto kernel scope link src 192.168.1.44 metric 600
Посмотрим маршруты на клиентской машине подключённой к OpenVPN серверу:
Как можно увидеть, в маршрутах упоминается IP адрес 157.245.118.66, который является адресом прокси-сервера, а не сервера OpenVPN:
0.0.0.0/1 via 10.8.1.17 dev tun0
default via 192.168.1.1 dev wlo1 proto dhcp metric 600
10.8.1.1 via 10.8.1.17 dev tun0
10.8.1.17 dev tun0 proto kernel scope link src 10.8.1.18
128.0.0.0/1 via 10.8.1.17 dev tun0
157.245.118.66 via 192.168.1.1 dev wlo1
192.168.1.0/24 dev wlo1 proto kernel scope link src 192.168.1.44 metric 600
Подключение OpenVPN через HTTP прокси без аутентификации
Для подключения к удалённому хосту через HTTP необходимо использовать опцию --http-proxy и указать при ней по крайней мере два аргумента: адрес сервера и номер порта.
К примеру, команда для подключения к OpenVPN серверу напрямую выглядит так:
В ней опущена опция --config которая указывает на конфигурационный файл. Но при использовании других опций необходимо указать --config поскольку программа не сможет правильно интерпретировать аргументы. Таким образом, следующая команда идентична предыдущей:
sudo
openvpn --config client2.ovpn
Для подключения к OpenVPN через прокси используется команда вида:
sudo
openvpn --config client2.ovpn --http-proxy IP-ПРОКСИ ПОРТ-ПРОКСИ
Пример команды для подключения к OpenVPN через прокси (адрес прокси 157.245.118.66 и номер порта 44220) без проверки имени пользователя и пароля:
sudo
openvpn --config client2.ovpn --http-proxy 157.245.118.66 44220
Значение опции --http-proxy можно указать в конфигурационном файле .ovpn, например, если в файле client2.ovpn указать следующую строку:
http-proxy IP-ПРОКСИ ПОРТ-ПРОКСИ
http-proxy 157.245.118.66 44220
То для подключения к OpenVPN через прокси можно использовать следующую команду — указывать параметры прокси в командной строке уже не нужно:
Подключение OpenVPN через HTTP прокси с Basic аутентификацией
Для базовой аутентификации (кроме необходимых в любом случае IP адреса и порта прокси) требуются имя пользователя и пароль для доступа к прокси серверу.
Имя пользователя и пароль прокси нельзя указать в командной строке. Эти данные должны быть либо помещены в файл с двумя строчками:
Например, имя пользователя и пароль помещены в ФАЙЛ-АУТЕНТИФИКАЦИИ.txt, тогда в качестве третьего аргумента опции --http-proxy нужно указать путь до этого файла и команда подключения через прокси будет примерно следующей:
sudo
openvpn --config client2.ovpn --http-proxy IP-ПРОКСИ ПОРТ-ПРОКСИ ФАЙЛ-АУТЕНТИФИКАЦИИ.txt
sudo
openvpn --config client2.ovpn --http-proxy 157.245.118.66 44220 authfile.txt
Имя пользователя и пароль для аутентификации на прокси-сервере можно поместить в файл .ovpn используя следующий синтаксис:
Выше показано, как в конфигурационный файл добавить значение опции --http-proxy, таким образом, все настройки подключения к прокси можно собрать в файле .ovpn следующим образом:
http-proxy IP-ПРОКСИ ПОРТ-ПРОКСИ
Если вы не указали ФАЙЛ-АУТЕНТИФИКАЦИИ.txt или секцию <http-proxy-user-pass>…</http-proxy-user-pass>, то имя пользователя и пароль подключения к прокси у вас будет запрошен в консоли.
Подключение OpenVPN через HTTP прокси с NTLM аутентификацией
В качестве четвёртого аргумента опции --http-proxy можно указать метод аутентификации, им может быть один из none, basic или ntlm.
Для NTLM аутентификации укажите ntlm, например:
sudo
openvpn --config client2.ovpn --http-proxy 157.245.118.66 44220 authfile.txt ntlm
Подключение OpenVPN через HTTP прокси с Digest аутентификацией
Вы могли обратить внимание, что нет опции для HTTP Digest аутентификации, но этот вид аутентификации поддерживается. Она включается с помощью флагов auto или auto-nct, который должен заменить аргумент ФАЙЛ-АУТЕНТИФИКАЦИИ. То есть получается, что логин и пароль нужно будет указать в файле .ovpn или ввести вручную в консоли.
Настройки подключения к прокси с Digest аутентификацией в файле .ovpn:
http-proxy IP-ПРОКСИ ПОРТ-ПРОКСИ auto
Флаг auto делает так, что OpenVPN автоматически определяет метод аутентификации.
Флаг auto-nct (означает «no clear-text auth», то есть без аутентификации открытым текстом) инструктирует OpenVPN автоматически определить метод аутентификации, но отклонить слабые протоколы аутентификации, такие как HTTP Basic Authentication.
- http-proxy proxy.example.net 3128
- http-proxy proxy.example.net 3128 authfile.txt
- http-proxy proxy.example.net 3128 stdin
- http-proxy proxy.example.net 3128 auto basic
- http-proxy proxy.example.net 3128 auto-nct ntlm
Подключение OpenVPN через SOCKS прокси
Для подключения к OpenVPN серверу через SOCKS прокси используется опция --socks-proxy. У неё один обязательный аргумент — это сервер. При желании можно указать порт (по умолчанию 1080) и файл аутентификации. Файл аутентификации — это файл, содержащий имя пользователя и пароль в 2 строки, или stdin может использоваться для запроса с консоли.
Подключение OpenVPN через сеть Tor
Поскольку сеть Tor использует протокол SOCKS, то можно было бы подумать, что подключение к OpenVPN через сеть Tor является всего лишь частным случаем подключения через SOCKS прокси, но на практике нужно помнить, что сеть Tor не передаёт UDP трафик. Но это только начало.
Вы не можете использовать Tor как прокси для OpenVPN если Tor запущен на той же машине, с которой вы пытаетесь подключиться к серверу VPN. Чтобы понять, почему такое подключение в принципе невозможно, рассмотрим, что происходит при использовании VPN.
Когда мы подключаемся к VPN (без прокси или Tor), то на локальном компьютере устанавливаются новые маршруты:
- в маршруте по умолчанию весь трафик теперь идёт не на шлюз (роутер), а на IP адрес VPN сервера
- чтобы не оказаться запертым (на IP адрес VPN сервера невозможно попасть, не попав на роутер), добавляется ещё один маршрут: «весь трафик для IP адреса VPN сервера теперь перенаправляется на роутер». То есть для IP адреса VPN сервера делается исключение.
В случае подключения к VPN через прокси (допустим, через Tor), то добавляются следующие маршруты:
- первый как и раньше — весь трафик теперь идёт на IP адрес VPN сервера
- а второй отличается — делается точно такое же исключение, но для IP адреса прокси сервера
Так вот, если прокси сервер находится на другом компьютере, то это работает без проблем.
Но вот если указан LOOPBACK (localhost) IP адрес прокси сервера, то получается следующий набор правил:
- первое как обычно — весь трафик идёт на IP адрес VPN сервера
- второе — делается исключение для IP адреса прокси, но ведь это 127.0.0.1, то есть localhost.
То есть система сама себя запирает. Да, возможно подключиться к VPN через Tor даже если служба Tor запущена на этом же самом компьютере. Но сразу после этого VPN добавляет необходимые для его работы маршруты, которые намертво запирают движение трафика — он не может выйти с компьютера.
Эту проблему можно решить, если подключаться через Tor, запущенный на другом компьютере, пусть даже в той же локальной сети, пусть даже с использованием виртуальных машин. Пример рабочей конфигурации с виртуальной машиной: в качестве прокси с запущенным Tor выступает реальный компьютер, а подключение к OpenVPN через прокси-Tor выполняется из виртуальной машины. Обратный вариант — подключение к OpenVPN из реальной машины через виртуальную маширу-прокси работать не будет. Можно использовать две виртуальных машины, одна из которых будет прокси с запущенным Tor, а из второй будет делаться подключение к OpenVPN.
Именно из-за этой причины у дистрибутива Whonix две половинки — основная ОС и шлюз.
Можно использовать Tor в качестве прокси для VPN как:
- SOCKS прокси — в этом случае не понадобятся другие программы кроме Tor
- HTTP прокси — кроме Tor нужен ещё Privoxy
Подключение к серверу OpenVPN через Tor (SOCKS)
На том компьютере, который будет выполнять роль прокси через Tor, установите пакет tor.
На Debian, Kali Linux, Linux Mint, Ubuntu это делается командой:
В Arch Linux, BlackArch, Manjaro установка выполняется командой
По умолчанию служба tor разрешает входящие соединения только с localhost, то есть подключения с других компьютеров не принимаются.
и добавьте в него строку вида:
Вы можете добавить tor в автозагрузку:
Теперь вы можете подключаться к серверу OpenVPN через Tor, запущенный на удалённом компьютере:
sudo
openvpn --config client5.ovpn --socks-proxy 192.168.1.39 9050
Подключение к серверу OpenVPN через Tor (HTTP прокси через Privoxy)
Privoxy можно использовать в качестве переходника HTTP прокси → SOCKS прокси. То есть клиент OpenVPN будет подключаться к Privoxy как к HTTP прокси, а Privoxy будет перенаправлять трафик на Tor, который использует протокол SOCKS.
На том компьютере, который будет выполнять роль прокси через Tor, установите пакеты tor и privoxy.
На Debian, Kali Linux, Linux Mint, Ubuntu это делается командой:
В Arch Linux, BlackArch, Manjaro установка выполняется командой
Для настройки Privoxy на компьютере, который будет выполнять роль прокси через Tor, в файл /etc/privoxy/config
sudo
gedit /etc/privoxy/config
forward-socks5t / 127.0.0.1:9050 .
По умолчанию Privoxy принимает входящие соединения только с этого же самого компьютера, чтобы Privoxy начал принимать подключения из вне, замените строку
Если вы хотите, чтобы подключения принимались только из локальной сети, то укажите локальный IP адрес, например:
listen-address 192.168.1.20:8118
Запустите службы tor и privoxy:
sudo
systemctl start tor privoxy
Вы можете добавить эти службы в автозагрузку:
sudo
systemctl enable
tor privoxy
По умолчанию privoxy прослушивает 8118 порт, также укажите IP адрес компьютера, на котором запущены privoxy и Tor, например:
sudo
openvpn --config client5.ovpn --http-proxy 192.168.1.39 8118
Из-за специфики сети Tor, подключение может происходить не с первого раза, а соединение может быть медленным и нестабильным.
Пока я пишу для тебя новую статью, можешь почитать:
https://t.me/+fuTrkEzR5ThjMGYy
и посетить наш чат:
https://t.me/blackcardpro