Установка и настройка OpenVPN в CentOS
Руководство по установке и настройке OpenVPN на сервер под управлением Ubuntu доступно по ссылке. Рассмотрим установку OpenVPN на сервер под управлением ОС CentOS7.
OpenVPN - открытая программная реализация протокола VPN. Отличительной особенностью данного продукта является возможность создания зашифрованных туннелей, при этом существуют реализации под большинство популярных ОС, в том числе и для мобильных платформ.
Особенность репозитория CentOS такова, что OpenVPN в него не входит. Зато этот пакет можно получить используя репозиторий EPEL (Enterprise Linux), который управляется Fedora Project. Из данного репозитория, кстати, можно получить и другие пакеты, которые не входят в стандартный репозиторий CentOS. Установим командой:
Приступаем к установке OpenVPN. Устанавливаем пакет:
Приступаем к настройке сервера. Копируем server.conf:
Важно обратить внимание на “*”. Если выполнялась только одна попытка установить, то версию программы можно заменить символом “звездочки”. Если же было несколько попыток установки, возможно придется указать путь до файла полностью.
Перед генерацией ключей, внесем несколько изменений в файл конфигурации сервера.
Открываем server.conf любым редактором.
Находим строку “Diffie hellman parameters.” и ищем:
Если указано именно, так, то изменения вносить не нужно. Нюанс новой версии пакета заключается в том, что параметру уже соответствуют значения. В старых версиях там просто “dh”. Приводим к виду, как у нас.
Далее ищем строку “# Certain Windows-specific network settings”. раскомментируем один из параметров ниже (удалим символ “точка с запятой” (;) в начале строки). Должно получиться примерно так:
DNS-сервер можно указать свой, по желанию. Также, можно раскомментировать вторую строку, чтобы передавать клиентам еще и альтернативный DNS-сервер.
Для безопасности сервера будем запускать от пользователя nobody и группы nogroup. Раскомментируем строки:
Приступаем к созданию сертификатов.
С помощью установленного ранее пакета easy-rsa создадим ключи сервера и клиента.
Создаем директорию, в которой будут лежать ключи:
В только что созданную директорию easy-rsa копируем скрипты:
Переходим в каталог /etc/openvpn/easy-rsa/3/ и создаем скрипт vars
cd /etc/openvpn/easy-rsa/
Важно! Версия easy-rsa может быть другой, а следовательно путь необходимо будет скорректировать.
В открытый файл добавляем следующие строки:
Сохраняем файл и закрываем редактор.
Разрешаем исполнение файла:
Инициализируем PKI директорию и создадим CA сертификат:
Важно! При создании CA-сертификата скрипт запросит ввод пароля минимум из 4 символов. Введенный пароль следует запомнить.
Создаем ключ сервера.
Если не указывать атрибут “nopass”, то при создании ключа, скрипт запросит пароль.
Подписываем сертификат сервера:
Первым действием скрипт поинтересуется в нашей уверенности, отвечаем “Yes”. Затем запросит пароль, который был указан при создании CA-сертификата.
Проверяем, подписался ли сертификат:
Генерируем дополнительный ключ сервера ta.key:
Пользовательские сертификаты.
Процесс создания пользовательского сертификата идентичен созданию сертификата сервера.
1. Создаём без парольной защиты:
2. Подписываем сертификат:
3. Проверяем подпись:
Диффи-Хеллман.
Создаем сертификат:
В итоге будет создан файл dh.pem, а в конфиге dh2048.pem. Переименуем его позже, при копировании ключей.
Переносим сертификаты.
Копируем файлы ключей сервера. Для этого последовательно выполняем:
Копируем ключи клиента:
Копируем файл ключа Диффи-Хеллмана:
Важно! Целевое имя файла намеренно изменено под имя в конфиге.
Настраиваем маршрутизацию.
Для ускорения настройки, работы будут выполняться с iptables, а не c FirewallD. Последовательно выполняем:
Перед дальнейшей настройкой следует заглянуть вы названия интерфейсов с помощью команды:
Добавляем правило для NAT:
Как пример:
Разрешаем форвардинг пакетов между сетевыми интерфейсами. Для этого редактируем системный файл sysctl.conf:
В начале файла вставляем строку:
Сохраняем файл, закрываем редактор и перезапускаем сетевую службу командой:
Запускаем OpenVPN-сервер.
Для начала добавим службу в автозагрузку:
Запускаем OpenVPN:
Настройка клиента.
Сервер настроен, осталось выполнить настройку клиента, чтобы он мог подключиться.
Независимо от используемой ОС, будь то мобильная, серверная или домашняя версии, Linux или Windows, всегда понадобятся 4 файла:
- ca.crt;
- client.crt;
- client.key;
- client.ovpn
Первые 3 файла расположены в директории /etc/openvpn/client/, а client.ovpn придется создать. Для этого перейдем в каталог, где лежат все ключи клиента:
Создадим файл:
Заполним следующим содержимым:
Вместо IP_ADDRESS вставляем IP-адрес сервера, либо его доменное имя. Сохраняем файл сочетанием Ctrl + X и закрываем редактор.
Передаем файлы клиенту. Это возможно сделать, например, через SFTP или заархивировать каталог и “отдать” его через web-сервер.
Подключение клиента.
В зависимости от операционной системы скачиваем установочный файл либо выполняем инсталляцию из репозитория. Также OpenVPN можно получить с официального сайта.
Windows:
Для компьютеров под управлением Windows следует следует скачать дистрибутив продукта с официального сайта, полученные “четыре файла”, следует положить в папку, C:Program FilesOpenVPNconfig.
После запуска OpenVPN GUI, в системном трее появится значок программы. Кликаем по нему правой кнопкой мыши, выбираем Connect (подключиться).
MacOS:
С OpenVPN для MacOS немного сложнее. Следует воспользоваться open-source инструментом Tunnelblick. Ключи и конфигурационный файл следует положить в ~/Library/Application Support/Tunnelblick/Configurations. Либо дважды кликнуть по файлу конфигурации.
Linuix:
Следует выполнить установку из репозитория.
Для Debian/Ubuntu:
Для CentOS/OpenSUSE/Fedora:
После установки следует перейти в папку, в которой расположен конфигурационный файл с ключами и выполнить команду:
Для проверки работы сервера следует воспользоваться любым из сайтов, показывающих ваш IP-адрес.