Установка и настройка приложения OpenVPN


Генерация ключей для OpenVPN

Первый этап настройки OpenVPN - генерация ключей для серверной и клиентской частей OpenVPN, необходимых для безопасного подключения. Мы рассмотрим самый распространенный вариант работы - один ключ сервера и неограниченное количество ключей клиентов. Для их создания понадобится установочный файл OpenVPN для систем Windows, который можно взять по ссылке: Windows Installer (32-bit или 64-bit). После его установки необходимо перейти в папку с установленным OpenVPN (по умолчанию: «C:\Program Files\OpenVPN»), открыть папку «easy-rsa», скопировать файл «vars.bat» (или если его нет, то файл «vars.bat.sample») и переименовать в «vars-server.bat», открыть его в любом блокноте для редактирования и заменить строки как в примере (или просто нажать на имя файла в примере для того, чтобы скачать его себе на компьютер):

vars-server.bat
@echo off
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
set KEY_CONFIG=openssl.cnf
set KEY_DIR=keys
set KEY_SIZE=1024
set KEY_COUNTRY=RU
set KEY_PROVINCE=Область
set KEY_CITY=Город
set KEY_ORG=Организация
set KEY_EMAIL=Почтовый_адрес
set KEY_OU=Имя_сервера
set KEY_CN=Имя_сервера
set KEY_NAME=Имя_сервера
set PKCS11_MODULE_PATH=path
set PKCS11_PIN=pin

Далее необходимо еще раз скопировать файл «vars.bat», но в этот раз дать ему имя «vars-client.bat», открыть его и заменить строки (будьте внимательны - несколько строк отличаются от предыдущего блока кода):

vars-client.bat
@echo off
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
set KEY_CONFIG=openssl.cnf
set KEY_DIR=keys
set KEY_SIZE=1024
set KEY_COUNTRY=RU
set KEY_PROVINCE=Область
set KEY_CITY=Город
set KEY_ORG=Организация
set KEY_EMAIL=Почтовый_адрес
set KEY_OU=Имя_сервера
set KEY_CN=Имя_клиента
set KEY_NAME=Имя_клиента
set PKCS11_MODULE_PATH=path
set PKCS11_PIN=pin

Далее нужно запустить Командную строку Windows (можно сделать с помощью сочетания клавиш Win+R, или выбрать в меню Пуск > Все программы > Стандартные) ввести в нее последовательно:

cd C:\Program Files\OpenVPN\easy-rsa
md keys
vars-server.bat
clean-all.bat
build-dh.bat
build-ca.bat

Далее после ввода команды, через пробел, необходимо ввести Имя_сервера, которое мы вводили в коде файла «vars-server», после чего в консоли могут возникать вопросы на которые нужно отвечать «yes» (если предоставляется выбор «y/n» или просто жать «Enter» когда запрашиваются данные (мы их уже указали в файле «vars-server»).

vars-server.bat
build-key-server.bat Имя_сервера

Следующие действия очень похожи на предыдущие - после ввода команды, через пробел, необходимо ввести Имя_клиента, которое мы вводили в коде файла «vars-client», после чего в консоли могут возникать вопросы на которые нужно отвечать «yes» (если предоставляется выбор «y/n» или просто жать «Enter» когда запрашиваются данные (мы их уже указали в файле «vars-client»).

vars-client.bat
build-key.bat Имя_клиента

После чего для проверки создания ключей зайдите в папку C:\Program Files\OpenVPN\easy-rsa\keys, там должны быть следующие файлы:

ca.crt
dh1024.pen
Имя_сервера.crt
Имя_сервера.key
Имя_клиента.crt
Имя_клиента.key

Если все они там присутствуют, то можно смело приступать к следующему этапу.


Установка пакетов необходимых для работы OpenVPN

Для установки пакетов OpenVPN необходимо подключившись по SSH к консоли ввести следующую команду:

opkg install openvpn-openssl


Подготовка OpenVPN

Если планируется постоянное использование OpenVPN, то удобнее всего будет настроить его автозапуск, для чего нужно ввести следующую команду в консоли:

mv /media/DISK_A1/system/etc/init.d/K11openvpn /media/DISK_A1/system/etc/init.d/S11openvpn

Первое что необходимо сделать - это скопировать файлы сгенерированных ключей в папку /media/DISK_A1/system/etc/openvpn/keys.

Набор ключей для сервера:
dh1024.pem
ca.crt
server.crt
server.key
Набор ключей для клиента:
ca.crt
client.crt
client.key

Настройка сервера OpenVPN

Необходимо отредактировать основной файл настроек OpenVPN, находящийся по адресу »/media/DISK_A1/system/etc/openvpn/openvpn.conf». Рассмотрим некоторые возможные настройки: Порт на который будут поступать соединения.

port 1194

Протокол, по которому будет идти соединение.

proto udp

Тип интерфейса и режим работы: tun = L3-туннель, tap = L2-туннель.

dev tun

Файл, содержащий параметры Diffie Hellman.

dh keys/dh1024.pem

Опция ca определяет корневой (root) сертификат, которым подписаны клиентские пары сертификат/ключ. Значение этой опции keys/ca.crt указывает месторасположение этого сертификата относительно каталога openvpn. (Или, иными словами, это открытый ключ сервера).

ca keys/ca.crt

Каждый участник OpenVPN соединения в TLS режиме должен иметь собственный сертификат и файл с закрытым ключом. Каждый сертификат должен быть подписан закрытым ключом центра сертификатов, чей открытый ключ указывается в опции ca.

cert keys/serzh.crt

Закрытый ключ, который генерируется вместе с сертификатом, указанным в опции cert.

key keys/serzh.key

Использование режима TLS:

tls-server, tls-client

Режим работы сервера. По умолчанию OpenVPN работает в p2p-режиме (point-to-point или один-к-одному), при указании mode server он работает в режиме сервера со многими клиентами.

mode server

Конфигурация интерфейса. При помощи параметра ifconfig определяем IP адрес сервера и маску подсети.

ifconfig 10.10.10.1 255.255.255.0

Выделение пула IP адресов, которые будут выдаваться клиентам.

ifconfig-pool 10.10.10.11 10.10.10.99

Если вы хотите, чтобы клиенты могли видеть друг друга, то необходимо добавить следующее:

client-to-client

Если вы хотите, что бы за клиентами закреплялись постоянные адреса, добавьте следующий параметр:

ifconfig-pool-persist ipp.txt

Он определяет файл, в котором будет сохраняться информация о машине и ее IP. Файл содержит строки: Имя машины,IP адрес. Во время работы, сервер с периодичностью в 600 секунд обновляет содержимое этого файла. При включении, сервер читает содержимое файла. Использование шифрования для повышения уровня безопасности соединения.

cipher AES-128-CBC

Макрокоманда «пинговать» противоположную сторону туннеля с указанным периодом 10 сек, при отсутствии встречных пингов в течение 120 сек, считать туннель упавшим и запускать пересоединение.

keepalive 10 120

Не перечитывать заново файлы ключей при получении сигнала SIGUSR1 (переустановка соединения) или через интервал, указанный в опции «keepalive m n» (переустановить соединение через n секунд после отправки последнего icmp пакета клиенту, который остался без ответа).

persist-key

Не закрывать или переоткрывать устройства TUN/TAP при получении сигнала SIGUSR1 или по прошествию интервала n опции «keepalive m n».

persist-tun

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

comp-lzo

Сохранение информации о текущих соединениях сервера:

status log/status.log

Cохранять или добавлять лог в указанный файл:

log log/openvpn.log

Установка уровня детализации событий для логов.

verb 3

Установка ограничения на повторяющиеся события в логах.

mute 5

В итоге должно получиться что-то вроде следующего файла:

openvpn-server.conf
port 1194
proto udp
dev tun

dh keys/dh1024.pem
ca keys/ca.crt
cert keys/server.crt
key keys/server.key

tls-server
mode server
ifconfig 172.22.0.1 255.255.255.0

client-to-client
ifconfig-pool-persist ipp.txt

cipher AES-128-CBC
keepalive 10 120
persist-key
persist-tun
comp-lzo
status logs/status.log
log logs/openvpn.log
verb 3
mute 5

Настройка клиента OpenVPN

Настройка аналогична настройке сервера за исключением нескольких параметров, которые мы сейчас рассмотрим: Задание доменного имени хоста или IP адреса для соединения с сервером OpenVPN:

remote 87.224.228.141

Включение постоянного обновления адреса сервера, если указано доменное имя хоста.

resolv-retry infinite

Эта команда заставляет клиента проверить сертификат, предъявленный сервером. Проверяется то, что сертификат именно серверный.

ns-cert-type server

В итоге должно получиться что-то вроде следующего файла:

openvpn-client.conf
port 1194
proto udp
dev tun
remote 87.224.228.141

ca keys/ca.crt
cert keys/client.crt
key keys/client.key

tls-client
client

resolv-retry infinite
ns-cert-type server

cipher AES-128-CBC
persist-key
persist-tun
comp-lzo
status logs/status.log
log logs/openvpn.log
verb 3
mute 5


Задание правил IPTABLES

Для успешного функционирования OpenVPN нам понадобится добавить правила в IPTABLES. Проще всего это будет сделать создав (изменив) файл /media/DISK_A1/system/etc/firewall.d/fw.sh, в который внести необходимые строки. Обязательна только первая строка,а далее в зависимости от настроек:
Если наш OpenVPN настроен на порт 1194 и использует для соединения tcp:

fw.sh
#!/bin/sh
iptables -A INPUT -p tcp --dport 1194 -j ACCEPT

Если наш OpenVPN настроен на порт 1194 и использует для соединения udp:

fw.sh
#!/bin/sh
iptables -A INPUT -p udp --dport 1194 -j ACCEPT


Настройка OpenVPN в Windows

Для настройки OpenVPN на компьютере под управлением MS Windows необходимо скопировать файл настроек (предварительно изменив его расширение на .ovpn) и файлы ключей (так же в папке «keys») в папку «C:\Program Files\OpenVPN\config». После чего соединение можно будет запустить через OpenVPN GUI.