OpenVPN
Вступ¶
OpenVPN — це безкоштовна віртуальна приватна мережа (VPN) із відкритим кодом. Ця стаття допоможе вам налаштувати OpenVPN з інфраструктурою відкритих ключів X509 (PKI). Для цього посібника потрібна система Rocky Linux із загальнодоступною IP-адресою, оскільки OpenVPN працює за моделлю клієнт/сервер. Найпростіший спосіб досягти цього — розгорнути віртуальний приватний сервер (VPS) через хмарного постачальника за вашим вибором. На момент написання статті Google Cloud Platform пропонує безкоштовний рівень для своїх екземплярів e2-micro. Якщо ви шукаєте найпростіше налаштування OpenVPN за допомогою VPN типу «точка-точка» (p2p) без PKI, зверніться до Static Key Mini-HOWTO.
Передумови та припущення¶
Мінімальні вимоги до цієї процедури:
- Можливість запускати команди від імені користувача root або використовувати
sudoдля підвищення привілеїв - Система Rocky Linux із загальнодоступною IP-адресою
Встановлення OpenVPN¶
Встановіть репозиторій Extra Packages for Enterprise Linux (EPEL):
sudo dnf install epel-release -y
Встановлення OpenVPN:
sudo dnf install openvpn -y
Налаштування центра сертифікації¶
Встановлення easy-rsa:
sudo dnf install easy-rsa -y
Створіть каталог easy-rsa в /etc/openvpn:
sudo mkdir /etc/openvpn/easy-rsa
Створіть символічне посилання на файли easy-rsa:
sudo ln -s /usr/share/easy-rsa /etc/openvpn/easy-rsa
Змініть каталог на /etc/openvpn/easy-rsa:
cd /etc/openvpn/easy-rsa
Запустіть сценарій easyrsa з параметром init-pki, щоб ініціалізувати PKI центру сертифікації:
sudo ./easy-rsa/3/easyrsa init-pki
Запустіть сценарій easyrsa з параметрами build-ca і nopass, щоб створити центр сертифікації без пароля:
sudo ./easy-rsa/3/easyrsa build-ca nopass
Створення сертифікатів¶
Запустіть сценарій easyrsa з параметрами gen-req і nopass, щоб створити сертифікат сервера без пароля:
sudo ./easy-rsa/3/easyrsa gen-req server nopass
Запустіть сценарій easyrsa з параметрами sign-req і server, щоб підписати сертифікат сервера:
sudo ./easy-rsa/3/easyrsa sign-req server server
Примітка
Ви можете повторити наведені нижче кроки стільки разів, скільки потрібно для додаткових клієнтів.
Запустіть сценарій easyrsa з параметрами gen-req і nopass, щоб створити клієнтські сертифікати без пароля:
sudo ./easy-rsa/3/easyrsa gen-req client1 nopass
Запустіть сценарій easyrsa з параметрами sign-req і client, щоб підписати клієнтські сертифікати без пароля:
sudo ./easy-rsa/3/easyrsa sign-req client client1
OpenVPN вимагає параметрів Diffie Hellman. Виконайте цю команду, щоб згенерувати їх:
sudo ./easy-rsa/3/easyrsa gen-dh
Налаштування OpenVPN¶
Після завершення створення PKI настав час налаштувати OpenVPN.
Скопіюйте файл зразка server.conf до /etc/openvpn:
sudo cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn
Використовуйте обраний редактор, щоб відкрити та записати в server.conf:
sudo vim /etc/openvpn/server.conf
Далі потрібно додати шляхи до файлів центру сертифікації, сертифіката сервера та ключа сервера до файлу конфігурації сервера OpenVPN.
Скопіюйте та вставте шляхи до файлів для ключів і сертифікатів у рядках 78-80:
Примітка
У Vim ви можете додати номери рядків до вашого поточного редагування за допомогою `:set nu`
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key # This file should be kept secret
Скопіюйте та вставте шлях до файлу Diffie Hellman у рядок 85 зразка файлу server.conf:
dh /etc/openvpn/easy-rsa/pki/dh.pem
OpenVPN використовує SSL за замовчуванням, але за бажанням може використовувати TLS. Цей посібник використовує SSL.
Закоментуйте значення пари ключів tls-auth ta.key у рядку 244:
#tls-auth ta.key 0 # This file is secret
Збережіть перед закриттям server.conf.
Налаштування брандмауера¶
OpenVPN за замовчуванням працює на порту UDP 1194. Ви будете використовувати firewalld, щоб дозволити трафіку OpenVPN надходити на сервер.
Встановлення firewalld:
sudo dnf install firewalld -y
Увімкнення firewalld:
sudo systemctl enable --now firewalld
Дозвольте OpenVPN через брандмауер, додавши його як службу:
sudo firewall-cmd --add-service=openvpn --permanent
Увімкніть трансляцію мережевих адрес (NAT) і приховайте публічні IP-адреси клієнтів, додавши правило маскараду до брандмауера:
sudo firewall-cmd --add-masquerade --permanent
Перезавантажте брандмауер:
sudo firewall-cmd --reload
Налаштування маршрутизації¶
Дозвольте IP-переадресацію за допомогою такої команди:
sudo sysctl -w net.ipv4.ip_forward=1
Запуск сервера OpenVPN¶
Відповідно до документації OpenVPN, "найкраще спочатку запустити Сервер OpenVPN з командного рядка":
sudo openvpn /etc/openvpn/server.conf
Після запуску OpenVPN натисніть Ctrl + Z, а потім відправте завдання у фоновий режим:
bg
Налаштування та запуск клієнта¶
Окрім сервера, для роботи потрібно встановити OpenVPN на всіх клієнтах. Установіть OpenVPN на клієнті, якщо ви ще цього не зробили:
sudo dnf install openvpn -y
Створіть нові каталоги для зберігання ключів клієнта, сертифікатів і файлу конфігурації:
sudo mkdir -p /etc/openvpn/pki`
Тепер скопіюйте ключі та сертифікати за допомогою безпечного транспортного засобу та помістіть їх у папку /etc/openvpn/pki. Це можна зробити за допомогою протоколів SFTP або SCP. Перегляньте посібник Rocky Linux відкритий і закритий ключ SSH, щоб налаштувати доступ SSH.
Це необхідні сертифікати та ключі, необхідні для конфігурації клієнта та їхніх шляхів до файлів на сервері:
- ca.crt
- client1.crt
- client1.key
Після збереження необхідних сертифікатів і ключів у /etc/openvpn/pki скопіюйте зразок файлу client.conf до /etc/openvpn:
sudo cp /usr/share/doc/openvpn/sample/sample-config-files/client.conf /etc/openvpn
Відкрийте client.conf за допомогою редактора на ваш вибір:
sudo vim /etc/openvpn/client.conf`
Зіставте шляхи файлів необхідних сертифікатів і ключів до файлу конфігурації клієнта. Ви можете зробити це, скопіювавши та вставивши рядки тексту в рядки 88-90 файлу зразка:
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/client1.crt
key /etc/openvpn/pki/client1.key
Вам також потрібно буде встановити ім’я хоста або IP-адресу сервера. Ви можете залишити стандартний UDP-порт 1194. У файлі зразка це в рядку 42:
remote server 1194
Збережіть перед виходом з client.conf.
Запустіть OpenVPN на клієнті:
sudo openvpn /etc/openvpn/client.conf
Після запуску OpenVPN натисніть Ctrl + Z і відправте завдання у фоновий режим:
bg
Виконайте команду нижче, щоб переглянути завдання, що виконуються у фоновому режимі:
jobs
Надішліть тестовий пінг на сервер. За умовчанням його приватна адреса 10.8.0.1:
ping 10.8.0.1
Висновок¶
Тепер у вас має бути запущений власний сервер OpenVPN! За допомогою цієї базової конфігурації ви забезпечили приватний тунель для зв’язку ваших систем через ширший Інтернет. Однак OpenVPN можна налаштувати, і цей посібник залишає багато чого для уяви. Ви можете глибше вивчити OpenVPN, відвідавши їхній веб-сайт. Ви також можете дізнатися більше про OpenVPN прямо у вашій системі - man openvpn - за допомогою сторінки довідки.
Author: Joseph Brinkman
Contributors: Steven Spencer, Ganna Zhyrnova