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