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"
Комментариев: 5
Спасибо, за статью. Собирался как раз попробовать.
Перед мною поставлена задача настроить VPN для доступа к локальной сети клиентов с айфонами. Клиенты openvpn там требуют файлы конфигурации .ovpn, а как их получить?
Не совсем понял вопрос. Если про файлы конфигурации .ovpn, то это обычные текстовые файлы, просто добавляется расширение .ovpn. Эти файлы создаются исходя из настроек вашего OpenVPN сервера.
Я уже много писал про openvpn в блоге, почитайте, тут найдётся и пример клиентского файла конфигурации, которым вы интересуетесь - OpenVPN клиент для Windows
Может кто сталкивался, каким образом подправить конфиг клиента что бы подключаться к нескольким openvpn серверам одновременно? все машины на freebsd.