Щороку лавиноподібно зростає кількість клієнтів хостингів, а найпопулярнішою хостинговою послугою є оренда Віртуального Приватного Сервера або ВПС. VPS-хостинг ...
Блог компанії 3v-Hosting
13 хв.
Відмова від відповідальності: матеріал надано виключно в освітніх цілях. Використання VPN не повинно порушувати законодавство вашої країни або правила провайдерів послуг.
VPN (Virtual Private Network) - це технологія, яка дозволяє створити захищене з'єднання між вашим пристроєм і віддаленим сервером через інтернет. По суті, в цьому випадку трафік проходить через зашифрований тунель, завдяки чому його неможливо перехопити або проаналізувати на проміжних вузлах мережі. В інфраструктурній практиці VPN використовується не тільки для приховування IP-адреси, але і для організації віддаленого доступу до серверів, підключення до внутрішніх сервісів компанії, безпечного адміністрування і сегментації мереж.
У цьому матеріалі ми розберемо, як VPN працює на рівні архітектури, які протоколи сьогодні актуальні і чим вони відрізняються один від одного, як налаштувати підключення в Linux і Windows, а також як розгорнути власний VPN-сервер на базі простого VPS. Окремо розглянемо методи перевірки коректності з'єднання і типові помилки, з якими найчастіше стикаються при налаштуванні. Ця стаття орієнтована на технічну аудиторію - системних адміністраторів, DevOps-інженерів і користувачів Linux, яким важливо розуміти не тільки базову інформацію про VPN, але і розібратися в питанні трохи глибше.
Будь-яка VPN-схема будується навколо двох компонентів - сервера і клієнта. VPN-сервер розгортається на віддаленій машині, найчастіше це VPS або виділений сервер в дата-центрі. VPN-клієнт встановлюється на пристрій користувача, наприклад на робочу станцію, ноутбук або навіть інший сервер, який повинен підключатися до захищеної мережі.
Коли встановлюється з'єднання, між клієнтом і сервером створюється зашифрований тунель. На рівні операційної системи з'являється віртуальний мережевий інтерфейс (наприклад, tun0 або wg0), через який починає маршрутизуватися трафік. Залежно від конфігурації змінюється маршрут за замовчуванням, і весь вихідний трафік відправляється не безпосередньо в інтернет, а через VPN-сервер. На стороні сервера виконується трансляція адрес (NAT), тому зовнішні ресурси бачать IP-адресу сервера, а не реальну адресу клієнта.
Якщо спростити архітектуру, то схема виглядає так, що ваш комп'ютер встановлює захищене з'єднання з VPN-сервером, а вже сервер виходить в інтернет від свого імені. Саме тому VPN часто використовується для ізоляції адміністративного доступу, організації захищених каналів між офісами або надання безпечного віддаленого підключення до внутрішніх сервісів.
Принципово важливо розрізняти підключення до публічного VPN-провайдера і розгортання власного VPN-сервера. У першому випадку ви використовуєте чужу інфраструктуру і довіряєте оператору сервісу.
У другому - орендуєте або використовуєте власний сервер, повністю контролюєте конфігурацію, логи і правила доступу. Для технічних завдань, пов'язаних з адмініструванням серверів, доступом до закритих сервісів або побудовою власної мережевої архітектури, самостійне розгортання VPN зазвичай є більш безпечним і передбачуваним рішенням.

Розгортання власного VPN-сервера виправдано в тих випадках, коли потрібно не просто змінити IP-адресу, а побудувати контрольовану і передбачувану мережеву архітектуру. В першу чергу це актуально для віддаленого адміністрування серверів, наприклад замість відкриття SSH або панелей управління в інтернет можна обмежити доступ тільки через VPN-тунель, істотно скоротивши поверхню атаки.
Власний VPN також використовується для організації доступу до внутрішніх сервісів компаній і установ - баз даних, приватних API, панелей моніторингу або Kubernetes-кластерів, які не повинні бути публічно доступними. Такий підхід дозволяє тримати інфраструктуру прихованою і надавати доступ тільки авторизованим користувачам.
Крім того, VPN корисний для безпечного підключення до домашньої або офісної мережі з будь-якої точки світу. Це особливо актуально для розподілених команд і DevOps-інженерів, яким потрібен постійний доступ до тестових або production-середовищ. Окремий сценарій - це тестування додатків з різною геолокацією або перевірка поведінки сервісів при підключенні з інших країн.
Нарешті, власний VPN часто застосовується для сегментації доступу всередині інфраструктури, наприклад, коли частина сервісів повинна бути доступна тільки з внутрішньої мережі або через окремий адміністративний контур. У таких випадках VPN стає не інструментом анонімності, а повноцінним елементом мережевої безпеки.
При розгортанні 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, оскільки він є одним з найпоширеніших і сумісних протоколів.
Серверна частина VPN майже завжди розгортається на Linux - найчастіше це або VPS, або виділений сервер в дата-центрі. У цьому розділі розглянемо базову установку OpenVPN на Ubuntu/Debian. Передбачається, що у вас вже є сервер з публічною IP-адресою і доступом по SSH.
Оновіть пакети:
sudo apt update && sudo apt upgrade -y
Встановіть OpenVPN та інструменти для роботи з сертифікатами:
sudo apt install openvpn easy-rsa -y
OpenVPN використовує інфраструктуру відкритих ключів (PKI). Через easy-rsa створюються:
Приклад ініціалізації:
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
Щоб сервер міг маршрутизувати трафік:
sudo nano /etc/sysctl.conf
Додайте або розкоментуйте:
net.ipv4.ip_forward=1
Застосуйте зміни:
sudo sysctl -p
Для виходу клієнтів в інтернет необхідно включити NAT:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
(інтерфейс eth0 замініть на ваш мережевий інтерфейс)
Якщо використовується UFW:
sudo ufw allow 1194/udp
sudo systemctl enable openvpn-server@server sudo systemctl start openvpn-server@server
Після генерації сертифікатів і ключів на сервері необхідно підготувати єдиний конфігураційний файл для клієнта. Зазвичай його називають, наприклад, 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, тому з нього і почнемо. Це може бути робоча станція адміністратора або інший сервер.
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 використовується OpenVPN GUI.
Встановлення
Скопіюйте файл .ovpn в каталог:
C:\Program Files\OpenVPN\config\
При успішному підключенні іконка стане зеленою.
При роботі з OpenVPN більшість проблем можна діагностувати за логами клієнта або сервера. Нижче наведені найбільш поширені помилки та їх типові причини.
Одна з найчастіших помилок, що виникають на етапі встановлення з'єднання. Вона означає, що клієнт не може завершити TLS-рукостискання з сервером.
Можливі причини:
remote;В першу чергу варто перевірити, чи доступний сервер по потрібному порту і чи працює служба OpenVPN.
Помилка аутентифікації виникає після встановлення з'єднання, якщо сервер відхиляє облікові дані клієнта.
Основні причини:
auth-user-pass;Для діагностики слід вивчити лог сервера - саме там буде вказана конкретна причина відмови.
Ця помилка зазвичай пов'язана з проблемами мережевої конфігурації.
Найчастіше причиною є:
tun;У таких випадках варто перевірити наявність інтерфейсу (ip a), таблицю маршрутів (ip route) і параметри сервера.
Якщо VPN працює, але швидкість значно нижча за очікувану, можливі такі причини:
Для оптимізації рекомендується використовувати UDP, підібрати коректне значення MTU і переконатися, що сервер має достатні ресурси для обробки шифрування трафіку.
Розгортання 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 на практиці: як їх виявляють за допомогою WPScan, де шукати слабкі місця та які помилки найчастіше призводять до злому сайту та втрати кон...
Покрокова інструкція з налаштування WireGuard на VPS: встановлення, генерація ключів, конфігурація сервера та клієнта, запуск VPN і вирішення типових проблем. Ш...
Що таке інфраструктура високої доступності. Принципи відмовостійкої архітектури, усунення SPOF, failover, реплікація даних і моніторинг. Як побудувати стабільни...