Блог компанії 3v-Hosting

Детальний посібник з налаштування особистого безкоштовного VPN для Linux та Windows

Адміністрування

13 хв.


Відмова від відповідальності: матеріал надано виключно в освітніх цілях. Використання VPN не повинно порушувати законодавство вашої країни або правила провайдерів послуг.

VPN (Virtual Private Network) - це технологія, яка дозволяє створити захищене з'єднання між вашим пристроєм і віддаленим сервером через інтернет. По суті, в цьому випадку трафік проходить через зашифрований тунель, завдяки чому його неможливо перехопити або проаналізувати на проміжних вузлах мережі. В інфраструктурній практиці VPN використовується не тільки для приховування IP-адреси, але і для організації віддаленого доступу до серверів, підключення до внутрішніх сервісів компанії, безпечного адміністрування і сегментації мереж.

У цьому матеріалі ми розберемо, як VPN працює на рівні архітектури, які протоколи сьогодні актуальні і чим вони відрізняються один від одного, як налаштувати підключення в Linux і Windows, а також як розгорнути власний VPN-сервер на базі простого VPS. Окремо розглянемо методи перевірки коректності з'єднання і типові помилки, з якими найчастіше стикаються при налаштуванні. Ця стаття орієнтована на технічну аудиторію - системних адміністраторів, DevOps-інженерів і користувачів Linux, яким важливо розуміти не тільки базову інформацію про VPN, але і розібратися в питанні трохи глибше.

 

 

 

 

Як працює VPN: клієнт і сервер

Будь-яка VPN-схема будується навколо двох компонентів - сервера і клієнта. VPN-сервер розгортається на віддаленій машині, найчастіше це VPS або виділений сервер в дата-центрі. VPN-клієнт встановлюється на пристрій користувача, наприклад на робочу станцію, ноутбук або навіть інший сервер, який повинен підключатися до захищеної мережі.

Коли встановлюється з'єднання, між клієнтом і сервером створюється зашифрований тунель. На рівні операційної системи з'являється віртуальний мережевий інтерфейс (наприклад, tun0 або wg0), через який починає маршрутизуватися трафік. Залежно від конфігурації змінюється маршрут за замовчуванням, і весь вихідний трафік відправляється не безпосередньо в інтернет, а через VPN-сервер. На стороні сервера виконується трансляція адрес (NAT), тому зовнішні ресурси бачать IP-адресу сервера, а не реальну адресу клієнта.

Якщо спростити архітектуру, то схема виглядає так, що ваш комп'ютер встановлює захищене з'єднання з VPN-сервером, а вже сервер виходить в інтернет від свого імені. Саме тому VPN часто використовується для ізоляції адміністративного доступу, організації захищених каналів між офісами або надання безпечного віддаленого підключення до внутрішніх сервісів.

Принципово важливо розрізняти підключення до публічного VPN-провайдера і розгортання власного VPN-сервера. У першому випадку ви використовуєте чужу інфраструктуру і довіряєте оператору сервісу.

У другому - орендуєте або використовуєте власний сервер, повністю контролюєте конфігурацію, логи і правила доступу. Для технічних завдань, пов'язаних з адмініструванням серверів, доступом до закритих сервісів або побудовою власної мережевої архітектури, самостійне розгортання VPN зазвичай є більш безпечним і передбачуваним рішенням.

VPN

 

 

 

 

Коли має сенс налаштовувати власний VPN

Розгортання власного VPN-сервера виправдано в тих випадках, коли потрібно не просто змінити IP-адресу, а побудувати контрольовану і передбачувану мережеву архітектуру. В першу чергу це актуально для віддаленого адміністрування серверів, наприклад замість відкриття SSH або панелей управління в інтернет можна обмежити доступ тільки через VPN-тунель, істотно скоротивши поверхню атаки.

Власний VPN також використовується для організації доступу до внутрішніх сервісів компаній і установ - баз даних, приватних API, панелей моніторингу або Kubernetes-кластерів, які не повинні бути публічно доступними. Такий підхід дозволяє тримати інфраструктуру прихованою і надавати доступ тільки авторизованим користувачам.

Крім того, VPN корисний для безпечного підключення до домашньої або офісної мережі з будь-якої точки світу. Це особливо актуально для розподілених команд і DevOps-інженерів, яким потрібен постійний доступ до тестових або production-середовищ. Окремий сценарій - це тестування додатків з різною геолокацією або перевірка поведінки сервісів при підключенні з інших країн.

Нарешті, власний VPN часто застосовується для сегментації доступу всередині інфраструктури, наприклад, коли частина сервісів повинна бути доступна тільки з внутрішньої мережі або через окремий адміністративний контур. У таких випадках VPN стає не інструментом анонімності, а повноцінним елементом мережевої безпеки.

 

 

 

 

 

Вибір протоколу: OpenVPN, SoftEther або WireGuard

При розгортанні VPN одним з ключових рішень стає вибір протоколу. Сьогодні в інфраструктурній практиці найчастіше використовуються OpenVPN, SoftEther і WireGuard. Кожен з них вирішує одне і те ж завдання, але вони відрізняються архітектурою, продуктивністю і складністю налаштування.

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

SoftEther - це більш універсальне і функціональне рішення, здатне працювати з декількома протоколами одночасно (включаючи L2TP/IPsec і SSL-VPN). Він підходить для складних корпоративних сценаріїв, однак його конфігурація і супровід вимагають більшої уваги і досвіду.

WireGuard - це сучасний протокол з мінімалістичною архітектурою і компактною кодовою базою. Він використовує сучасні криптографічні алгоритми, демонструє високу продуктивність і значно простіший в налаштуванні в порівнянні з OpenVPN. Завдяки своїй легкості та ефективності WireGuard часто вибирають для розгортання VPN на VPS, в хмарних середовищах і в DevOps-інфраструктурі.

 

Таблиця - Порівняння OpenVPN, SoftEther і WireGuard

Критерій OpenVPN SoftEther WireGuard
Архітектура SSL/TLS на базі OpenSSL Мультипротокольна платформа (SSL-VPN, L2TP/IPsec, SSTP тощо) Мінімалістичний протокол на базі UDP
Використовуваний транспорт UDP або TCP TCP, UDP, HTTPS Лише UDP
Криптографія Гнучко налаштовувана (TLS, сертифікати, PKI) SSL/TLS, IPsec та інші механізми Сучасні алгоритми (Curve25519, ChaCha20, Poly1305)
Продуктивність Середня, залежить від конфігурації Середня Висока, мінімальні накладні витрати
Навантаження на CPU Помірне Помірне Низьке
Простота налаштування Середня (багато параметрів) Складна (широкий функціонал) Проста, компактні конфігурації
Підтримка мобільних пристроїв Так Так Так
Підтримка маршрутизаторів Широка Обмежена Активно впроваджується
Масштабованість Добра Висока Відмінна для cloud/VPS
Підходить для site-to-site Так Так Так
Підходить для VPS Так Так Так
Зрілість рішення Понад 20 років Понад 10 років Активно розвивається з 2018 року
Типові сценарії Корпоративні VPN, широка сумісність Корпоративні мережі з різними протоколами VPS, DevOps, хмарні середовища, висока продуктивність

Підсумуємо: OpenVPN залишається універсальним і максимально сумісним рішенням, особливо в корпоративних середовищах з усталеною інфраструктурою. SoftEther підходить для складних мережевих сценаріїв, де потрібна підтримка декількох протоколів одночасно. Ну а WireGuard - найбільш сучасний і продуктивний варіант, який сьогодні найчастіше вибирають для розгортання VPN на VPS, в хмарі і в DevOps-інфраструктурі завдяки його швидкості, простоті і компактній архітектурі.

Тепер, коли ми ознайомилися з теорією, пора перейти до практики. І щоб не перевантажувати матеріал безліччю різних реалізацій, далі всі клієнтські приклади будуть наведені на базі OpenVPN, оскільки він є одним з найпоширеніших і сумісних протоколів.

 

 

 

 

Налаштування серверної частини (OpenVPN, Linux)

Серверна частина VPN майже завжди розгортається на Linux - найчастіше це або VPS, або виділений сервер в дата-центрі. У цьому розділі розглянемо базову установку OpenVPN на Ubuntu/Debian. Передбачається, що у вас вже є сервер з публічною IP-адресою і доступом по SSH.

 

Підготовка системи

Оновіть пакети:

sudo apt update && sudo apt upgrade -y

 

Встановіть OpenVPN та інструменти для роботи з сертифікатами:

sudo apt install openvpn easy-rsa -y

 

 

 

Налаштування PKI і генерація сертифікатів

OpenVPN використовує інфраструктуру відкритих ключів (PKI). Через easy-rsa створюються:

  • центр сертифікації (CA),
  • серверний сертифікат,
  • клієнтські сертифікати,
  • параметри Diffie-Hellman.

 

Приклад ініціалізації:

make-cadir ~/openvpn-ca cd ~/openvpn-ca

 

Далі налаштовується файл vars, створюється CA і генеруються ключі. У production-сценаріях рекомендується автоматизувати процес і зберігати приватні ключі поза публічним каталогом.

 

 

Базова конфігурація сервера

Файл конфігурації зазвичай розміщується в:

/etc/openvpn/server.conf 

 

Мінімальний робочий приклад:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
keepalive 10 120
cipher AES-256-GCM
user nobody
group nogroup

 

 

Увімкнення IP-форвардингу

Щоб сервер міг маршрутизувати трафік:

sudo nano /etc/sysctl.conf 

 

Додайте або розкоментуйте:

net.ipv4.ip_forward=1 

 

Застосуйте зміни:

sudo sysctl -p 

 

 

Налаштування NAT

Для виходу клієнтів в інтернет необхідно включити NAT:

sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

 

(інтерфейс eth0 замініть на ваш мережевий інтерфейс)

 

 

Відкриття порту в firewall

Якщо використовується UFW:

sudo ufw allow 1194/udp 

 

 

Запуск сервера

sudo systemctl enable openvpn-server@server sudo systemctl start openvpn-server@server

 

 

 

Створення клієнтського конфігураційного файлу (.ovpn)

Після генерації сертифікатів і ключів на сервері необхідно підготувати єдиний конфігураційний файл для клієнта. Зазвичай його називають, наприклад, client1.ovpn. Цей файл містить параметри підключення і вбудовані сертифікати, щоб користувачеві не довелося передавати кілька окремих файлів.

 

Базовий шаблон клієнтського конфігураційного файлу

Створіть файл:

sudo nano /etc/openvpn/client1.ovpn 

 

Приклад мінімального вмісту:

client

dev tun

proto udp

remote <SERVER_IP> 1194

resolv-retry infinite

nobind

persist-key

persist-tun

remote-cert-tls server

cipher AES-256-GCM

auth SHA256

verb 3

Замініть <SERVER_IP> на публічну IP-адресу вашого VPS або доменне ім'я.

 

Вбудовування сертифікатів у файл

Щоб зробити конфігурацію автономною, в неї зазвичай вбудовуються сертифікати та ключі.

В кінець файлу додаються блоки:

<ca>
-----BEGIN CERTIFICATE-----
(вміст ca.crt)
-----END CERTIFICATE-----
</ca>

 
<cert>
-----BEGIN CERTIFICATE-----
(вміст client1.crt)
-----END CERTIFICATE-----
</cert>

 
<key>
-----BEGIN PRIVATE KEY-----
(вміст client1.key)
-----END PRIVATE KEY-----
</key>

 

Вміст файлів можна отримати командою:

cat /path/to/ca.crt

cat /path/to/client1.crt

cat /path/to/client1.key 

Скопіюйте їх строго між відповідними тегами.

 

Якщо ви плануєте використовувати аутентифікацію за логіном/паролем, тоді в конфігурацію додається рядок:

auth-user-pass 

У цьому випадку при підключенні клієнту буде запропоновано ввести облікові дані.

 

Після запуску сервер готовий приймати підключення.

 

 

 

 

Налаштування клієнтської частини на Linux

Клієнтська частина також найчастіше встановлюється на Linux, тому з нього і почнемо. Це може бути робоча станція адміністратора або інший сервер.

 

Встановлення клієнта

sudo apt update sudo apt install openvpn -y

 

 

Отримання конфігураційного файлу

Як ми вже писали вище, у відповідному розділі, на сервері для клієнта генерується файл .ovpn, що містить:

  • адресу сервера,
  • порт,
  • сертифікати,
  • параметри шифрування.

 

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

/etc/openvpn/client.ovpn

 

 

Підключення

sudo openvpn --config /etc/openvpn/client.ovpn

 

При успішному з'єднанні з'явиться повідомлення:

Initialization Sequence Completed

 

 

 

Перевірка з'єднання

Перевірка зовнішньої IP:

curl ifconfig.me

 

Перевірка маршрутів:

ip route

 

З'явиться інтерфейс tun0, через який буде проходити трафік.

 

 

 

 

Налаштування клієнтської частини на Windows

Для підключення з Windows використовується OpenVPN GUI.

 

Встановлення

 

  1. Завантажте інсталятор OpenVPN.
  2. Встановіть програму.
  3. Запустіть OpenVPN GUI від імені адміністратора.

 

Додавання конфігурації

Скопіюйте файл .ovpn в каталог:

C:\Program Files\OpenVPN\config\

 

Підключення до сервера

  1. Клацніть на іконку OpenVPN в системному треї.
  2. Виберіть профіль.
  3. Натисніть Connect.
  4. Введіть логін і пароль, якщо потрібно.

 

При успішному підключенні іконка стане зеленою.

 

 

 

Часті помилки при налаштуванні VPN

При роботі з OpenVPN більшість проблем можна діагностувати за логами клієнта або сервера. Нижче наведені найбільш поширені помилки та їх типові причини.

 

TLS handshake failed

Одна з найчастіших помилок, що виникають на етапі встановлення з'єднання. Вона означає, що клієнт не може завершити TLS-рукостискання з сервером.

Можливі причини:

  • вказано неправильну IP-адресу або порт в параметрі remote;
  • сервер не запущений або слухає інший порт;
  • порт заблокований firewall (на сервері або на стороні провайдера);
  • невідповідність сертифікатів або використання сертифіката, не підписаного вашим CA;
  • розсинхронізація часу на сервері та клієнті.

В першу чергу варто перевірити, чи доступний сервер по потрібному порту і чи працює служба OpenVPN.

 

Authentication failed

Помилка аутентифікації виникає після встановлення з'єднання, якщо сервер відхиляє облікові дані клієнта.

Основні причини:

  • невірний логін або пароль;
  • в клієнтському конфігураційному файлі відсутній рядок auth-user-pass;
  • сервер налаштований на перевірку сертифікатів, а клієнт намагається підключитися тільки за логіном і паролем;
  • прострочений або відкликаний сертифікат клієнта.

Для діагностики слід вивчити лог сервера - саме там буде вказана конкретна причина відмови.

 

Cannot assign requested address

Ця помилка зазвичай пов'язана з проблемами мережевої конфігурації.

Найчастіше причиною є:

  • конфлікт маршрутів в таблиці маршрутизації;
  • некоректно налаштований пул адрес на сервері;
  • відсутність або пошкодження віртуального інтерфейсу tun;
  • відключений IP-forwarding на сервері.

У таких випадках варто перевірити наявність інтерфейсу (ip a), таблицю маршрутів (ip route) і параметри сервера.

 

Низька швидкість з'єднання

Якщо VPN працює, але швидкість значно нижча за очікувану, можливі такі причини:

  • використовується TCP замість UDP (TCP поверх TCP може викликати деградацію продуктивності);
  • неправильно підібраний MTU, що призводить до фрагментації пакетів;
  • недостатні ресурси VPS (CPU або пропускна здатність);
  • висока затримка до сервера через географічну віддаленість.

Для оптимізації рекомендується використовувати UDP, підібрати коректне значення MTU і переконатися, що сервер має достатні ресурси для обробки шифрування трафіку.

 

 

 

 

Безпека VPN-сервера

Розгортання VPN - це тільки перший крок. Не менш важливо правильно захистити сам сервер, оскільки він стає точкою входу в вашу інфраструктуру. Неправильно налаштований VPN-сервер може створити більше ризиків, ніж відкритий порт.

В першу чергу рекомендується відключити аутентифікацію за паролем для SSH і використовувати тільки вхід за ключами. Це істотно знижує ймовірність успішного перебору облікових даних. У файлі /etc/ssh/sshd_config слід відключити PasswordAuthentication і перезапустити SSH-сервіс.

Доступ до сервера і самого VPN-порту повинен бути обмежений firewall. Не варто залишати відкритими зайві сервіси - дозвольте тільки необхідні порти (наприклад, 22 для SSH і 1194/udp для OpenVPN) і закрийте все інше за замовчуванням.

Додатково рекомендується налаштувати систему захисту від перебору - наприклад, fail2ban. Вона відстежує підозрілу активність в логах і тимчасово блокує IP-адреси, з яких йдуть спроби підбору паролів або некоректні підключення.

Сервер повинен регулярно оновлюватися. Уразливості в OpenSSL, ядрі Linux або самому OpenVPN можуть бути використані для атак, якщо система не підтримується в актуальному стані.

Особливу увагу слід приділити зберіганню приватних ключів і сертифікатів. Вони не повинні знаходитися в публічних каталогах, передаватися по незахищених каналах або зберігатися без резервної копії. В ідеалі приватні ключі центру сертифікації (CA) взагалі не повинні знаходитися на бойовому сервері після генерації клієнтських сертифікатів.

В інфраструктурному контексті VPN-сервер є елементом периметра безпеки. Тому його захист повинен бути порівнянний із захистом публічного веб-сервера або адміністративної панелі, а може бути і вище.

 

 

 

 

Висновки

VPN - це не інструмент для анонімності, а повноцінний механізм побудови захищеної мережевої архітектури. В рамках статті ми розглянули повний цикл завдань, від розгортання серверної частини на Linux до підключення клієнтів з Linux і Windows, а також торкнулися питань діагностики та безпеки.

Серверна частина майже завжди розгортається на Linux, оскільки саме там простіше керувати маршрутизацією, firewall, NAT і сертифікатами. Клієнтська частина може працювати на різних платформах, але в технічному середовищі найчастіше використовується Linux - як на робочих станціях адміністраторів, так і на проміжних серверах всередині інфраструктури. Windows-клієнт залишається зручним варіантом для робочих машин і змішаних середовищ.

Ми розібрали, як генерується клієнтський конфігураційний файл, як правильно організувати PKI, як перевірити коректність маршрутизації і зовнішнього IP після підключення. Окрему увагу приділили типовим помилкам і способам їх діагностики - це дозволяє значно скоротити час пошуку проблем при першому запуску.

Важливо розуміти, що VPN-сервер стає частиною периметра безпеки. Його необхідно захищати так само суворо, як і будь-який публічний сервіс, наприклад обмежувати доступ, використовувати ключову аутентифікацію, регулярно оновлювати систему і контролювати логи.

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

Вразливості WordPress та як їх виявити
Вразливості WordPress та як їх виявити

Вразливості WordPress на практиці: як їх виявляють за допомогою WPScan, де шукати слабкі місця та які помилки найчастіше призводять до злому сайту та втрати кон...

10 хв
Налаштування WireGuard на VPS
Налаштування WireGuard на VPS

Покрокова інструкція з налаштування WireGuard на VPS: встановлення, генерація ключів, конфігурація сервера та клієнта, запуск VPN і вирішення типових проблем. Ш...

14 хв