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