OpenVPN является полнофункциональным с открытым исходным кодом SSL VPN решением, которое вмещает широкий выбор настроек, включая обычный удаленный доступ, site-to-site VPN, безопасная работа в беспроводных сетях (Wi-Fi), в масштабах всего предприятия решение для удаленного доступа с балансировкой нагрузки, отказоустойчивости и мелко-зернистым контролем доступа. OpenVPN предлагает экономически эффективное решение, которое является легкой альтернативой другим технологиям VPN, доступных на рынке.

Структура OpenVPN легкая с учетом многих сложностей и модели безопасности на основе SSL- промышленный стандарт для безопасной связи через Интернет. OpenVPN реализовывает 2 и 3 уровни Модели OSI с использованием протокола SSL/TLS, поддерживает гибкие методы проверки подлинности клиента на основе сертификатов, смарт-карты и/или двойной аутентификации, позволяет пользователю или группе конкретных пользователей осуществлять политику контроля доступа с помощью правил брандмауэра, которые применяются к виртуальному интерфейсу VPN. OpenVPN — это не веб-прокси приложение и не работает через веб-браузер.

Теперь рассмотрим пример настройки OpenVPN в SUSE Linux и OpenSUSE 11.3

Установка OpenVPN
Перед началом установки необходимо составить соответствующий план установки сервера OpenVPN, который должен включать в себя выбор между режимами — маршрутизатор или мост (в режиме маршрутизатора производится работа с подсетями и следовательно не проходит широковещательный трафик, в то время как в режиме моста адрес клиента в одной подсети и проходит широковещательный трафик), диапазон приватных IP-адресов для частных VPN и т.д.

# zypper install openvpn
Загрузка данных о репозиториях...
Чтение установленных пакетов...
Разрешение зависимостей пакетов...

Будет установлен следующий НОВЫЙ пакет:
  openvpn 

1 новый пакет для установки.
Полный размер загрузки: 387,0 KiB. После этой операции будет использовано дополнительно 985,0 KiB.
Продолжить? [y/n/?] (y): y
Получение пакет openvpn-2.1.1-4.1.i586 (1/1), 387,0 KiB (985,0 KiB после распаковки)
Получение: openvpn-2.1.1-4.1.i586.rpm [готово]
Установка: openvpn-2.1.1-4.1 [готово]

OpenVPN установлен теперь в директории

/usr/share/openvpn

Теперь необходимо все скопировать в директорию

/etc/openvpn
cp -r /usr/share/openvpn/ /etc/openvpn

Создание мастера Certificate Authority (CA) сертификата и ключа

Необходимо перейти в каталог /etc/openvpn/easy-rsa/2.0/, отредактировать файл vars

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="UA"
export KEY_PROVINCE="UA"
export KEY_CITY="Kiev"
export KEY_ORG="worm.org.ua"
export KEY_EMAIL="admin(doggi)worm.org.ua"

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

cd /etc/openvpn/easy-rsa/2.0/
or:/etc/openvpn/easy-rsa/2.0 # source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
or:/etc/openvpn/easy-rsa/2.0 # ./clean-all
or:/etc/openvpn/easy-rsa/2.0 # ./build-ca
Generating a 1024 bit RSA private key
....++++++
......................++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [UA]:
State or Province Name (full name) [UA]:
Locality Name (eg, city) [Kiev]:
Organization Name (eg, company) [worm.org.ua]:
Organizational Unit Name (eg, section) []:section
Common Name (eg, your name or your server's hostname) [worm.org.ua CA]:
Name []:worm
Email Address [admin(doggi)worm.org.ua]:

После ответов на вопросы будут созданы сертификаты мастера CA и ключи.

Создание сертификата и ключа для сервера Тут также необходимо будет ответить на ряд вопросов:

or:/etc/openvpn/easy-rsa/2.0 # ./build-key-server server
Generating a 1024 bit RSA private key
.....++++++
............++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [UA]:
State or Province Name (full name) [UA]:
Locality Name (eg, city) [Kiev]:
Organization Name (eg, company) [worm.org.ua]:
Organizational Unit Name (eg, section) []:section
Common Name (eg, your name or your server's hostname) [server]:
Name []:worm
Email Address [admin(doggi)worm.org.ua]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:password1
An optional company name []:home
Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'UA'
stateOrProvinceName   :PRINTABLE:'UA'
localityName          :PRINTABLE:'Kiev'
organizationName      :PRINTABLE:'worm.org.ua'
organizationalUnitName:PRINTABLE:'section'
commonName            :PRINTABLE:'server'
name                  :PRINTABLE:'worm'
emailAddress          :IA5STRING:'admin(doggi)worm.org.ua'
Certificate is to be certified until Jan  2 10:30:14 2021 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

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

В этом примере будет показана процедура для клиента с именем vpnhost1 также с требованием ответить на ряд вопросов:

or:/etc/openvpn/easy-rsa/2.0 # ./build-key vpnhost1
Generating a 1024 bit RSA private key
.........................++++++
.................++++++
writing new private key to 'vpnhost1.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [UA]:
State or Province Name (full name) [UA]:
Locality Name (eg, city) [Kiev]:
Organization Name (eg, company) [worm.org.ua]:
Organizational Unit Name (eg, section) []:section
Common Name (eg, your name or your server's hostname) [vpnhost1]:
Name []:worm
Email Address [admin(doggi)worm.org.ua]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:password1
An optional company name []:home
Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'UA'
stateOrProvinceName   :PRINTABLE:'UA'
localityName          :PRINTABLE:'Kiev'
organizationName      :PRINTABLE:'worm.org.ua'
organizationalUnitName:PRINTABLE:'section'
commonName            :PRINTABLE:'vpnhost1'
name                  :PRINTABLE:'worm'
emailAddress          :IA5STRING:'admin(doggi)worm.org.ua'
Certificate is to be certified until Jan  2 10:35:33 2021 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Cоздание параметров Diffie Hellman (DH)

Создать Diffie Hellman параметры для сервера OpenVPN:

or:/etc/openvpn/easy-rsa/2.0 # ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
..............................................................................................................+.............+...................................................+...............................+.....................+...........................................................................................................+.......................+.............................................+.........+......+......................+......................................+......................................................+......+.......+.........................................................+................+.............................+.............++*++*++*

Теперь можно будет увидеть директорию /etc/openvpn/easy-rsa/2.0/keys/ с файлами ключей, где

ca.crt — корневой сертификат для сервера и всех клиентов
ca.key — Root CA key для ключей подписанных хостов
DH<n>.PEM — DH Paramters для сервера (здесь dh1024.pem)
server.crt и server.key — Сертификат сервера и ключ (имя будет общим названием входа ААТ времени создания сертификатов)
client.crt и client.key — Клиентский сертификат и ключ (имя будет общим названием входа ААТ времени создания сертификатов

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

Образцы конфигурационных файлов устанавливаются в директории /usr/share/docs/packages/openvpn/sample-config-files/. Необходимо скопировать файл server.conf в директорию /etc/openvpn/.

cp /usr/share/doc/packages/openvpn/sample-config-files/server.conf /etc/openvpn

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

port 1194

Протокол TCP или UDP

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

proto udp

Нужно отредактировать строки

ca ca.crt
cert server.crt
key server.key

в соответствии с Вашими настройками. Согласно примеру в данной статье строки будут иметь вид:

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key

Режим маршрутизатора(Routed) или моста(Bridged)

dev tun

и

server 10.8.0.0 255.255.255.0

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

dev tap

и

server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

В обоих случаях, если нужно сменить пул IP-адресов, тогда необходимо выбрать свободный пул в соответствии с сетевой инфраструктурой сети.

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

;push “route 192.168.10.0 255.255.255.0″
;push “route 192.168.20.0 255.255.255.0″

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

management localhost 7201

Запуск сервера производится при помощи команды

openvpn /etc/openvpn/server.conf

Настройки клиента будут описываться в последующих статьях.

Удачи! :)