bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Налаштування` -> `налаш

calendar_month Aug 10, 2026 schedule 25 хв. читання visibility 380 переглядів
Установка и настройка OpenVPN Server на VPS: развёртывание корпоративного VPN-сервера
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Установка та налаштування OpenVPN Server на VPS: розгортання корпоративного VPN-сервера

TL;DR

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

  • Розгорнемо OpenVPN сервер на Ubuntu 24.04 LTS з використанням Easy-RSA 3.x для керування PKI.
  • Налаштуємо серверний та клієнтський конфіги, забезпечивши надійне шифрування (AES-256-GCM) та автентифікацію (TLS-Auth).
  • Встановимо та налаштуємо брандмауер UFW, а також правила NAT для маршрутизації трафіку через VPN.
  • Реалізуємо базові заходи безпеки сервера, такі як SSH-ключі, Fail2ban та автоматичні оновлення.
  • Розробимо стратегію резервного копіювання ключових компонентів OpenVPN та надамо скрипт для автоматизації.
  • Розглянемо типові проблеми та їх рішення, а також відповімо на поширені запитання щодо OpenVPN.

Що ми налаштовуємо і навіщо

Схема: Що ми налаштовуємо і навіщо
Схема: Що ми налаштовуємо і навіщо

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

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

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

Альтернативи та чому Self-Hosted на VPS

Існує кілька підходів до організації VPN:

  • Хмарні керовані VPN-сервіси (Cloud-Managed VPN): Такі провайдери, як AWS VPN Client, Google Cloud VPN або Azure VPN Gateway, пропонують готові рішення. Вони зручні в керуванні, масштабовані та не вимагають глибоких знань у налаштуванні. Однак вони можуть бути дорожчими, пропонують менше гнучкості в кастомізації, і ви залежите від політики та інфраструктури стороннього провайдера.
  • Інші Self-Hosted рішення:
    • WireGuard: Сучасний, швидкий і простий у налаштуванні протокол VPN. Має меншу кодову базу, що теоретично підвищує безпеку. Чудово підходить для простих сценаріїв та високої продуктивності.
    • IPsec/IKEv2: Часто використовується в корпоративних мережах, підтримується більшістю операційних систем. Складніший у налаштуванні, але пропонує високий ступінь безпеки та продуктивності.
    • SoftEther VPN: Багатопротокольний VPN-сервер, що підтримує OpenVPN, L2TP/IPsec, MS-SSTP, EtherIP та SoftEther VPN протоколи.

Чому Self-Hosted OpenVPN на VPS?

Вибір OpenVPN на VPS виправданий з кількох причин:

  • Повний контроль: Ви повністю контролюєте сервер, його конфігурацію, дані та безпеку. Це критично важливо для корпоративних даних та дотримання політик конфіденційності.
  • Економічність: Вартість оренди VPS зазвичай значно нижча, ніж щомісячні платежі за керовані хмарні VPN-сервіси, особливо при невеликій або середній кількості користувачів.
  • Гнучкість та кастомізація: OpenVPN надзвичайно гнучкий. Ви можете налаштувати його під будь-які специфічні вимоги вашої мережі, використовувати різні методи автентифікації (сертифікати, логін/пароль, PAM), маршрутизацію та багато іншого.
  • Перевірена надійність: OpenVPN існує вже багато років, має величезну спільноту та вважається одним з найнадійніших та найбезпечніших VPN-протоколів. Його безпека була багаторазово перевірена та підтверджена.
  • Кросплатформність: Клієнти OpenVPN доступні практично для всіх операційних систем (Windows, macOS, Linux, Android, iOS), що спрощує підключення співробітників з будь-якими пристроями.

Налаштування OpenVPN на VPS — це ідеальний баланс між контролем, безпекою, гнучкістю та вартістю для більшості малих та середніх компаній, а також для індивідуальних користувачів, яким потрібен надійний захист.

Який VPS-конфіг потрібен для цього завдання

Схема: Який VPS-конфіг потрібен для цього завдання
Схема: Який VPS-конфіг потрібен для цього завдання

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

Мінімальні вимоги для OpenVPN сервера (до 10-20 користувачів)

  • CPU: 1 ядро (x86-64). OpenVPN не є сильно процесорозалежним, але шифрування вимагає певної потужності. Сучасні процесори з інструкціями AES-NI значно прискорюють процес.
  • RAM: 512 МБ - 1 ГБ. Для самої операційної системи та OpenVPN цього буде достатньо. При великій кількості клієнтів або інтенсивному логуванні може знадобитися більше.
  • Диск: 10-20 ГБ SSD. SSD значно прискорює роботу ОС та читання/запис логів. Основний простір займе ОС, сам OpenVPN та його конфігурації займають дуже мало місця.
  • Мережа: 100 Мбіт/с з необмеженим трафіком (або дуже великим лімітом). Пропускна здатність мережі — це основний фактор для VPN. Переконайтеся, що ваш тарифний план не має жорстких обмежень щодо трафіку або швидкості.

Рекомендований VPS-план для корпоративного використання (20-50+ користувачів)

Для більш серйозного корпоративного використання, де потрібна стабільність та висока пропускна здатність для більшої кількості користувачів, рекомендується наступний конфіг:

  • CPU: 2 vCPU (віртуальних ядра).
  • RAM: 2 ГБ - 4 ГБ. Це забезпечить запас для операційної системи, OpenVPN та потенційних додаткових сервісів (моніторинг, розширені логи).
  • Диск: 40 ГБ - 80 ГБ SSD. Достатньо для ОС, логів, резервних копій та інших утиліт.
  • Мережа: 1 Гбіт/с з необмеженим трафіком. Це критично важливо для забезпечення високої швидкості передачі даних для всіх підключених клієнтів.

Для таких характеристик можна розглянути VPS із зазначеними характеристиками.

Коли потрібен Dedicated Server, а не VPS

Dedicated server (виділений сервер) стає необхідним, коли:

  • Дуже велика кількість користувачів: Понад 100-200 одночасно підключених клієнтів, які активно використовують VPN.
  • Екстремально висока пропускна здатність: Якщо VPN використовується для передачі дуже великих обсягів даних (наприклад, стримінг відео, великі файлові обміни) на постійній основі, і 1 Гбіт/с на VPS стає недостатньо.
  • Специфічні вимоги до безпеки або обладнання: Якщо вам потрібен фізичний контроль над обладнанням, спеціальні апаратні модулі безпеки (HSM) або дуже висока продуктивність дискової підсистеми.
  • Гарантована продуктивність: На виділеному сервері ви не ділите ресурси з іншими користувачами, що дає передбачувану та стабільну продуктивність.

Для цих сценаріїв можна розглянути відповідний dedicated.

Локація VPS: на що впливає

Вибір локації VPS має суттєве значення:

  • Затримка (Latency): Чим ближче сервер до більшості ваших користувачів, тим нижчою буде затримка (пінг), що безпосередньо впливає на швидкість відгуку та загальний комфорт роботи. Для корпоративного VPN вибирайте локацію, максимально близьку до основного місцезнаходження ваших співробітників.
  • Законодавство: Закони про зберігання даних та конфіденційність інформації різняться в різних країнах. Переконайтеся, що вибрана локація відповідає вимогам вашої компанії та застосовним нормативним актам (наприклад, GDPR).
  • Доступність та пропускна здатність: Деякі регіони мають кращу мережеву інфраструктуру та вищу пропускну здатність до інших частин світу.

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

Підготовка сервера

Схема: Підготовка сервера
Схема: Підготовка сервера

Перш ніж приступити до встановлення OpenVPN, необхідно виконати початкове налаштування вашого VPS для забезпечення безпеки та стабільності. Ми будемо використовувати Ubuntu 24.04 LTS (Noble Numbat) як основу, оскільки це актуальна та підтримувана версія на 2026 рік.

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

Підключіться до вашого VPS за допомогою SSH, використовуючи надані провайдером дані (зазвичай логін root та пароль або SSH-ключ).


ssh root@ВАШ_IP_АДРЕС_VPS

2. Оновлення системи

Насамперед оновіть список пакетів та встановлені пакети до останніх версій. Це забезпечить наявність усіх актуальних виправлень безпеки та стабільності.


sudo apt update && sudo apt upgrade -y

Якщо ядро або інші критичні компоненти були оновлені, може знадобитися перезавантаження:


sudo reboot

Після перезавантаження перепідключіться до сервера.

3. Створення нового користувача з правами sudo

Робота під користувачем root небезпечна. Створимо нового користувача та надамо йому права sudo.


# Замініть 'ваш_пользователь' на бажане ім'я користувача
sudo adduser ваш_пользователь

Дотримуйтесь інструкцій, щоб встановити пароль та заповнити (або пропустити) додаткову інформацію.

Додайте нового користувача до групи sudo, щоб він міг виконувати команди з правами адміністратора:


sudo usermod -aG sudo ваш_пользователь

Тепер вийдіть із сесії root та увійдіть під новим користувачем:


exit
ssh ваш_пользователь@ВАШ_IP_АДРЕС_VPS

4. Налаштування SSH-ключів (рекомендується)

Для підвищення безпеки рекомендується використовувати SSH-ключі замість паролів. Якщо у вас ще немає пари SSH-ключів, згенеруйте їх на вашому локальному комп'ютері:


# На вашому локальному комп'ютері
ssh-keygen -t rsa -b 4096 -C "ваш[email protected]"

Скопіюйте публічний ключ на сервер:


# На вашому локальному комп'ютері
ssh-copy-id ваш_пользователь@ВАШ_IP_АДРЕС_VPS

Якщо ssh-copy-id недоступний, скопіюйте ключ вручну:


# На вашому локальному комп'ютері
cat ~/.ssh/id_rsa.pub

Потім на сервері (під вашим новим користувачем):


mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

Вставте скопійований публічний ключ у файл authorized_keys, збережіть та закрийте. Встановіть правильні права:


chmod 600 ~/.ssh/authorized_keys

Тепер ви можете відключити автентифікацію за паролем для SSH (опціонально, але рекомендується). Відредагуйте файл конфігурації SSH-демона:


sudo nano /etc/ssh/sshd_config

Знайдіть та змініть наступні рядки (або додайте, якщо відсутні):


# Відключити вхід для root (якщо ви створили користувача)
PermitRootLogin no
# Відключити автентифікацію за паролем (після перевірки входу за ключем!)
PasswordAuthentication no
# Дозволити автентифікацію за ключем
PubkeyAuthentication yes

Перезапустіть SSH-сервіс:


sudo systemctl restart sshd

ВАЖЛИВО: Перш ніж виходити з поточної сесії, відкрийте нову термінальну сесію та переконайтеся, що ви можете увійти за допомогою SSH-ключа під новим користувачем. Якщо щось піде не так, у вас все ще буде відкрита стара сесія для виправлення помилок.

5. Налаштування брандмауера (UFW)

UFW (Uncomplicated Firewall) — це зручна оболонка для iptables. Налаштуємо його для базового захисту сервера.


sudo apt install ufw -y

Дозвольте SSH-підключення (за замовчуванням порт 22). Якщо ви використовуєте інший порт для SSH, вкажіть його:


sudo ufw allow OpenSSH
# Або, якщо ви змінили порт SSH на, наприклад, 2222:
# sudo ufw allow 2222/tcp

Дозвольте підключення для OpenVPN. За замовчуванням OpenVPN використовує UDP порт 1194. Ми будемо використовувати цей порт.


sudo ufw allow 1194/udp

Увімкніть UFW:


sudo ufw enable

Підтвердіть дію, ввівши y. Перевірте статус брандмауера:


sudo ufw status verbose

6. Встановлення Fail2ban

Fail2ban сканує файли логів на предмет підозрілої активності (наприклад, невдалих спроб входу по SSH) та блокує IP-адреси зловмисників за допомогою правил брандмауера.


sudo apt install fail2ban -y

Створіть копію конфігураційного файлу за замовчуванням, щоб не втратити зміни під час оновлень:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Відредагуйте jail.local, щоб налаштувати параметри. Для більшості випадків налаштувань за замовчуванням для SSH (секція [sshd]) достатньо, але ви можете змінити bantime (час блокування) та findtime (період для виявлення спроб) за бажанням.


sudo nano /etc/fail2ban/jail.local

Переконайтеся, що секція [sshd] має enabled = true:


[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Перезапустіть Fail2ban:


sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Перевірте статус:


sudo systemctl status fail2ban
sudo fail2ban-client status sshd

Тепер ваш сервер надійно підготовлений до встановлення OpenVPN.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

У цьому розділі ми встановимо OpenVPN та Easy-RSA, а потім налаштуємо інфраструктуру відкритих ключів (PKI) для безпечної автентифікації. Ми будемо використовувати Easy-RSA версії 3.x, яка є актуальною на 2026 рік та забезпечує надійне керування сертифікатами.

1. Встановлення OpenVPN та Easy-RSA

Встановимо необхідні пакети з офіційних репозиторіїв Ubuntu 24.04 LTS.


# Оновлюємо список пакетів
sudo apt update
# Встановлюємо OpenVPN та Easy-RSA
sudo apt install openvpn easy-rsa -y

На момент 2026 року, найімовірніше, буде доступна OpenVPN версії 2.6.x або новішої, та Easy-RSA 3.x.

2. Підготовка PKI з Easy-RSA

Easy-RSA — це набір скриптів для створення та керування інфраструктурою відкритих ключів (PKI), яка необхідна для OpenVPN. Усі сертифікати та ключі зберігатимуться в окремій директорії.


# Створюємо директорію для PKI
sudo make-cadir /etc/openvpn/easy-rsa
# Переходимо до директорії Easy-RSA
cd /etc/openvpn/easy-rsa

3. Ініціалізація PKI

Ініціалізуємо PKI. Це створить необхідні піддиректорії та файли.


# Ініціалізація PKI
sudo ./easyrsa init-pki

4. Створення Центру сертифікації (CA)

Центр сертифікації (Certificate Authority, CA) — це кореневий сертифікат, який підписуватиме всі інші сертифікати (сервера та клієнтів). Він є основою довіри у вашій VPN-мережі.


# Створюємо CA. При запиті Common Name (CN) введіть щось осмислене, наприклад "Corporate OpenVPN CA"
sudo ./easyrsa build-ca nopass

nopass означає, що для кореневого ключа не буде встановлено пароль. Для максимальної безпеки можна встановити пароль, але тоді його доведеться вводити при кожній дії з CA.

5. Генерація сертифіката та ключа сервера

Тепер створимо запит на сертифікат для нашого OpenVPN сервера, підпишемо його за допомогою CA та згенеруємо ключ.


# Генеруємо запит на сертифікат сервера. При запиті Common Name (CN) введіть "server"
sudo ./easyrsa gen-req server nopass
# Підписуємо запит сертифіката сервера за допомогою CA
sudo ./easyrsa sign-req server server

При запиті підтвердження введіть yes.

6. Генерація параметрів Діффі-Хеллмана (DH)

Параметри Діффі-Хеллмана використовуються для безпечного обміну ключами між сервером та клієнтами. Цей процес може зайняти деякий час (до кількох хвилин залежно від потужності вашого VPS).


# Генеруємо параметри Діффі-Хеллмана
sudo ./easyrsa gen-dh

7. Створення ключа HMAC (tls-auth)

Ключ HMAC (або tls-auth) додає додатковий рівень безпеки, захищаючи TLS-рукостискання від атак типу "відмова в обслуговуванні" (DoS) та сканування портів. Він використовується для попередньої автентифікації пакетів.


# Генеруємо ключ HMAC
openvpn --genkey --secret /etc/openvpn/easy-rsa/pki/ta.key

8. Копіювання файлів PKI на сервер OpenVPN

Перемістимо всі згенеровані файли, необхідні для роботи OpenVPN сервера, до його конфігураційної директорії.


# Створюємо директорію для серверних конфігів OpenVPN
sudo mkdir -p /etc/openvpn/server
# Копіюємо CA-сертифікат
sudo cp pki/ca.crt /etc/openvpn/server/
# Копіюємо серверний сертифікат та ключ
sudo cp pki/issued/server.crt /etc/openvpn/server/
sudo cp pki/private/server.key /etc/openvpn/server/
# Копіюємо параметри Діффі-Хеллмана
sudo cp pki/dh.pem /etc/openvpn/server/dh.pem
# Копіюємо ключ HMAC
sudo cp pki/ta.key /etc/openvpn/server/ta.key

9. Генерація сертифіката та ключа клієнта (приклад для одного клієнта)

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


# Генеруємо запит на сертифікат клієнта. При запиті Common Name (CN) введіть "client1"
sudo ./easyrsa gen-req client1 nopass
# Підписуємо запит сертифіката клієнта за допомогою CA
sudo ./easyrsa sign-req client client1

При запиті підтвердження введіть yes. Ці файли (client1.crt, client1.key, ca.crt, ta.key) знадобляться клієнту для підключення. Ми зберемо їх в один файл .ovpn пізніше.

На цьому етапі основні компоненти OpenVPN встановлено, а PKI налаштовано. Тепер перейдемо до конфігурації самого сервера.

Конфігурація

Схема: Конфігурація
Схема: Конфігурація

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

1. Створення конфігураційного файлу сервера OpenVPN

Створимо файл server.conf у директорії /etc/openvpn/server/. Цей файл визначатиме, як працює ваш OpenVPN сервер.


sudo nano /etc/openvpn/server/server.conf

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


# Вказуємо, що це сервер
port 1194
proto udp
dev tun

# Файли CA, сертифіката сервера, ключа сервера
ca ca.crt
cert server.crt
key server.key
# Параметри Діффі-Хеллмана
dh dh.pem
# Ключ HMAC для захисту від DoS-атак та сканування портів
tls-auth ta.key 0

# Діапазон IP-адрес, з якого OpenVPN видаватиме адреси клієнтам
# Важливо: цей діапазон не повинен перетинатися з вашою локальною мережею
server 10.8.0.0 255.255.255.0

# Перенаправляти весь трафік клієнтів через VPN.
# Якщо ви хочете, щоб клієнти мали доступ лише до вашої корпоративної мережі,
# але не використовували VPN для всього інтернет-трафіку, закоментуйте цей рядок.
push "redirect-gateway def1 bypass-dhcp"

# DNS-сервери, які використовуватимуться клієнтами.
# Тут вказані публічні DNS від Cloudflare та Google.
# Можна вказати внутрішні DNS вашої корпоративної мережі.
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 8.8.8.8"

# Дозволяє клієнтам бачити один одного (необхідно, якщо ви хочете,
# щоб клієнти взаємодіяли між собою через VPN)
client-to-client

# Зберігає стан ключів та пристрою tun/tap при перезапусках,
# що допомагає уникнути розривів з'єднання при короткочасних проблемах.
keepalive 10 120
persist-key
persist-tun

# Тип шифрування та автентифікації. AES-256-GCM - сучасний та безпечний.
# SHA256 - для хешування.
cipher AES-256-GCM
auth SHA256

# Стиснення даних (lz4-v2 - сучасний та ефективний).
# Якщо у вас є проблеми з продуктивністю, спробуйте закоментувати цей рядок.
compress lz4-v2

# Вимикає привілеї root після запуску
user nobody
group nogroup

# Відкликання сертифікатів (Certificate Revocation List).
# Необхідно для відкликання скомпрометованих або застарілих клієнтських сертифікатів.
# Створимо цей файл пізніше.
crl-verify crl.pem

# Детальність логів (0-9). 3 - хороший баланс для налагодження.
verb 3
# Файл статусу та логів
status /var/log/openvpn-status.log
log /var/log/openvpn.log

Збережіть файл (Ctrl+O, Enter, Ctrl+X).

2. Увімкнення перенаправлення IP (IP Forwarding)

Щоб OpenVPN міг маршрутизувати трафік між клієнтами та інтернетом (або вашою внутрішньою мережею), необхідно увімкнути перенаправлення IP на сервері.


sudo nano /etc/sysctl.conf

Знайдіть рядок #net.ipv4.ip_forward=1, розкоментуйте його (видаліть #) або додайте, якщо його немає:


net.ipv4.ip_forward=1

Застосуйте зміни без перезавантаження:


sudo sysctl -p

3. Налаштування правил NAT (Masquerading) для UFW

Для того щоб клієнти OpenVPN могли виходити в інтернет через ваш VPS, необхідно налаштувати NAT (Network Address Translation) або "маскарадинг". UFW за замовчуванням не підтримує NAT безпосередньо, тому ми відредагуємо його конфігураційні файли.

Спочатку дізнайтеся ім'я вашого основного мережевого інтерфейсу. Зазвичай це eth0 або ens3.


ip a

У виводі знайдіть інтерфейс, який має вашу публічну IP-адресу (наприклад, eth0).


# Замініть 'eth0' на ім'я вашого основного мережевого інтерфейсу
sudo nano /etc/ufw/before.rules

Додайте наступні рядки на самий початок файлу, перед рядком filter:


# ПОЧАТОК ПРАВИЛ OPENVPN
# Дозволити трафік від клієнта OpenVPN до eth0 (замініть eth0 на ваш основний мережевий інтерфейс)
nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# КІНЕЦЬ ПРАВИЛ OPENVPN

Не забудьте замінити eth0 на ім'я вашого основного мережевого інтерфейсу, якщо воно інше. 10.8.0.0/24 — це підмережа OpenVPN, яку ми вказали в server.conf.

Тепер відредагуйте файл /etc/default/ufw, щоб дозволити форвардинг за замовчуванням.


sudo nano /etc/default/ufw

Знайдіть рядок DEFAULT_FORWARD_POLICY="DROP" і змініть його на:


DEFAULT_FORWARD_POLICY="ACCEPT"

Перезавантажте UFW, щоб застосувати всі зміни:


sudo ufw disable
sudo ufw enable

Перевірте статус UFW. Тепер у правилах повинні відображатися дозволені порти.


sudo ufw status verbose

4. Запуск та перевірка сервера OpenVPN

Тепер, коли все налаштовано, можна запустити сервер OpenVPN.


# Запускаємо сервіс OpenVPN, вказуючи ім'я нашого конфіга (server.conf)
sudo systemctl start openvpn-server@server
# Вмикаємо автозапуск OpenVPN при завантаженні системи
sudo systemctl enable openvpn-server@server

Перевірте статус сервісу, щоб переконатися, що він запущений без помилок:


sudo systemctl status openvpn-server@server

Вивід повинен містити Active: active (running). Якщо є помилки, перевірте логи:


sudo journalctl -u openvpn-server@server

Також переконайтеся, що OpenVPN прослуховує порт 1194 UDP:


sudo ss -tulnp | grep 1194

Ви повинні побачити рядок, що вказує на прослуховування порту 1194 процесом OpenVPN.

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

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


sudo nano /etc/openvpn/easy-rsa/generate_client_config.sh

Вставте наступний скрипт:


#!/bin/bash

# Скрипт для генерації клієнтських .ovpn файлів
# Запустіть з директорії /etc/openvpn/easy-rsa/

if [ -z "$1" ]; then
    echo "Використання: $0 <ім'я_клієнта>"
    exit 1
fi

CLIENT_NAME=$1
OVPN_DIR="/etc/openvpn/client_configs"
EASY_RSA_DIR="/etc/openvpn/easy-rsa"
SERVER_PUBLIC_IP=$(curl -s ifconfig.me) # Получаем публичный IP сервера

mkdir -p "$OVPN_DIR"

# Генеруємо клієнтський запит та ключ
cd "$EASY_RSA_DIR" || exit
./easyrsa gen-req "$CLIENT_NAME" nopass
./easyrsa sign-req client "$CLIENT_NAME"

# Збираємо всі необхідні файли в один .ovpn
echo "client" > "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "dev tun" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "proto udp" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "remote ${SERVER_PUBLIC_IP} 1194" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "resolv-retry infinite" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "nobind" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "persist-key" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "persist-tun" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "remote-cert-tls server" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "cipher AES-256-GCM" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "auth SHA256" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "compress lz4-v2" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "verb 3" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "explicit-exit-notify 1" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"

echo "" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
cat pki/ca.crt >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"

echo "" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
cat pki/issued/"${CLIENT_NAME}".crt >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"

echo "" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
cat pki/private/"${CLIENT_NAME}".key >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"

echo "" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
cat pki/ta.key >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"
echo "" >> "${OVPN_DIR}/${CLIENT_NAME}.ovpn"

echo "Клієнтський файл ${OVPN_DIR}/${CLIENT_NAME}.ovpn успішно створено."
echo "Скопіюйте його на клієнтський пристрій та використовуйте з OpenVPN клієнтом."

Зробіть скрипт виконуваним:


sudo chmod +x /etc/openvpn/easy-rsa/generate_client_config.sh

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


cd /etc/openvpn/easy-rsa
sudo ./generate_client_config.sh client1

Після створення файлу, його потрібно скопіювати на клієнтський пристрій (наприклад, за допомогою scp).


# На вашому локальному комп'ютері
scp ваш_пользователь@ВАШ_IP_АДРЕС_VPS:/etc/openvpn/client_configs/client1.ovpn ~/Downloads/

Тепер ви можете використовувати цей файл client1.ovpn з OpenVPN клієнтом на вашому пристрої.

6. Перевірка працездатності

Підключіться до VPN з клієнтського пристрою, використовуючи згенерований файл client1.ovpn. Після підключення:

  • Перевірте IP-адресу: Відкрийте сайт типу whatismyip.com. Ви повинні побачити IP-адресу вашого VPS.
  • Перевірте маршрутизацію: Спробуйте пропінгувати якийсь публічний ресурс (наприклад, ping google.com) та внутрішні ресурси, якщо вони доступні через VPN.
  • Перевірте DNS: Переконайтеся, що використовуються DNS-сервери, які ви вказали в server.conf (наприклад, 1.1.1.1).

На стороні сервера ви можете перевірити активні підключення:


sudo cat /var/log/openvpn-status.log

Це покаже список підключених клієнтів.

Резервні копії та обслуговування

Схема: Резервні копії та обслуговування
Схема: Резервні копії та обслуговування

Регулярне резервне копіювання та своєчасне обслуговування сервера OpenVPN є критично важливими для забезпечення його надійності, безпеки та безперервної роботи.

Що резервувати

Для сервера OpenVPN найбільш важливими є наступні компоненти:

  • PKI-директорія: /etc/openvpn/easy-rsa/. Містить ваш Центр Сертифікації (CA), усі згенеровані сертифікати та ключі (сервера та клієнтів), а також базу даних PKI. Це найважливіший компонент, без якого ви не зможете випускати нові сертифікати або відкликати старі.
  • Серверні конфіги: /etc/openvpn/server/. Містить server.conf, копії ca.crt, server.crt, server.key, dh.pem, ta.key.
  • CRL (Certificate Revocation List): /etc/openvpn/server/crl.pem (якщо ви його створили). Список відкликаних сертифікатів.
  • Клієнтські конфіги: /etc/openvpn/client_configs/. Містить згенеровані клієнтські .ovpn файли.

Для повного відновлення достатньо мати резервну копію директорії /etc/openvpn/.

Простий скрипт авторезервування

Створимо простий скрипт, який архівуватиме важливі директорії та зберігатиме їх у безпечному місці.


sudo nano /usr/local/bin/backup_openvpn.sh

Вставте наступний вміст:


#!/bin/bash

# Директорії для резервного копіювання
BACKUP_DIRS="/etc/openvpn"
# Директорія для зберігання резервних копій на сервері (можна змінити)
LOCAL_BACKUP_DIR="/var/backups/openvpn"
# Ім'я архіву
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
ARCHIVE_NAME="openvpn_backup_${TIMESTAMP}.tar.gz"

echo "Починаємо резервне копіювання OpenVPN до ${LOCAL_BACKUP_DIR}/${ARCHIVE_NAME}"

# Створюємо директорію для резервних копій, якщо її немає
mkdir -p "$LOCAL_BACKUP_DIR"

# Створюємо архів
sudo tar -czf "${LOCAL_BACKUP_DIR}/${ARCHIVE_NAME}" "$BACKUP_DIRS"

# Видаляємо старі резервні копії (залишаємо лише за останні 7 днів)
find "$LOCAL_BACKUP_DIR" -type f -name "openvpn_backup_*.tar.gz" -mtime +7 -delete

echo "Резервне копіювання завершено. Файл: ${LOCAL_BACKUP_DIR}/${ARCHIVE_NAME}"

# Опціонально: скопіювати резервну копію на віддалений S3 або інший сервер
# Приклад для rclone (потребує встановлення та налаштування rclone)
# rclone copy "${LOCAL_BACKUP_DIR}/${ARCHIVE_NAME}" "my-s3-remote:openvpn-backups/"

# Приклад для SCP на інший VPS (потребує налаштування SSH-ключів без пароля)
# scp "${LOCAL_BACKUP_DIR}/${ARCHIVE_NAME}" user@another_vps:/path/to/remote/backups/

Зробіть скрипт виконуваним:


sudo chmod +x /usr/local/bin/backup_openvpn.sh

Тепер налаштуємо cron для автоматичного виконання скрипта. Наприклад, щодня о 3:00 ночі.


sudo crontab -e

Додайте наступний рядок у кінець файлу:


0 3 * * * /usr/local/bin/backup_openvpn.sh > /dev/null 2>&1

Збережіть та закрийте. Тепер резервні копії створюватимуться автоматично.

Куди зберігати резервні копії

Зберігати резервні копії на тому ж сервері, що й вихідні дані, небезпечно. У разі виходу з ладу VPS ви втратите все. Рекомендується використовувати зовнішнє сховище:

  • S3-сумісне хмарне сховище: AWS S3, Backblaze B2, DigitalOcean Spaces, MinIO. Це надійні та масштабовані рішення. Використовуйте такі утиліти, як rclone для синхронізації.
  • Окремий VPS: Ви можете орендувати невеликий, дешевий VPS в іншій локації спеціально для зберігання резервних копій. Синхронізацію можна налаштувати через rsync по SSH.
  • Локальне сховище (для малих компаній): Якщо у вас є надійне локальне сховище (NAS, сервер) з хорошим інтернет-каналом, можна налаштувати scp або rsync для копіювання резервних копій туди.

Важливо: Завжди шифруйте резервні копії перед відправкою до зовнішнього сховища, якщо воно не пропонує шифрування на стороні сервера (наприклад, за допомогою gpg або restic/borg).

Оновлення: Rolling vs. Maintenance Window

Підтримка системи та OpenVPN в актуальному стані є критично важливою для безпеки.

  • Постійні оновлення (Rolling Updates):
    • ОС: Для Ubuntu LTS рекомендується використовувати автоматичні оновлення безпеки.
      
      sudo apt install unattended-upgrades -y
      sudo dpkg-reconfigure --priority=low unattended-upgrades
                          
      Виберіть "Yes" для автоматичної установки оновлень.
    • OpenVPN: Як правило, OpenVPN оновлюється разом із системою через apt upgrade. Однак, якщо ви використовуєте сторонні репозиторії або компілюєте з вихідних кодів, вам потрібно стежити за оновленнями вручну.
  • Вікно обслуговування (Maintenance Window):
    • Для великих оновлень ОС, зміни версії OpenVPN або інших критичних компонентів рекомендується планувати вікно обслуговування. Це дозволяє протестувати зміни на тестовому сервері, провести резервне копіювання, виконати оновлення та переконатися в працездатності до того, як користувачі будуть зачеплені.
    • Обов'язково повідомляйте користувачам про заплановані вікна обслуговування.

Керування CRL (Certificate Revocation List):

Якщо сертифікат клієнта був скомпрометований або користувач більше не повинен мати доступ, його сертифікат необхідно відкликати. Для цього використовується CRL. Після відкликання сертифіката, CRL потрібно оновити та скопіювати на сервер OpenVPN.


# Переходимо до директорії Easy-RSA
cd /etc/openvpn/easy-rsa
# Відкликаємо сертифікат клієнта (наприклад, client1)
sudo ./easyrsa revoke client1
# Генеруємо новий CRL
sudo ./easyrsa gen-crl
# Копіюємо CRL на сервер OpenVPN
sudo cp pki/crl.pem /etc/openvpn/server/
# Перезапускаємо OpenVPN, щоб він завантажив оновлений CRL
sudo systemctl restart openvpn-server@server

Регулярно перевіряйте актуальність CRL і за необхідності оновлюйте його.

Усунення несправностей + FAQ

У цьому розділі ми розглянемо типові проблеми, з якими можна зіткнутися при налаштуванні та експлуатації OpenVPN сервера, а також відповімо на поширені запитання.

Клієнт не може підключитися до VPN-сервера. Що перевіряти?

Проблема: Клієнт OpenVPN намагається підключитися, але з'єднання не встановлюється або постійно переривається.

Що перевірити:

  1. Доступність сервера: Переконайтеся, що ваш VPS доступний з інтернету. Спробуйте ping ВАШ_IP_АДРЕС_VPS з локальної машини.
  2. Брандмауер UFW: Перевірте, чи дозволено порт OpenVPN (за замовчуванням UDP 1194) в UFW на сервері.
    sudo ufw status verbose
    Переконайтеся, що є правило 1194/udp ALLOW IN Anywhere.
  3. Сервіс OpenVPN: Перевірте, чи запущено сервіс OpenVPN на сервері і чи немає помилок у його логах.
    sudo systemctl status openvpn-server@server
    sudo journalctl -u openvpn-server@server -f
    Шукайте помилки, пов'язані з файлами сертифікатів, ключів або конфігурації.
  4. Конфігурація клієнта: Переконайтеся, що в клієнтському .ovpn файлі вказано правильну IP-адресу сервера та порт. Перевірте, що всі секції (<ca>, <cert>, <key>, <tls-auth>) містять коректні дані.
  5. Синхронізація часу: Велика різниця в часі між клієнтом і сервером може викликати проблеми з TLS-рукостисканням. Переконайтеся, що час на обох машинах синхронізовано.

Низька швидкість VPN-з'єднання. Як діагностувати?

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

Що перевірити та як виправити:

  1. Навантаження на VPS: Перевірте завантаження CPU та RAM на вашому VPS. Високе завантаження може уповільнювати шифрування.
    top
    або
    htop
    Якщо CPU постійно завантажений, можливо, ваш VPS недостатньо потужний для поточної кількості користувачів.
  2. Мережевий канал VPS: Перевірте пропускну здатність мережевого каналу вашого VPS. Використовуйте утиліти типу iperf3 для тестування.
    sudo apt install iperf3 -y
    Запустіть iperf3 -s на сервері та iperf3 -c ВАШ_IP_АДРЕС_VPS на клієнті.
  3. Шифрування: Переконайтеся, що ваш OpenVPN сервер використовує сучасні та швидкі шифри (наприклад, AES-256-GCM). Застарілі або занадто "важкі" шифри можуть уповільнювати трафік.
  4. Стиснення: Якщо ви використовуєте стиснення (compress lz4-v2), спробуйте його вимкнути, закоментувавши рядок у server.conf та перезапустивши OpenVPN. У деяких випадках стиснення може знижувати продуктивність, особливо для вже стиснутих даних.
  5. Відстань до сервера: Чим більша фізична відстань між клієнтом і сервером, тим вища затримка та нижча потенційна пропускна здатність.

Немає доступу до інтернету або локальної мережі за сервером після підключення до VPN.

Проблема: Клієнт підключається до VPN, але не може отримати доступ до інтернету або до ресурсів у корпоративній мережі.

Що перевірити та як виправити:

  1. IP Forwarding: Переконайтеся, що IP-форвардинг увімкнено на сервері.
    sysctl net.ipv4.ip_forward
    Має бути net.ipv4.ip_forward = 1. Якщо ні, змініть /etc/sysctl.conf та виконайте sudo sysctl -p.
  2. Правила NAT/Masquerading: Перевірте правила NAT у /etc/ufw/before.rules. Переконайтеся, що рядок -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE присутній і eth0 замінено на ваш реальний мережевий інтерфейс. Після змін перезапустіть UFW.
  3. DHCP Options (DNS/Routes): Переконайтеся, що в server.conf правильно налаштовані push "redirect-gateway def1 bypass-dhcp" (для всього трафіку) та push "dhcp-option DNS ...".
  4. UFW для вихідного трафіку: Переконайтеся, що DEFAULT_FORWARD_POLICY="ACCEPT" у /etc/default/ufw.
  5. Маршрути до внутрішньої мережі: Якщо вам потрібен доступ до внутрішньої корпоративної мережі, а не тільки до інтернету, вам потрібно додати відповідні push "route X.X.X.X Y.Y.Y.Y" до server.conf та переконатися, що сервер OpenVPN має маршрут до цієї внутрішньої мережі.

Який VPS-конфіг мінімально підійде для OpenVPN сервера?

Мінімально для OpenVPN сервера, що обслуговує до 10-20 користувачів, підійде VPS з 1 vCPU, 512 МБ - 1 ГБ оперативної пам'яті, 10-20 ГБ SSD диска та мережевим каналом від 100 Мбіт/с з необмеженим трафіком. Цього буде достатньо для базових завдань та невисокого навантаження.

Що вибрати — VPS чи dedicated для цього завдання?

Вибір між VPS та виділеним сервером залежить від масштабу вашого завдання:

  • VPS: Ідеальний для більшості корпоративних потреб (до 50-100 користувачів), якщо вам не потрібна максимальна продуктивність або специфічне обладнання. Це більш економічне та гнучке рішення, що підходить для швидкого розгортання.
  • Dedicated Server: Необхідний для дуже великої кількості користувачів (понад 100-200), вкрай високої пропускної здатності (кілька Гбіт/с), суворих вимог до фізичного контролю обладнання або якщо вам потрібна гарантована продуктивність без впливу "сусідів" по гіпервізору.

Як додати нового користувача в OpenVPN?

Для додавання нового користувача необхідно згенерувати нову пару сертифікат/ключ та зібрати клієнтський .ovpn файл. Ви можете використовувати скрипт generate_client_config.sh, який ми створили раніше:


cd /etc/openvpn/easy-rsa
sudo ./generate_client_config.sh ім'я_нового_клієнта
    

Потім скопіюйте згенерований файл /etc/openvpn/client_configs/ім'я_нового_клієнта.ovpn на пристрій нового користувача.

Як відкликати сертифікат користувача?

Якщо сертифікат користувача скомпрометований або користувач більше не повинен мати доступ до VPN, його сертифікат слід відкликати. Це робиться за допомогою Easy-RSA:


cd /etc/openvpn/easy-rsa
sudo ./easyrsa revoke ім'я_клієнта
sudo ./easyrsa gen-crl
sudo cp pki/crl.pem /etc/openvpn/server/
sudo systemctl restart openvpn-server@server
    

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

OpenVPN не запускається або працює з помилками. Куди дивитися в першу чергу?

Якщо OpenVPN не запускається або ви спостерігаєте дивну поведінку, завжди починайте з перегляду логів. Основні джерела:

  • Логи системд: sudo journalctl -u openvpn-server@server -f (для перегляду в реальному часі).
  • Лог-файл OpenVPN: sudo tail -f /var/log/openvpn.log (шлях вказано в server.conf).

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

Висновки та наступні кроки

Схема: Висновки та наступні кроки
Схема: Висновки та наступні кроки

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

Подальші кроки для оптимізації та розширення вашої VPN-інфраструктури можуть включати:

  1. Моніторинг та логування: Налаштуйте більш просунуті системи моніторингу (наприклад, Prometheus + Grafana) для відстеження продуктивності сервера, мережевого трафіку та кількості підключених клієнтів. Централізоване логування (ELK Stack або Graylog) допоможе швидко виявляти та усувати проблеми безпеки.
  2. Розширена автентифікація: Розгляньте інтеграцію з LDAP/Active Directory або використання двофакторної автентифікації (2FA) для підвищення безпеки доступу до VPN.
  3. Автоматизація управління клієнтами: Для великих команд можна розробити скрипти або використовувати веб-інтерфейси для автоматичної генерації, відкликання та розповсюдження клієнтських сертифікатів, що значно спростить адміністрування.
  4. Оптимізація продуктивності: Вивчіть можливості тюнінгу ядра Linux та налаштувань OpenVPN для максимальної продуктивності, особливо якщо у вас багато користувачів або високий трафік.

Чи був цей гайд корисним?

Ваш відгук допомагає нам покращувати гайди.

Share this post:

Надішліть гайд тому, кому він може стати в пригоді.

Telegram VKVK WhatsApp Facebook LinkedIn XX

Встановлення та налаштування OpenVPN сервера на VPS: розгортання корпоративного
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.