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

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

freebsd-update fetch
freebsd-update install

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

pkg update
pkg install openvpn

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

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

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

mkdir /usr/local/etc/openvpn

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

cp /usr/local/share/examples/openvpn/sample-config-files/server.conf  /usr/local/etc/openvpn/server.conf

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

cp -r /usr/local/share/easy-rsa /usr/local/etc/openvpn/easy-rsa

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

cd /usr/local/etc/openvpn/easy-rsa

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

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ервер будет брать нужные ключи для авторизации:

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_tun0="up"

File config:

start OpenVPV:

/usr/local/sbin/openvpn --config /usr/local/etc/openvpn/server.conf
vim /usr/local/etc/openvpn/server.conf


dev tun
daemon
comp-lzo
comp-noadapt
user nobody
group nobody
persist-key
persist-tun
verb 5
proto udp
local ip_server
lport 1194
mode server
tls-server
ping 10
ping-exit 90
tun-mtu 1500
fragment 1400
mssfix
management 127.0.0.1 3000
#duplicate-cn # allow multiple connection of user with some common name
server 192.168.20.0 255.255.255.0
push "redirect-gateway def1"
#push "dhcp-option DNS ip_server"
push "dhcp-option DNS 8.8.8.8"

push "ping 10"
push "ping-exit 90"
tmp-dir /usr/local/etc/openvpn/tmp
writepid /var/run/openvpn.pid


dh /usr/local/etc/openvpn/ssl/dh.pem
ca /usr/local/etc/openvpn/ssl/ca.crt
cert /usr/local/etc/openvpn/ssl/openvpn-server.crt
key /usr/local/etc/openvpn/ssl/openvpn-server.key

#auth-user-pass-verify /home/scripts/openvpn/auth.pl via-env
#client-connect /home/scripts/openvpn/connect.pl
#client-disconnect /home/scripts/openvpn/disconnect.pl

NAT

ipfw add divert natd all from 192.168.0.0/24 to any out via xn0
ipfw add divert natd all from any to ip_server in via xn0
vim /etc/rc.conf


# OpenVPN Setting #

gateway_enable="YES"
openvpn_enable="YES"                                                                                                                
openvpn_if="tun"                                                                                                                    
ipnat_enable="YES"

results matching ""

    No results matching ""