OpenVPN сервер на FreeBSD 10/11

Январь, 10th 2017
Рубрика: *NIX
Подписаться на комментарии по RSS

OpenVPN сервер на FreeBSD 10/11

Сегодня при установке OpenVPN сервера на FreeBSD 11 я понял что инструкция по настройке openvpn, которая писалась в далёком 2009 году уже не актуальна - процесс генерации ключей в обновленной EasyRSA 3 версии полностью изменился.

В последние несколько лет в рунете, к сожалению, наблюдается нехватка свежих материалов по Linux/BSD - всё переводится либо на коммерческие рельсы, либо просто у людей нет желания делиться своим опытом и наработками с другими. Это, конечно, печально. Однако, перейдем к делу. Честно говоря, в начале, сам был в некотором замешательстве, когда после установки OpenVPN не обнаружил привычных команд, разобраться в чем тут дело помогла одна англоязычная статейка OpenVPN On FreeBSD 10.3.

Установка OpenVPN на FreeBSD 11

Прежде чем приступить к установке, убедитесь, что ваша система находится в актуальном состоянии:

freebsd-update fetch
freebsd-update install

Как и раньше, OpenVPN можно собрать из портов (тут ничего не поменялось, ссылка на старую статью дал в начале) или установить бинарные пакеты с помощью команды "pkg":

[root]# pkg update
[root]# pkg install openvpn

Также будут доустановлены пакеты "easy-rsa" и "lzo2", которые необходимы для openvpn.

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

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

[root]# mkdir /usr/local/etc/openvpn

Копируем туда пример файла конфигурации сервера server.conf:

[root]# cp /usr/local/share/examples/openvpn/sample-config-files/server.conf  /usr/local/etc/openvpn/server.conf

и каталог с файлами Easy-RSA:

[root]# cp -r /usr/local/share/easy-rsa /usr/local/etc/openvpn/easy-rsa

Вот теперь начинается самое интересное. Для генерации ключей переходим в только что созданный каталог:

[root]# cd /usr/local/etc/openvpn/easy-rsa

в котором нас ожидает совсем не то что было раньше:

[root]# ls
easyrsa.real		openssl-1.0.cnf.example	vars.example
openssl-1.0.cnf		vars			x509-types

Правим конфигурационный файл Easy-RSA

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

set_var EASYRSA_REQ_COUNTRY     "<COUNTRY>"
set_var EASYRSA_REQ_PROVINCE    "<PROVINCE>"
set_var EASYRSA_REQ_CITY        "<CITY>"
set_var EASYRSA_REQ_ORG         "<ORGANIZATION>"
set_var EASYRSA_REQ_EMAIL       "<EMAIL>"
set_var EASYRSA_REQ_OU          "<ORGANIZATIONAL UNIT>"

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

Вот тут принципиальное отличие. Теперь ключи генерируются одним единственным shell-скриптом easyrsa.real

Посмотреть все возможные команды нового скрипта easy-rsa можно так:

./easyrsa.real help
init-pki
  build-ca [ cmd-opts ]
  gen-dh
  gen-req <filename_base> [ cmd-opts ]
  sign-req <type> <filename_base>
  build-client-full <filename_base> [ cmd-opts ]
  build-server-full <filename_base> [ cmd-opts ]
  revoke <filename_base>
  gen-crl
  update-db
  show-req <filename_base> [ cmd-opts ]
  show-cert <filename_base> [ cmd-opts ]
  import-req <request_file_path> <short_basename>
  export-p7 <filename_base> [ cmd-opts ]
  export-p12 <filename_base> [ cmd-opts ]
  set-rsa-pass <filename_base> [ cmd-opts ]
  set-ec-pass <filename_base> [ cmd-opts ]

Для более детального ознакомления с отдельными командами и опциями следует ввести:

# ./easyrsa help COMMAND
# ./easyrsa help options

Создаем инфраструктуру публичного ключа (Public Key Infrastructure)

# ./easyrsa.real init-pki

Этой команда выполняется один раз, создавая структуру каталогов для будущих ключей /usr/local/etc/openvpn/easy-rsa/pki

Создание Certificate Authority

# ./easyrsa.real build-ca nopass

Опция “nopass” указывает что пароль при запуске не требуется, но помните что ключи в таком случае должны быть тщательно защищены.

Создание сертификата сервера (Server Certificate)

# ./easyrsa.real build-server-full openvpn-server nopass

посмотреть созданный ключ можно командой:

# ./easyrsa.real show-cert openvpn-server

Создание сертификатов клиентов (Client Certificate)

# ./easyrsa.real build-client-full client_name nopass

Генерация Diffie Hellman Parameters

# ./easyrsa.real gen-dh

Прописываем ключи OpenVPN серверу

Создадим специальный каталог, откуда openvp-cервер будет брать нужные ключи для авторизации:

[root]# mkdir /usr/local/etc/openvpn/keys
[root]# cp pki/dh.pem \
           pki/ca.crt \
           pki/issued/openvpn-server.crt \
           pki/private/openvpn-server.key \
           /usr/local/etc/openvpn/keys

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

pki/issued/<client_name>.crt
pki/private/<client_name>.key

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

Небольшое дополнение. Для автоматического поднятия интерфейса tap0 нужно в конце rc.conf добавить строчку:

ifconfig_tap0="up"

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

comments powered by HyperComments
Без регистрации
ваш комментарий будет опубликован после проверки
Регистрация на сайте

На указанный адрес будет отправлено письмо с кодом активации. Вы можете настроить собственный профиль и стать активным участником или автором.