bsd$ whereis -s openvpn

openvpn: /usr/ports/security/openvpn

bsd$ sudo make -C /usr/ports/security/openvpn config

Если в конфигурации отмечены пункты EASYRSA и OPENSSL, то ничего менять не нужно и можно поставить пакет. Это все же гораздо быстрее

bsd$ sudo pkg install -y openvpn

bsd$ rehash

Сертификаты можно сделать вручную (см. Создание сертификатов для OpenVPN), но быстрее будет воспользоваться набором скриптов в /usr/local/share/easy-rsa

bsd$ cd /usr/local/share/easy-rsa/

bsd$ sudo mkdir ./keys

bsd$ sudo openssl dhparam -out ./keys/dh2048.pem 2048

Чтобы не печатать одно и тоже, в файле /usr/local/share/easy-rsa/vars нужно изменить переменные

bsd$ vi ./vars

export KEY_COUNTRY="country"

export KEY_PROVINCE="province"

export KEY_CITY="city"

export KEY_ORG="org"

export KEY_EMAIL="root@nowhere.com"

export KEY_OU="ou"


Как обычно, здесь произошла заминка с использованием команды eval в интерпретаторе csh (инициализация переменных командой source ./vars не работает)


bsd$ su

# sh

# . ./vars

# ./clean-all

# ./build-dh

# ./build-ca

# ./build-key-server server

# ./build-key client1

В директорию /usr/local/etc/openvpn/ потребуется скопировать только следующие файлы ca.crt, dh2048.pem, server.crt, server.key

Кроме того, нужно создать еще один ключ

bsd$ sudo openvpn --genkey --secret /usr/local/etc/openvpn/ta.key

bsd$ sudo chmod 0400 /usr/local/etc/openvpn/*


Клиенту потребуются файлы ca.crt, client1.crt, client1.key и ta.key


Можно скопировать файл шаблона конфигурации и изменить необходимые значения (следует обратить внимание, что в конфигурации сервера tls-auth ta.key 0, а у клиента tls-auth ta.key 1)

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

bsd$ sudo grep -ve '^[[:space:]]*\(#\|$\|;\)' /usr/local/etc/openvpn/server.conf

port 1294

proto tcp

....

server 10.0.84.0 255.255.255.0

ifconfig-pool-persist /var/log/openvpn/ipp.txt

tls-auth ta.key 0 # This file is secret

status /var/log/openvpn/openvpn-status.log

log-append /var/log/openvpn/openvpn.log

verb 2

Для каждого клиента необходимо сгенерировать свой сертификат с уникальным common_name.

Чтобы использовать для подключения один и тот же сертификат различными клиентами нужно в /usr/local/etc/openvpn/server.conf указать параметр duplicate-cn и перезапустить сервер

Кроме того, можно переключить сервер OpenVPN из режима роутера в режим моста, задав параметр client-to-client,чтобы разрешить подключения между клиентами

bsd$ sudo cat /usr/local/openvpn/server.conf

....

duplicate-cn

....

client-to-client

bsd$ sudo /usr/local/etc/rc.d/openvpn restart

Создать файлы для протоколов и определить ротацию через /etc/newsyslog.conf

bsd$ sudo mkdir /var/log/openvpn

bsd$ sudo touch /var/log/openvpn/openvpn-status.log

bsd$ sudo touch /var/log/openvpn/ipp.txt

bsd$ sudo touch /var/log/openvpn/openvpn.log

bsd$ sudo chmod 0600 /var/log/openvpn/*

Необходимо добавить правила для фаервола (в данном случае для протокола TCP, для UDP будет несколько иначе)

bsd$ sudo ipfw -a list

.... allow tcp from any to me dst-port 2194 setup

.... allow ip from 10.0.84.0/24 to 10.0.84.0/24

....

.... allow tcp from any to any established


https://forums.freebsd.org/threads/easy-rsa-scripts-from-openvpn.32925/

bsd$ less /usr/local/etc/openvpn/server.conf

bsd$ /usr/local/share/easy-rsa/pkitool

FreeBSD 10.2-RELEASE: Wed Dec 2 19:41:15 YEKT 2015