OpenVPN
Повна детальна інструкція для встановлення OpenVPN на Ubuntu 22.04, EasyRSA 3.
Встановлення OpenVPN та EasyRSA
1) Оновлення системи
sudo apt update && sudo apt upgrade -y
2) Встановлення OpenVPN та необхідних пакетів
sudo apt install openvpn easy-rsa -y
Налаштування PKI (Сертифікати)
3) Копіювання EasyRSA в робочу директорію
sudo cp -r /usr/share/easy-rsa /etc/openvpn/ cd /etc/openvpn/easy-rsa
4) Ініціалізація PKI
sudo ./easyrsa init-pki
5) Створення CA (Центра сертифікації)
sudo ./easyrsa build-ca
• Коли спитає Common Name (CN), введи наприклад MyVPN-CA.
6) Генерація серверного ключа та сертифіката
sudo ./easyrsa gen-req server nopass sudo ./easyrsa sign-req server server
• На запит Sign the certificate? введи yes.
7) Генерація клієнтського сертифіката
sudo ./easyrsa gen-req client1 nopass sudo ./easyrsa sign-req client client1
На запит Sign the certificate? введи yes.
8) Генерація параметрів Diffie-Hellman
sudo ./easyrsa gen-dh
9) Генерація TLS-ключа для захисту від атак
sudo openvpn --genkey secret /etc/openvpn/easy-rsa/pki/ta.key
Налаштування OpenVPN-сервера
10) Копіювання сертифікатів у папку OpenVPN
sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem pki/ta.key /etc/openvpn/
11) Створення конфігураційного файлу сервера
sudo nano /etc/openvpn/server.conf
Встав вміст:
port 1194 proto udp dev tun ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt key /etc/openvpn/server.key dh /etc/openvpn/dh.pem tls-auth /etc/openvpn/ta.key 0 server 10.8.0.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 1.1.1.1" push "dhcp-option DNS 8.8.8.8" keepalive 10 120 cipher AES-256-CBC auth SHA256 persist-key persist-tun status /var/log/openvpn-status.log log-append /var/log/openvpn.log verb 3 explicit-exit-notify 1
Збережи (Ctrl + X, Y, Enter).
Налаштування маршрутизації
12) Включення IP Forwarding
sudo nano /etc/sysctl.conf
Знайди рядок: #net.ipv4.ip_forward=1
Зміни на:
net.ipv4.ip_forward=1
Збережи (Ctrl + X, Y, Enter), потім активуй зміни:
sudo sysctl -p
13) Налаштування iptables
Всі можливі правила які потрібні для роботи OpenVPN
# Дозволяємо маршрутизацію sudo sysctl -w net.ipv4.ip_forward=1 # Маскування (NAT) sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens5 -j MASQUERADE # Дозволяємо пересилати пакети між інтерфейсами sudo iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT sudo iptables -A FORWARD -d 10.8.0.0/24 -j ACCEPT # Дозволяємо вхідні з'єднання для OpenVPN sudo iptables -A INPUT -i ens5 -p udp --dport 1194 -j ACCEPT # Дозволяємо трафік між VPN та сервером sudo iptables -A INPUT -i tun0 -j ACCEPT # Дозволяємо відповіді на VPN-з'єднання sudo iptables -A OUTPUT -o tun0 -j ACCEPT
! ens5 заміни на свій інтерфейс
Для збереження правил назавжди використаєм:
sudo apt install iptables-persistent
! Під час установки пакету тобі буде запропоновано зберегти поточні правила. Тобі потрібно вибрати “Так” (Yes), щоб зберегти їх.
Якщо потрібно вручну зберегти:
sudo iptables-save> /etc/iptables/rules.v4
Запуск OpenVPN
14) Запуск сервера
sudo systemctl start openvpn@server
Переконайся, що VPN працює:
sudo systemctl status openvpn@server
15) Додавання в автозапуск
sudo systemctl enable openvpn@server
Налаштування клієнта
16) Генерація клієнтського файлу конфігурації
nano client.ovpn
Встав вміст (заміни YOUR_VPN_SERVER_IP на реальну IP-адресу VPS):
client dev tun proto udp remote YOUR_VPN_SERVER_IP 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server cipher AES-256-CBC auth SHA256 verb 3 key-direction 1 <ca> # Встав сюди вміст файлу ca.crt (/etc/openvpn/ca.crt) (раніше виконували копіювання цього файла в цю директорію) </ca> <cert> # Встав сюди вміст файлу client1.crt (/etc/openvpn/easy-rsa/pki/issued/client.crt) </cert> <key> # Встав сюди вміст файлу client1.key (/etc/openvpn/easy-rsa/pki/private/client.key) </key> <tls-auth> # Встав сюди вміст файлу ta.key (/etc/openvpn/ta.key) (раніше виконували копіювання цього файла в цю директорію) </tls-auth>
Збережи (Ctrl + X, Y, Enter).
17) Скачування файлів з сервера на клієнт (Linux, MacOS)
scp user@your-client-ip:/home/user/client.ovpn .
Підключення клієнта
На клієнті (Linux, Mac, Windows) запусти:
sudo openvpn --config client.ovpn
Готово! 🎉 Тепер твій VPN-сервер працює. 🚀
Додавання нового клієнського профіля на сервері OpenVPN
1) Перейти в директорію /easy-rsa
cd /etc/openvpn/easy-rsa
2) Генерація запиту на сертифікат для нового користувача: Використовуємо команду для генерації запиту на сертифікат і приватного ключа для нового користувача (наприклад, client2):
sudo ./easyrsa gen-req client2 nopass
3) Підписання сертифіката користувача: Тепер підписуємо цей запит сертифікаційним центром (CA):
sudo ./easyrsa sign-req client client2
Копіювання файлів на сервер
Після підписання сертифіката користувача, необхідно перемістити файли сертифіката, приватного ключа та інших необхідних файлів в каталог /etc/openvpn/client.
1. Переміщення файлів: Ви повинні перемістити наступні файли в каталог /etc/openvpn/client:
- Сертифікат користувача (
client2.crt). - Приватний ключ користувача (
client2.key).
Приклад команд для переміщення:
sudo cp /etc/openvpn/easy-rsa/pki/issued/client2.crt /etc/openvpn/client/ sudo cp /etc/openvpn/easy-rsa/pki/private/client2.key /etc/openvpn/client/
2. Далі створити файл клієнта .ovpn можна по прикладу в пункт 16 або просто скопіювати з готового.
3. Після цього можна використовувати конфіг-файл client2.ovpn в VPN-клієнтах.