OpenVPN Руководство по установке для новичков

Рассмотрим процесс установки OpenVPN на примере дистрибутива Debian 8.2. Задача состоит том, чтобы использовать сервер на базе OpenVPN в качестве шлюза для выхода в интернет. В результате мы получаем белый ip, можем обойти ограничения провайдера и дополнительно сжать и зашифровать весть трафик, который идет через сервер.

Область применения и преимущества OpenVPN

Область применения

  • Создание защищенных корпоративных сетей. Расстояние между узлами таких сетей не имеет значения.
  • Защита информации в открытых общественных сетях.
  • Подключение к Интернету нескольких хостов через общий шлюз.
  • Доступ к запрещенным веб-ресурсам.

Преимущества

  • Всё бесплатно. Большинство из нас не откажется от бесплатного Wi-Fi в кафе или в парке, но трафик, передаваемый по такому соединению, никак не защищен от перехвата. Бесплатное ПО OpenVPN направит его в закрытый туннель, поэтому ваши логины, пароли и другая секретная информация точно не утечет в чужие руки.
  • Чтобы сделать свою сеть защищенной, не нужно покупать дополнительное оборудование.
  • Весь передаваемый трафик сжимается, что обеспечивает высокую скорость связи (выше, чем при использовании IPSec).
  • Гибкие настройки ПО позволяют сконфигурировать VPN любой сложности.
  • Использование нескольких надежных алгоритмов шифрования обеспечивает очень высокую степень защиты данных.
  • Не требуется перенастройки или отключения файерволов (сетевых экранов) и NAT (технологии преобразования ИП-адресов в сетях TCP/IP).
  • Протокол поддерживают все основные операционные системы.
  • Для установки и настройки программного обеспечения не нужны глубокие знания сетевых технологий, и даже у неспециалиста это занимает считанные минуты.
Читайте также:  Mandrakelinux 10.1. Справочное руководство. Перенаправления и каналы

Создание сертификатов

Если вы создаёте OpenVPN сервер (любого типа), вы должны создать сертификаты безопасности по нижеприведённым инструкциям. Если вы используете OpenVPN как клиент, требуемые сертификаты должны были быть предоставлены вам с вашими конфигурационными данными.

easyrsa init-pki easyrsa build-ca easyrsa build-dh easyrsa build-server-full my-server easyrsa build-client-full my-client

Вышеприведённые команды создадут сертификат сервера с именем my-server и сертификат клиента с именем my-client.

Путь сохранения сертификатов и ключей по умолчанию /root/pki.

Вы можете создать несколько клиентских сертификатов, запустив easyrsa build-client-full несколько раз и указав разные имена.

Вы можете создать новый набор сертификатов, запустив clean-all и те же команды снова.

Настройка подключения на Linux

Для подключения к OpenVPN-AS из-под Linux необходимо выполнить следующие шаги:

1. Установить OpenVPN-клиент. Наиболее лёгкий способ установки – из стандартных репозиториев операционной системы. Примеры команд:

RedHat/Fedora/CentOS:

yum install openvpn

Ubuntu/Debian:

apt-get install openvpn

Настройка подключения на Linux

Примечание: рекомендуем обратить внимание на версии устанавливаемого клиента, т.к. его версия должна быть не ниже 2.1, иначе подключение к AS будет невозможным. Проверить версию установленного OpenVPN-клиента можно командой:

openvpn —version

2. В браузере подключаемся к клиентской веб-форме OpenVPN с данными какого-либо существующего пользователя на сервере. В появившейся форме выбираем возможный файл для скачивания и сохраняем его.

3. Теперь делаем запуск OpenVPN командой:

service openvpn start

Создание сервера

Создание ключей и сертификатов

Защита соединения в OpenVPN в данном случае строится на использовании сертификатов и ключей для сервера и для клиентов. Для их генерации в пакете OpenVPN имеются специальные скрипты, расположенные в /usr/share/doc/openvpn/examples/easy-rsa/2.0 Перед началом работы скопируем их, чтобы не изменять оригиналы.

Переходим в созданную директорию, где и займёмся генерацией ключей и сертификатов

Читайте также:  Резервное копирование, восстановление и миграция виртуальной машины

Редактируем файл переменных

Здесь можно заполнить например так:

копируем конфиг openssl

Очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей

Создаем сертификат. По умолчанию поля будут заполняться данными, введенными ранее в vars, поэтому можно ничего не менять.

Создаем ключ сервера

В конце соглашаемся с запросом на подпись и добавление сертификата в базу.

Создаем ключ Диффи-Хеллмана

Cоздаем ключ для tls-аутификации

Создание файла конфигурации сервера

Создадим директорию для клиентских конфигов

Можно запускать наш сервер OpenVPN

Смотрим список интерфейсов

Если среди прочих видим

значит VPN-сервер завелся. Если нет, то смотрим лог

Настройка маршрутизации на стороне сервера

Если сервер имеет «белый» IP то никакой маршрутизации на стороне сервера настраивать не нужно. Если сервер находится в локальной сети за NAT роутера то необходимо настроить маршрутизацию. Для того, чтобы клиенты могли достучаться до сервера нужно пробросить порты с роутера на сервер. В разных моделях это делается по разному. Суть в том, чтобы стучась на внешний порт, например 12345 1) , клиенты попадали на порт OpenVPN-сервера 1194 (или другой, который мы задали для нашего сервера). Кроме того устройствам в локальной сети нужно сообщить, что для доступа к сети за OpenVPN-сервером нужно обращаться к нему. Но проще задать этот маршрут на роутере, который обслуживает локалку.

Создаем файл в каталоге ccd с тем же именем, что и ключ для клиента, т.е. /etc/openvpn/ccd/client

Включаем ipv4_forwarding

В /etc/ расскомментируем #_forward=1 после чего

Читайте также:  Изучаем возможности nftables — нового пакетного фильтра Linux

Тест производительности OpenVPN

Максимальный прирост при отключении сжатия, шифрования и аутентификации составил около 35%. Не думаю, что это стоит того, чтобы отключать механизмы защиты, но ситуации бывают разные.

Может кому-то как мне будет интересно влияние опций на производительность и не придется тратить время на проведение замеров, хотя я бы с удовольствием ознакомился с результами других людей. Изначально тестил для себя, поэтому точных замеров не проводил, потом решил поделиться результатами.