Много статей есть в сети об этом, но я решил написать еще одну. Конечно, можно пользоваться pptp, о котором я уже писал ранее, но в openvpn есть несколько важных преимуществ. Поэтому, он такой популярный. Какие собственно преимущества?
Во-первых, он более защищенный, потому что использует мощные алгоритмы шифрования с открытыми ключами и сертификатами вместо паролей. В pptp используются менее защищенные протоколы шифрования, которые можно сломать при желании. Во-вторых, openvpn работает через http-прокси и фаерволы. Он может работать через любой порт как tcp так и udp. Можно настроить работу сервиса через 443 порт tcp, что позволяет работать через прокси и не дает возможности закрыть этот порт фаерволами. В-третьих, он кроссплатформенный. В-четвертых, он имеет высокую стабильность работы в нестабильном канале Интернета. Это основные преимущества. Хоть openvpn и можно настроить на MS Windows, но мы будем сервер настраивать на Linux, клиент может быть и на Windows. Итак, начнем.
Скачаем rpm пакет с openvpn или поставим с исходников на сайте openvpn. Создадим рабочий каталог для ключей и для скриптов генерации сертификатов:
# mkdir /etc/openvpn/key
# mkdir /etc/openvpn/aesy-rsa
Скопируем с каталога /usr/share/openvpn/easy-rsa все содержимое в созданый каталог /etc/openvpn/aesy-rsa:
# cp -r /urs/share/openvpn/easy-rsa/2.0 /etc/openvpn/easy-rsa
Заходим с каталог и меняем права доступа на скрипты. Устанавливаем права на запуск:
# cd /etc/openvpn/easy-rsa
# chmod +x clean-all
# chmod +x build*
Далее загружаем переменные:
# . ./vars (или source ./vars)
Создаём приватный ключ и сертификат центра сертификации:
# ./build-ca
В /etc/openvpn/easy-rsa/keys создадутся сертификат центра сертификации ca.crt и приватный ключ центра сертификации ca.key. Сертификат центра сертификации находится как на стороне сервера, так и на стороне клиента и учавствует в создании туннеля. Приватный ключ центра сертификации чрезвычайно секретный и не должен попасть в чужие руки. В создании туннеля он не используется.
Генерируем TLS ключ:
# openvpn —genkey —secret /etc/openvpn/easy-rsa/keys/ta.key
Генерируем ключ сервера:
# ./build-key-server server
Создаём параметр DH (Алгоритм Диффи — Хеллмана):
# ./build-dh
Копируем ключи и сертификати в созданый нами ранее каталог:
# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/keys/ca.crt
# cp /etc/openvpn/easy-rsa/keys/server.crt /etc/openvpn/keys/server.crt
# cp /etc/openvpn/easy-rsa/keys/server.key /etc/openvpn/keys/server.key
# cp /etc/openvpn/easy-rsa/keys/dh1024.pem /etc/openvpn/keys/dh1024.pem
# cp /etc/openvpn/easy-rsa/keys/ta.key /etc/openvpn/keys/ta.key
Создаем и редактируем конфиг сервера:
# vi /etc/openvpn/server.conf
port 1194
; порт для соединения с сервером
proto udp
; протокол для соединения с сервером
dev tun
; виртуальный интерфейс сервера
tls-server
; включить аутентификацию
tls-auth /etc/openvpn/keys/ta.key 0
; ключ аутентификации
ca /etc/openvpn/keys/ca.crt
; путь к сертификату центра сертификации
cert /etc/openvpn/keys/server.crt
; путь к сертификату сервера
key /etc/openvpn/keys/server.key
; путь к ключу сервера
dh /etc/openvpn/keys/dh1024.pem
; путь к параметру dh
server 10.0.0.0 255.255.255.128
; сеть, которую будут раздавать dhcp сервера клиентам
push «redirect-gateway def1»
; указывает клиенту, что дефолт будет через vpn-сервер (если необходимо)
push «route 10.10.10.0 255.255.255.0»
; передача клиенту информацию о сети, то что за сервером (если необходимо). Добавляется в таблицу маршрутизации клиента
push «dhcp-option DNS 10.10.10.10»
; передача dns клиенту (если необходимо)
client-to-client
; разрешить клиентам видеть друг друга (если необходимо)
route 10.10.20.0 255.255.255.0 10.0.0.10
; маршрут для сервера к сетям за клиентом (если необходимо)
keepalive 10 120
; интервал пинга 10 и недоступность через 120 секунд
cipher BF-CBC
; алгоритм шифрования
comp-lzo
; включить сжатие трафика
max-clients 30
; максимальное количество клиентов
persist-key
; понижаем привелегии
persist-tun
; понижаем привелегии
status openvpn-status.log
; лог подключений
verb 3
; уровень информативности логов
Настройка сервера завершена. Теперь создадим ключи и файл конфигурации vpn-клиентов.
Генерируем ключи:
# cd /etc/openvpn/easy-rsa
# ./build-key client
Получим следующие ключ и сертификат: client.crt, client.key
Создаем файл конфигурации openvpn.ovpn:
client
tls-client
tls-auth ta.key 1
dev tun
proto udp
tun-mtu 1500
remote 10.0.0.129 1194
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
comp-lzo
cipher BF-CBC
verb 3
mute 20
pull
Параметры клиента похожи на параметры сервера, поэтому не поясняю.
Теперь, если у нас клиент на MS Windows, то копируем ca.crt, client.crt, client.key, ta.key, openvpb.ovpn в каталог C:\Program Files (x86)\OpenVPN\config.
Запускаем сервис:
# /etc/init.d/openvpn start
Добавляем в автозагрузку:
# chkconfig openvpn on
Из под клиента запускаем openvpn GUI в режиме администратора (чтобы можно было изменять системные параметры, маршруты и т.д.). Он падает в трэй. Можна выставить пароль на подключение (опционально). Правой кнопочкой нажимаем «подключиться». Более подробно можно изучить сервис по материалам с официального сайта openvpn.net
Работаем!