Як підключатися до OpenVPN через проксі або Tor ?

13 травня 2023 3 хвилин Автор: Lady Liberty

Підключення до OpenVPN

VPN-з’єднання захищає ваше підключення до Інтернету. Він направляє весь ваш мережевий трафік через зашифрований тунель через VPN. Маршрутизація мережевого трафіку приховує вашу IP-адресу під час користування Інтернетом, замінюючи її розташуванням та IP-адресою з сервера VPN, роблячи його місцезнаходження невидимим. VPN-з’єднання також захищає від зовнішніх порушень. Існує багато сервісів, як безкоштовних та і на платній основі. Необхідно лише визначитись, який з них підходить саме Вам. Один з таких сервісів представлен у цій статті. Це OpenVPN. OpenVPN — це система віртуальної приватної мережі (VPN), яка реалізує методи створення безпечних з’єднань «точка-точка» або «сайт-сайт» у маршрутизованих або мостових конфігураціях і засоби віддаленого доступу. Він реалізує як клієнтські, так і серверні програми. OpenVPN дозволяє вузлам автентифікувати один одного за допомогою попередньо наданих секретних ключів, сертифікатів або імені користувача/пароля.

При використанні в конфігурації багатоклієнт-сервер це дозволяє серверу випускати сертифікат автентифікації для кожного клієнта, використовуючи підписи та центр сертифікації. OpenVPN, як правило, є найбезпечнішим протоколом, який ви можете знайти, і його настійно рекомендують наші експерти. Перевірки безпеки протоколу виявили лише незначні проблеми, які OpenVPN швидко вирішив. Коли ви використовуєте безпечну VPN, ви можете розширити цю приватну мережу, зробивши її віртуальною. Віддалені працівники, зможуть безпечно підключатися до вашої мережі за допомогою з’єднань VPN, зберігаючи конфіденційність в Інтернеті. У цій статті ми розповімо про всі особливості підключення до OpenVPN через проксі або Tor.

Особливості підключення OpenVPN через HTTP проксі

1. Використовуйте протокол TCP. Якщо ви плануєте підключатися до 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/



Спроби підключення до OpenVPN.

2. Використання проксі позначиться на продуктивності мережі. Використання проксі знижує швидкість передачі трафіку в мережі OpenVPN, а також збільшує пінг.

3. Налаштування Squid Налаштування проксі-сервера Squid для роботи з OpenVPN не вимагає якихось спеціальних опцій. Наприклад, для використання Squid у якості проксі-сервера для підключення до OpenVPN без аутентифікації достатньо вказати наступні рядки в конфігураційному файлі (замініть порт 44220 будь-якого іншого):

http_port 44220 acl portA localport 44220 http_access allow portA

Додатково ви можете налаштувати Basic або Digest автентифікацію – OpenVPN підтримує їх обидві

Як перевірити, що з’єднання з OpenVPN дійсно здійснюється через проксі

1. Журнали клієнтів і серверів
Журнали клієнта і сервера повинні містити численні посилання на IP і порт проксі-сервера. Наприклад, вихідні дані такі:

  • проксі: 157.245.118.66:44220
  • Сервер OpenVPN: 185.117.153.79:5300

Зразок клієнтського журналу: як бачите, підключення здійснюється з проксі 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



З’єднання з IP-адресою проксі.

2. Маршрут руху
При використанні з’єднань OpenVPN всі маршрути перенаправляються через IP-адресу сервера OpenVPN. Якщо підключення здійснюється через проксі, то в налаштуваннях маршруту користувача всі підключення відправляються через IP-адресу проксі-сервера.

Команда для виведення маршрутів:

ip route

Приклад маршрутів з відключеним з’єднанням OpenVPN:

default via 192.168.1.1 dev lo1 proto dcp metrics 600 192.168.1.0/24 dev lo1 proto kernel scope link src 192.168.1.chh metrics 600

Давайте подивимося маршрути на клієнтській машині, підключеній до сервера OpenVPN:

ip route

Як бачите, в маршрутах згадується 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 виглядає так:

sudo openvpn client2.ovpn

Він пропускає опцію –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 через проксі можна скористатися наступною командою – не потрібно вказувати параметри проксі в командному рядку:

sudo openvpn client2.ovpn

Підключення OpenVPN через HTTP-проксі з базовою аутентифікацією

Базова аутентифікація (крім IP-адреси і порту проксі потрібно в будь-якому випадку) вимагає логіна і пароля для доступу до проксі-сервера.

Ім’я користувача проксі-сервера та пароль не можуть бути вказані в командному рядку. Ці дані потрібно або помістити в файл з двома рядками:

  • КОРИСТУВАЧ
  • ПАРОЛЬ

Наприклад, логін і пароль поміщаються в FILE-AUTHENTICATION.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-ПРОКСІ ПОРТ-ПРОКСІКОРИСТУВАЧПАРОЛЬ

Якщо ви не вказали FILE-AUTHENTICATION.txt або розділ <http-proxy-user-pass>…</http-proxy-user-pass>, то логін і пароль підключення до проксі будуть запитані у вас в консолі.

Підключення OpenVPN через HTTP-проксі з аутентифікацією NTLM та Digest

В якості четвертого аргументу опції –http-proxy можна вказати метод аутентифікації, він може бути одним з відсутніх, базових або ntlm. Для автентифікації NTLM вкажіть ntlm, наприклад:

sudo openvpn –config client2.ovpn –http-proxy 157.245.118.66 44220 authfile.txt ntlm

Можливо, ви помітили, що немає можливості аутентифікації HTTP Digest, але такий вид аутентифікації підтримується. Він включений за допомогою прапорців auto або auto-nct, які повинні замінити аргумент FILE-AUTHENTICATION. Тобто виходить, що логін і пароль потрібно буде вказати в файлі .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 через мережу 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 це робиться командою:

sudo apt install tor

В Arch Linux, BlackArch, Manjaro установка виконується командою

sudo pacman -S tor

За замовчуванням, служба tor дозволяє вхідні з’єднання лише з localhost, тобто підключення з інших комп’ютерів не приймаються.

Відкрийте файл /etc/tor/torrc

sudo gedit /etc/tor/torrc

і додайте до нього рядок виду:

SOCKSPort ЗОВНІШНІЙ_IP:9050

Наприклад:

SOCKSPort 192.168.1.39:9050

Запустіть служб tor:

sudo systemctl start tor

Ви можете додати tor в автозавантаження:

sudo systemctl enable 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 це робиться командою:

sudo apt install tor privoxy

В Arch Linux, BlackArch, Manjaro установка виконується командою

sudo pacman -S tor privoxy

Для налаштування Privoxy на комп’ютері, який буде виконувати роль проксі через Tor, файл /etc/privoxy/config

sudo gedit /etc/privoxy/config

додайте рядок:

forward-socks5t / 127.0.0.1:9050 .

За замовчуванням Privoxy приймає вхідні з’єднання тільки з того самого комп’ютера, щоб Privoxy почав приймати підключення з-за, замініть рядок

listen-address 127.0.0.1:8118

на

listen-address :8118

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

Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.