Інструкція з встановлення та налаштування OpenVPN-сервера на базі Linux -дістрібутіва Debian 8 Jessie.
Для роботи OpenVPN необхідна підтримка TUN / TAP інтерфейсу на сервері. Якщо ви встановлюєте OpenVPN на фізичній машині, або використовуєте віртуалізацію KVM, в з цим не повинно виникнути проблем.
У разі використання OpenVZ, необхідно активувати підтримку TUN / TAP в налаштуваннях контейнера.
Перевіряємо підтримку в системі tun / tap-інтерфейсів:
Клієнти будуть використовувати на сервері аутентифікацію по ключу. Для цього створимо директорію в яку будуть скопійовані згенеровані ключі:
І скопіюємо в неї утиліти і конфіги для роботи з ключами:
переходимо в створену директорію:
У файлі vars можна налаштувати параметри ключів і сертифікатів. Даний пункт не обов'язковий і при бажанні його можна пропустити.
Міняємо (за бажанням) такі рядки:
Інше залишаємо за замовчуванням.
Після редагування vars инициализируем змінні і очищаємо каталог keys / server від старих сертифікатів і ключів:
створення сертифікатів
Створюємо кореневий сертифікат:
Генеруємо сертифікати сервера і клієнта:
Для кожного клієнта повинні бути згенеровані окремі ключі.
Генеруємо ключ Діффі - Хеллмана:
Створена ключ для tls-аутіфікаціі:
Всі згенеровані сертифікати і ключі знаходяться в директорії / etc / openvpn / easy-rsa / keys /
Копіюємо сертифікати і ключі сервера в директорію OpenVPN:
На клієнтську машину OpenVPN необхідно скопіювати наступні ключі та сертифікати:
client1.crt
client1.key
ca.crt
ta.key
Для розуміння призначення і розташування відповідних файлів, я зробив невелику таблицю:
Налаштування сервера OpenVPN
Приклад конфігураційного файлу OpenVPN розташований в директорії /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz. копіюємо і розпаковуємо його в / etc / openvpn:
# Cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz / etc / openvpn /
# Gzip -d /etc/openvpn/server.conf.gz
Залежно від потреб, змінюємо настройки сервера OpenVPN:
Ось моя конфігурація:
Таким чином шлюзом за замовчуванням для клієнтів у вас стане OpenVPN - сервер.
Створюємо директорію для клієнтських налаштувань і перезавантажуємо сервер:
Після завершення налаштування OpenVPN, перезавантажуємо сервер:
У разі успішного запуску OpenVPN в системі повинен з'явитися новий tun0 інтерфейс:
Наявність даного інтерфейсу означає, що OpenVPN Запущено і працює. Якщо з яких-небудь причин він не з'явився, то дивимося лог-файл на наявність помилок:
Налаштування маршрутизації для клієнтів OpenVPN
Після підключення клієнта до сервера OpenVPN, якщо він (клієнт) знаходиться в локальній мережі, потрібно додатково налаштувати маршрутизацію для доступу до ресурсів усередині мережі. Для цього створюємо файл в каталозі ccd з тим же ім'ям ключа клієнта:
Додамо в файл наступні параметри:
Перший рядок додає маршрут в локальну мережу клієнта. Простіше кажучи - говорить клієнту OpenVPN "ходити" в мережу 192.168.2.0 через сервер OpenVPN. Якщо ваша локалка пов'язана ще з будь-якої підмережею, то її також потрібно вказати.
Другий рядок задає DNS-сервер, який буде використовуватися після підключення (Якщо у вашій локальній мережі DNS-сервер відсутній, то можна вказати ns від Google - 8.8.8.8, або не вказувати взагалі.
Включаємо NAT на OpenVPN сервері
Щоб використовувати OpenVPN для виходу в інтернет, на сервері необхідно задати правило для маршрутизації трафіку з мережі OpenVPN в локальну мережу або мережу інтернет-провайдера і назад.
Застосовуємо зміни (завантажуємо змінні ядра):
Не забуваємо прописати правила iptables. Нам потрібно дозволити клієнтам з підмережі 10.10.10.0/24 доступ в інтернет, дозволити приймати пакети з інтернету і пропустити трафік клієнтів через NAT.
У першому рядку ми дозволяємо форвардного пакетів на інтерфейсі tun0.
Другий рядок дозволяємо форвардного з tun0 на eth0.
Третин - дозволяємо формардінг з eth0 на tun0.
Замініть eth0 на ім'я свого зовнішнього інтерфейсу. Слід зазначити, що MASQUERADE створює навантаження на процесор. Тому, краще використовувати SNAT:
Зберігаємо правила і додаємо їх в автозавантаження:
Налаштування клієнта OpenVPN
Якщо OpenVPN не встановлено, то встановимо його ::
Копіюємо на комп'ютер клієнта наступні ключі та сертифікати:
Потім переносимо їх в директорію OpenVPN - / etc / openvpn /
Копіюємо і розпаковуємо приклад конфігураційного файлу в вміст директорії OpenVPN:
і редагуємо його:
Додамо в вміст файлу наступні параметри:
Для Windows-машин потрібно покласти файл client.ovpn в папку:
Опції протоколу, шифрування і стиснення у клієнта і сервера повинні бути однакові.
На цьому настройка OpenVPN в Debian закінчена, перевіряємо його працездатність:
Підключаємося з клієнтської машини до OpenVPN-сервера. і пінгуем з неї OpenVPN-сервер:
Якщо пінг проходить, то все добре, якщо ж ні, то дивимося логи і перевіряємо настройки маршрутизації.
P.S. Якщо у вас на сервері динамічний IP, то можете скористатися скриптом заміни IP в конфіги OpenVPN. і подальшої його відправкою на email.