====== 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.crt (/etc/openvpn/ca.crt) (раніше виконували копіювання цього файла в цю директорію)
# Встав сюди вміст файлу client1.crt (/etc/openvpn/easy-rsa/pki/issued/client.crt)
# Встав сюди вміст файлу client1.key (/etc/openvpn/easy-rsa/pki/private/client.key)
# Встав сюди вміст файлу ta.key (/etc/openvpn/ta.key) (раніше виконували копіювання цього файла в цю директорію)
Збережи (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-клієнтах.