Как работает OpenVPN

OpenVPN программный комплекс, позволяющий шифровать передаваемый трафик внутри туннеля. Отлично подходит для объединения нескольких офисов в единый сегмент сети. А также для организации удаленного доступа к сети, рабочему месту. В качестве севрера будем использовать операционную систему на базе Linux. В данной статье будет рассмотрен лишь вариант клиент-серверной работы. Будт выложена отдельная статья как создать решение net to net (точка-точка). Все данное ниже будет устанавливаться на Debian 8, но применимо к любому другому дистрибутиву Linux. Отличие лишь в менеджере пакетов.

  1. Обновляем список пакетов apt-get update
  2. Обновляем пакеты в системе (если есть доступные обновления) apt-get upgrade
  3. Устанавливаем сервер OpenVPN apt-get install openvpn

Создаем сертификаты.

Обязательным условием для корректной работы требуется наличие сертификатов клиента и сервера.

Переходим в каталог установки сервера.

# cd /etc/openvpn

Генерация ключей просиходит при помощи утилиты easy-rsa. Но для начала нам надо создат папку для хранения ключей.

# make-cadir rsa-key

# cd rsa-key

Для небольшой автоматизации генерации ключей зададим заранее известные переменные. Для этого отредактируем файл vars со следующими параметрами:

export KEY_COUNTRY= «US»

export KEY_PROVINCE= «CA»

export KEY_CITY= «SanFrancisco»

export KEY_ORG= «Fort-Funston»

export KEY_EMAIL= «me@myhost.mydomain»

KEY_COUNTRY — укажите код страны (RU, UA и т.д.);
KEY_PROVINCE — данный пункт не актуален, если вы не проживаете в США.:) Можно заменить на XX;
KEY_CITY — ваш город, где вы проживаете;
KEY_EMAIL — адрес вашей электропочты.

А также раскомментируйте строку export KEY_CN, в качестве значения для которой укажите имя сервера:

export KEY_CN=  «example.com»

Все переменные заполняются латиницей.

Сохраните файл и запустите его.

#. vars

Очищаем старые сертификаты:

#. /clean-all

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

#. /build-ca

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

#. /build-key-server server (server – имя сервера)

Далее надо создать сертификат и ключ на клиента:

#. /build-key client (client – имя клиента)

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

#. /build-dh

Далее настраиваем конфигурационные файлы для сервера и клиента. Конфигурационный файл openvpn для сервера:

port 1194

proto tcp

dev tun

ca /etc/openvpn/ccd/keys/ca.crt

cert /etc/openvpn/ccd/keys/gateway14.itlab77.ru.crt

key /etc/openvpn/ccd/keys/gateway14.itlab77.ru.key # This file should be kept secret

dh /etc/openvpn/ccd/keys/dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

client-config-dir /etc/openvpn/ccd

keepalive 10 120

comp-lzo

max-clients 100

persist-key

persist-tun

status /var/log/openvpn-status.log

log        /var/log/openvpn.log

verb 4

topology subnet

tcp-nodelay

tun-mtu 1500

mssfix

crl-verify /etc/openvpn/ccd/keys/crl.pem

Конфигурационный файл для клиента:

client

dev tun

proto tcp

remote IP-server 1194

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

cert client.crt

key client.key

ns-cert-type server

verb 3

pull

route 192.168.1.0 255.255.255.0

push «route 192.168.1.0 255.255.255.0»

Автор статьи: Андрей Гаркин

OpenVPN, Linux, Debian