====== 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-клієнтах.