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

Клиент OpenVPN

Полная поддержка OpenVPN присутствует в стандартном для Ubuntu менеджере соединений NetworkManager. Однако по умолчанию она не установлена, поэтому если вы хотите присоединяться к сетям через OpenVPN, то вам потребуется доустановить пакет network-manager-openvpn-gnome. Сделать это можно через любой пакетный менеджер, например, командой

sudo apt-get install network-manager-openvpn-gnome

После установки этого пакета для создания OpenVPN подключения достаточно перейти на вкладку VPN в настройках соединений, нажать на ней на кнопку «Добавить» и выбрать тип подключения OpenVPN.

Сервер OpenVPN

Настройка сервера OpenVPN весьма проста. Для начала необходимо поставить сам openvpn из одноимённого пакета. Сделать это можно командой

sudo apt-get install openvpn

Далее необходимо определиться каким способом вы будете подключать удалённых клиентов к локальной сети. Существует два варианта.

Маршрутизация

FIXME

Шифрование и авторизация

Т.к. все следующие операции надо выполнять с правами суперпользователя, то можно временно перейти в терминале в сессию суперпользователя командой

sudo -s

После выполнения этой команды вы сможете изменить любое настройки и удалить любые системные файлы - так что будьте осторожны!

Сначала необходимо создать корневые сертификаты сервера авторизации и OpenVPN сервера. Если у вас есть какой-нибудь центр сертификации, то вы можете использовать его. Однако если же клиентам всё равно придётся посылать все сертификаты, включая сертификат CA, так что особенного смысла использовать внешний центр сертификации обычно нет.

Вместо этого можно воспользоваться поставляемыми с OpenVPN средствами для создания центра сертификации для OpenVPN и выдачи сертификатов. Для этого необходимо скопировать директорию со всеми необходимыми скриптами в из папки примеров в какое-нибудь удобное место. Например:

cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa

Дальше нужно работать в созданной директории. Для начала можно отредактировать файл /etc/openvpn/easy-rsa/vars, указав в нём желаемые значения для некоторых параметров будущих сертификатов:

export KEY_COUNTRY="RU"
export KEY_PROVINCE="Saint-Petersburg"
export KEY_CITY="Saint-Petersburg"
export KEY_ORG="OpenVPN"
export KEY_EMAIL="admin@domain.ru"

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

cd /etc/openvpn/easy-rsa
source ./vars
./clean-all

Далее настало время создать сертификаты для основного центра сертификации (CA):

./build-ca

После этого можно создать сертификат для нашего сервера:

./build-key-server servername

FIXME

Создаём сертификат TLS:

openvpn --genkey --secret tls.key

Ссылки