Разное

Настройка openvpn freebsd 10: OpenVPN сервер на FreeBSD 10/11

Содержание

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"

Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.

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

Настройка OpenVPN туннеля в FreeBSD

Настраиваем OperVPN в режиме сервер-клиенты с TLS-шифрованием, а так же клиент для подключения к серверу.

Установка

Устанавливаем пакет:

pkg install openvpn

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

Генерируем ключи:

# Инициализируем папку с ключами 
easyrsa init-pki 

# Создаем ключ для системы безопасного обмена ключами по алгоритму Диффи — Хеллмана
easyrsa gen-dh

# Создаем корневой сертификат
easyrsa build-ca nopass

# Создаем ключ и сертификат для сервера с именем server.
easyrsa build-server-full server nopass

# Создаем ключ и сертификат для клиента с именем client.
easyrsa build-client-full client nopass

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

easyrsa build-client-full клиент nopass

Переходим в папку с ключами.

cd /usr/local/share/easy-rsa/pki

Генерируем ключ пакетной авторизации:

openvpn --genkey --secret ta.key

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

Создаем папку с файлами конфигурации:

mkdir /usr/local/etc/openvpn

Копируем сгенерированные ключи из папки keys по умолчанию в /usr/local/etc/openvpn:

cp ca.crt dh.pem ta.key issued/server.crt private/server.key /usr/local/etc/openvpn

Ключи клиентов на сервере не требуются, они подписаны корневым ключом, их подлинность проверяется с помощью корневого сертификата.

Переходим в папку конфигурации:

cd /usr/local/etc/openvpn

Копируем шаблон конфига:

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

Редактируем файл конфигурации:

ee server.conf

Конфигурация сервера (server.conf):








































###################################################
# Sample OpenVPN 2.0 config file for              #
# multi-client server.                            #
#                                                 #
# This file is for the server side                #
# of amany-clients <-> one-server                 #
# OpenVPN configuration.                          #
#                                                 #
# OpenVPN also supports                           #
# single-machine <-> single-machine               #
# configurations (See the Examples page           #
# on the web site for more info).                 #
#                                                 #
# This config should work on Windows              #
# or Linux/BSD systems.  Remember on              #
# Windows to quote pathnames and use              #
# double backslashes, e.g.:                       #
# "C:\\Program Files\\OpenVPN\\config\\foo.key"   #
#                                                 #
# Comments are preceded with '#' or ';'           #
###################################################

 

# Which local IP address should OpenVPN
# listen on? (optional)
;local a.b.c.d

Адрес для входящих соединений, если не задан, то соединения будут приниматься на всех интерфейсах.

# Which TCP/UDP port should OpenVPN listen on?
# If you want to run multiple OpenVPN instances
# on the same machine, use a different port
# number for each one.  You will need to
# open up this port on your firewall.
port 1194

Порт.

# TCP or UDP server?
;proto tcp-server
proto udp

Рекомендуемый протокол — UDP.


Используем TCP только при проблемах с установкой UDP-соединения.

# "dev tun" will create a routed IP tunnel,
# "dev tap" will create an ethernet tunnel.
# Use "dev tap0" if you are ethernet bridging
# and have precreated a tap0 virtual interface
# and bridged it with your ethernet interface.
# If you want to control access policies
# over the VPN, you must create firewall
# rules for the the TUN/TAP interface.
# On non-Windows systems, you can give
# an explicit unit number, such as tun0.
# On Windows, use "dev-node" for this.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun

Тип виртуального интерфейса:

tap — эмулирует сетевую карту, необходим, если требуется сетевой мост

tun — туннель точка-точка используется для маршрутизации IP трафика, поддерживается несколько соединений на один туннель.

Можно явно задать номер интерфейса, например tun0.

# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel if you
# have more than one.  On XP SP2 or higher,
# you may need to selectively disable the
# Windows firewall for the TAP adapter.
# Non-Windows systems usually don't need this.
;dev-node MyTap

Специфично для Windows.

# SSL/TLS root certificate (ca), certificate
# (cert), and private key (key).  Each client
# and the server must have their own cert and# key file.  The server and all clients will
# use the same ca file.
#
# See the "easy-rsa" directory for a series
# of scripts for generating RSA certificates
# and private keys.  Remember to use
# a unique Common Name for the server
# and each of the client certificates.
#
# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page)

 

ca ca.crt
cert server.crt
key server.key # This file should be kept secret

Пути к ключам шифрования, сгенерированным на предыдущем шаге. По умолчанию ищутся в папке с конфигом, имена сгенерированных нами ключей совпадают с заданными значениями.

# Diffie hellman parameters.
# Generate your own with:
# openssl dhparam -out dh2024.pem 1024
# Substitute 2048 for 1024 if you are using
# 2048 bit keys.
dh dh.pem

Ключ безопасного обмена ключами по алгоритму Диффи — Хеллмана, исправляем на dh3048.pem, если был выбран 2048-битный ключ.

# Configure server mode and supply a VPN subnet
# for OpenVPN to draw client addresses from.
# The server will take 10.8.0.1 for itself,
# the rest will be made available to clients.
# Each client will be able to reach the server
# on 10.8.0.1. Comment this line out if you are
# ethernet bridging. See the man page for more info.
server 10.8.0.0 255.255.255.0

Включает режим сервера, фактически встроенный маршрутизатор, позволяющий принимать несколько клиентских подключений на один системный туннель. Задается адрес сети и маска, первые два адреса будут использованы в качестве адресов сервера и клиента устройства tun, остальные доступны клиентам.

# Maintain a record of client <-> virtual IP address
# associations in this file.  If OpenVPN goes down or
# is restarted, reconnecting clients can be assigned
# the same virtual IP address from the pool that was
# previously assigned.
ifconfig-pool-persist ipp.txt

Файл для хранения адресов, присвоенным клиентам, при повторном подключении клиенты получат тот же адрес.

# Configure server mode for ethernet bridging.
# You must first use your OS's bridging capability
# to bridge the TAP interface with the ethernet
# NIC interface.  Then you must manually set the
# IP/netmask on the bridge interface, here we
# assume 10.8.0.4/255.255.255.0.  Finally we
# must set aside an IP range in this subnet
# (start=10.8.0.50 end=10.8.0.100) to allocate
# to connecting clients.  Leave this line commented
# out unless you are ethernet bridging.
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
# Configure server mode for ethernet bridging
# using a DHCP-proxy, where clients talk
# to the OpenVPN server-side DHCP server
# to receive their IP address allocation
# and DNS server addresses.  You must first use
# your OS's bridging capability to bridge the TAP
# interface with the ethernet NIC interface.
# Note: this mode only works on clients (such as
# Windows), where the client-side TAP adapter is
# bound to a DHCP client.
;server-bridge

Параметры сетевого моста.

# Push routes to the client to allow it
# to reach other private subnets behind
# the server.  Remember that these
# private subnets will also need
# to know to route the OpenVPN client
# address pool (10.8.0.0/255.255.255.0)
# back to the OpenVPN server.

 

;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"

Маршруты, для передачи клиенту.

# To assign specific IP addresses to specific
# clients or if a connecting client has a private
# subnet behind it that should also have VPN access,
# use the subdirectory "ccd" for client-specific
# configuration files (see man page for more info).
# EXAMPLE: Suppose the client
# having the certificate common name "Thelonious"
# also has a small subnet behind his connecting
# machine, such as 192.168.40.128/255.255.255.248.

# First, uncomment out these lines:

 

client-config-dir ccd

Путь к папке конфигурации клиентов. Потребуется для задания статических адресов и маршрутов к сетям клиента.

;route 10.9.0.0 255.255.255.252
;route 10.10.0.0 255.255.255.252
# Then create a file ccd/Thelonious with this line:
#   iroute 192.168.40.128 255.255.255.248
# This will allow Thelonious' private subnet to
# access the VPN.  This example will only work
# if you are routing, not bridging, i.e. you are
# using "dev tun" and "server" directives.

Для обеспечения доступа к сетям клиента, задаем маршруты к этим сетям. Заданные здесь маршруты будут добавлены к системным маршрутам. В режиме сервера, необходимо также задать внутренние маршруты параметром iroute в файле конфигурации клиента.

# EXAMPLE: Suppose you want to give
# Thelonious a fixed VPN IP address of 10.9.0.1.
# First uncomment out these lines:
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
# Then add this line to ccd/Thelonious:
#   ifconfig-push 192.168.254.10 192.168.254.9

Пример конфигурации клиента со статичным адресом и маршрутизацией к сети клиента.

# Suppose that you want to enable different
# firewall access policies for different groups
# of clients.  There are two methods:
# (1) Run multiple OpenVPN daemons, one for each#     group, and firewall the TUN/TAP interface
#     for each group/daemon appropriately.
# (2) (Advanced) Create a script to dynamically
#     modify the firewall in response to access
#     from different clients.  See man
#     page for more info on learn-address script.
;learn-address ./script

Путь к скрипту динамической настройки брандмауэра при подключении и отключении клиентов.

# If enabled, this directive will configure
# all clients to redirect their default
# network gateway through the VPN, causing
# all IP traffic such as web browsing and
# and DNS lookups to go through the VPN
# (The OpenVPN server machine may need to NAT
# or bridge the TUN/TAP interface to the internet
# in order for this to work properly).
;push "redirect-gateway def1 bypass-dhcp"

Команда push задает параметры конфигурации клиента.


Данный параметр предлагает клиенту использовать подключение как шлюз по умолчанию. Описание параметров смотрим на станице справки.

# Certain Windows-specific network settings
# can be pushed to clients, such as DNS
# or WINS server addresses.  CAVEAT:
# http://openvpn.net/faq.html#dhcpcaveats
# The addresses below refer to the public
# DNS servers provided by opendns.com.
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"

Позволяет задать клиенту адреса DNS серверов. Заявлено что работать будет только в Windows.

# Uncomment this directive to allow different
# clients to be able to "see" each other.
# By default, clients will only see the server.
# To force clients to only see the server, you
# will also need to appropriately firewall the
# server's TUN/TAP interface.

 

;client-to-client

Позволить клиентам подключаться между собой.

# Uncomment this directive if multiple clients
# might connect with the same certificate/key
# files or common names.  This is recommended
# only for testing purposes.  For production use,
# each client should have its own certificate/key
# pair.
#
# IF YOU HAVE NOT GENERATED INDIVIDUAL
# CERTIFICATE/KEY PAIRS FOR EACH CLIENT,
# EACH HAVING ITS OWN UNIQUE "COMMON NAME",# UNCOMMENT THIS LINE OUT.

 

;duplicate-cn

Разрешить одновременные подключения с одинаковым ключом.

# The keepalive directive causes ping-like
# messages to be sent back and forth over
# the link so that each side knows when
# the other side has gone down.
# Ping every 10 seconds, assume that remote
# peer is down if no ping received during
# a 120 second time period.M

 

keepalive 10 120

Пинговать клиент каждые 10 секунд, если за 120 секунд ответ не получен, считать соединение разорванным.

# For extra security beyond that provided
# by SSL/TLS, create an "HMAC firewall"
# to help block DoS attacks and UDP port flooding.
#
# Generate with:
#   openvpn --genkey --secret ta.key
#
# The server and each client must have
# a copy of this key.
# The second parameter should be '0'
# on the server and '1' on the clients.

 

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

Включает дополнительную пакетную авторизацию, раскомментируем ключ был сгенерирован нами ранее.

# Select a cryptographic cipher.

# This config item must be copied to

# the client config file as well.

# Note that 2.4 client/server will automatically

# negotiate AES-256-GCM in TLS mode.

# See also the ncp-cipher option in the manpage
cipher AES-256-CBC

Выбор алгоритма шифрования, должен совпадать с клиентом.

# Enable compression on the VPN link and push the

# option to the client (2.4+ only, for earlier

# versions see below)
;compress lz4-v2

;push «compress lz4-v2»


# For compression compatible with older clients use comp-lzo

# If you enable it here, you must also

# enable it in the client config file.
;comp-lzo

Включает сжатие трафика, должно совпадать с клиентом.

# The maximum number of concurrently connected
# clients we want to allow.
;max-clients 100

Число одновременных подключений.

# It's a good idea to reduce the OpenVPN# daemon's privileges after initialization.
#
# You can uncomment this out on
# non-Windows systems.
;user nobody
;group nogroup

Ограничить права демона заданным пользователем и группой.

# The persist options will try to avoid
# accessing certain resources on restart
# that may no longer be accessible because
# of the privilege downgrade.
persist-key
persist-tun

 


Сохранять ключи в памяти. Не пересоздавать туннель при реконнекте. Опции требуются для работы с ограниченными правами.


 

# Output a short status file showing
# current connections, truncated
# and rewritten every minute.
status openvpn-status.log

Путь к файлу статуса, содержит список текущих соединений, обновляется раз в минуту.

# By default, log messages will go to the syslog (or
# on Windows, if running as a service, they will go to
# the "\Program Files\OpenVPN\log" directory).
# Use log or log-append to override this default.
# "log" will truncate the log file on OpenVPN startup,
# while "log-append" will append to it.  Use one
# or the other (but not both).
;log         openvpn.log
;log-append  openvpn.log

Путь к лог-файлу, по умолчанию протокол пишется в syslog.

# Set the appropriate level of log
# file verbosity.
## 0 is silent, except for fatal errors
# 4 is reasonable for general usage
# 5 and 6 can help to debug connection problems
# 9 is extremely verbose
verb 3

Уровень детальности протоколирования.

# Silence repeating messages.  At most 20
# sequential messages of the same message
# category will be output to the log.
;mute 20

Не писать в лог сообщения, повторяющиеся более заданного числа раз.

;tun-mtu 1300
;mssfix 1300
;fragment 1300

Если интернет подключен через VPN, то для успешного прохождения пакетов, необходимо уменьшить размер пакета в туннеле.


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


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

Параметры клиентов на сервере

Путь к папке с конфигами задается параметром client-config-dir основного файла конфигурации.

Создаем и переходим в папку:

mkdir /usr/local/etc/openvpn/ccd && cd /usr/local/etc/openvpn/ccd

Имя файла конфигурации клиента берется из поля Common Name сертификата, которое обычно совпадает с именем ключа.

Создаем конфиг клиента:

ee client

Задаем параметры:

#Задаем локальный и удаленный IP-адрес клиента.
#В режиме сервера, адрес будет присвоен автоматически, задавать его явно необязательно.
;ifconfig-push 192.168.254.10 192.168.254.9

#В режиме сервера задаем внутренние маршруты OpenVPN к сетям клиента.
;iroute 192.168.40.128 255.255.255.248

Допустимы также команды настройки клиента: push и push-reset. Push-reset отменяет передачу параметров заданных в глобальном файле настроек.

Параметры запуска

Правим /etc/rc.conf:

ee /etc/rc.conf

Включаем OpenVPN, указываем запуск в режиме сервера и тип интерфейса, для которого необходимо загрузить драйвер. Задаем путь к конфигу.

openvpn_enable="YES"
openvpn_flags="--tls-server"
openvpn_if="tun"            # driver(s) to load, set to "tun", "tap" or "tun tap"
openvpn_configfile="/usr/local/etc/openvpn/server.conf"

Для использования tap-интерфейса, в /boot/loader.conf потребуется добавить строку: if_tap_load=»YES», и перезагрузить систему.

Брандмауэр

Для ipfw правила будут примерно следующие.

Разрешаем все соединения через туннель:

ipfw add allow all from any to any via tun0

Разрешаем исходящие и входящие подключения к серверу:

ipfw add allow udp from any to me 1194
ipfw add allow udp from me 1194 to any

Запуск

Запускаем сервер:

service openvpn start

Проверяем, стартанул ли демон:

ps -ax | grep openvpn

Проверяем, открылся ли порт:

sockstat -4l | grep openvpn

Проверяем сообщения в лог-файле:

cat /var/log/messages

Настройка клиента

Устанавливаем OpenVPN.

Создаем и переходим в папку с файлами конфигурации:

mkdir /usr/local/etc/openvpn && cd /usr/local/etc/openvpn

Копируем сертификат и ключи клиента: ca.crt, client.crt, client.key, ta.key. Ключи являются текстовыми файлами, если прямое копирование затруднено, можно использовать буфер обмена SSH-клиента.

Ограничиваем доступ к ключам:

chmod 600 client.key ta.key && chown root:wheel client.key ta.key

Копируем шаблон конфига клиента:

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

Редактируем файл конфигурации:

ee client.conf

Конфигурация клиента (client.conf):
























##############################################
# Sample client-side OpenVPN 2.0 config file #
# forconnecting to multi-client server.      #
#                                            #
# This configuration can be used by multiple #
# clients, however each client should have   #
# its own certand keyfiles.                  #
#                                            #
# On Windows, you might want to rename this  #
# file so ithas a .ovpnextension             #
##############################################

 

# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client

Режим клиента, применять настройки, получаемые от сервера.

# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.

;dev tap
dev tun

Тип интерфейса.

# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one. On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.

;dev-node MyTap

Специфично для Windows.

# Are we connecting to a TCP or
# UDP server? Use the same setting as
# on the server.

;proto tcp-client
proto udp

Протокол.

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.

remote my-server-1 1194
;remote my-server-2 1194

Адрес и порт сервера. Можно задать несколько адресов.

# Choose a random host from the remote
# list for load-balancing. Otherwise
# try hosts in the order specified.

;remote-random

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

# Keep trying indefinitely to resolve the
# host name of the OpenVPN server. Very useful
# on machines which are not permanently connected
# to the internet such as laptops.

resolv-retry infinite

Запрашивать адрес в DNS при каждом подключении, полезно, если у сервера динамический адрес.

# Most clients don't need to bind to
# a specific local port number.

nobind

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

# Downgrade privileges after initialization (non-Windows only)

;user nobody
;group nobody

Ограничить права демона заданным пользователем и группой.

# Try to preserve some state across restarts.

persist-key
persist-tun

Сохранять ключи в памяти. Не пересоздавать туннель при реконнекте. Опции требуются для работы с ограниченными правами.

# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here. See the man page
# if your proxy server requires
# authentication.

 

;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]

Подключаться через прокси-сервер.

# Wireless networks often produce a lot
# of duplicate packets. Set this flag
# to silence duplicate packet warnings.

;mute-replay-warnings

Не протоколировать сообщения о повторяющихся пакетах, полезно при связи через беспроводную сеть.

# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.

 

ca ca.crt
cert client.crt
key client.key

Задаем ключи авторизации.

# Verify server certificate by checking
# that the certicate has the nsCertType
# field set to "server". This is an
# important precaution to protect against
# a potential attack discussed here:
# http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server". The build-key-server
# script in the easy-rsa folder will do this.

;ns-cert-type server
remote-cert-tls server

Проверка подлинности сервера.


В версии 2.1 и выше рекомендуется заменить на:


remote-cert-tls server


В ранних версиях использовать:


ns-cert-type server

# If a tls-auth key is used on the server
# then every client must also have the key.

tls-auth ta.key 1

Включает пакетную авторизацию, если была включена на сервере.

# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.

;cipher x

Алгоритмы шифрования, должны совпадать с сервером.

# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.

comp-lzo

Использовать сжатие трафика, параметр должен совпадать с сервером.

# Set log file verbosity.

verb 3

Уровень детальности протоколирования.

# Silence repeating messages

;mute 20

Не писать в лог более заданного количества одинаковых сообщений подряд.

;tun-mtu 1300
;mssfix 1300
;fragment 1300

Если интернет подключен через VPN, то для успешного прохождения пакетов, необходимо уменьшить размер пакета в туннеле.


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


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

Параметры запуска

Правим /etc/rc.conf:

ee /etc/rc.conf

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

openvpn_enable="YES"
openvpn_if="tun"            # driver(s) to load, set to "tun", "tap" or "tun tap"
openvpn_configfile="/usr/local/etc/openvpn/client.conf"

Брандмауэр

Для ipfw правила будут примерно следующие:

Разрешить все соединения через туннель:

ipfw add allow all from any to any via tun0

Разрешаем исходящие и входящие подключения к серверу:

ipfw add allow udp from any to me 1194
ipfw add allow udp from me 1194 to any

Запуск

Запускаем клиент:

service openvpn start

Проверяем сообщения в лог-файле:

cat /var/log/messages

Проверяем, открылся ли туннель:

ifconfig

Пингуем удаленный сервер.

Пингуем хосты в сети за сервером.

В случае проблем мониторим туннель:

tcpdump -ni tun0

Параллельно мониторим физический канал:

tcpdump -ni $pif udp port 1194

Проверяем маршруты к удаленным сетям:

traceroute -P ICMP УдаленныйАдрес

Дополнительная информация

Документация: http://openvpn.net/index.php/open-source/documentation.html

установка и настройка OpenVPN клиента

Устанавливаем OpenVPN клиент:

# cd /usr/ports/security/openvpn/ && make install clean

Создаем рабочий каталог и файлы для логов:

# mkdir /var/log/openvpn/
# touch /var/log/openvpn/openvpn-status.log
# touch /var/log/openvpn/openvpn.log

Если каталога /usr/local/etc/openvpn/ нет — создайте его вручную.

Создаем наш файл конфигурации. В него вписываем данные:

# cat /usr/local/etc/openvpn/openvpn.conf
dev tun
proto udp
remote 77.***.***.** 1194
client
client
resolv-retry infinite
ca /home/setevoy/.openvpn/config/ca.crt
cert /home/setevoy/.openvpn/config/setevoy.crt
key /home/setevoy/.openvpn/config/setevoy.key
nobind
persist-key
persist-tun
comp-lzo
verb 3
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 3

В каталог /home/setevoy/.openvpn/config/ копируем наши файлы сертифката и сам ключ.

Запускаем:

# /usr/local/etc/rc.d/openvpn onestart
Starting openvpn.
Enter Private Key Password:

Проверяем:

# ps axw | grep openvpn
93030  ??  Ss     0:00.03 /usr/local/sbin/openvpn —cd /usr/local/etc/openvpn —daemon openvpn —config /usr/local/etc/openvpn/openvpn.conf —writepid /var/run/openvpn.pid
93076   2  S+     0:00.00 grep openvpn

# ping 10.5.10.14
PING 10.5.10.14 (10.5.10.14): 56 data bytes
64 bytes from 10.5.10.14: icmp_seq=0 ttl=63 time=1.853 ms
64 bytes from 10.5.10.14: icmp_seq=1 ttl=63 time=1.931 ms

Если требуется запускать VPN-сеть вместе с системой — в файл /etc/rc.conf добавляем:

# cat /etc/rc.conf | grep open
openvpn_enable=»YES»
openvpn_if=»tun»
openvpn_configfile=»/usr/local/etc/openvpn/openvpn.conf»
openvpn_dir=»/usr/local/etc/openvpn»

При необходимости в /etc/resolv.conf добавляем локальный NS сети, к которой мы подключаемся по VPN, в данном случае 10.0.10.3:

# cat /etc/resolv.conf
nameserver 10.0.10.3
nameserver 192.168.1.1

Сервер 192.168.1.1 — это локальный DNS сети, в котором изчально находится машина.

Другой вариант, если VPN не используется постоянно — не добавлять записи в /etc/rc.conf и /etc/resolv.conf, а создать 3 небольших скрипта для запуска, перезапуска и остановки OpenVPN:

# cat vpn.start

#!/usr/local/bin/bash
echo «nameserver 10.0.10.3» > /etc/resolv.conf
echo «nameserver 192.168.1.1» >> /etc/resolv.conf
/usr/local/etc/rc.d/openvpn onestart
service openvpn onestatus

Перезапуск VPN:

# cat vpn.restart

#!/usr/local/bin/bash
/usr/local/etc/rc.d/openvpn onerestart
service openvpn onestatus

Остановка OpenVPN:

# cat vpn.halt

#!/usr/local/bin/bash
/usr/local/etc/rc.d/openvpn onestop
echo «nameserver 192.168.1.1» > /etc/resolv.conf
service openvpn onestatus

Не забываем установить права на выполнение:

$ chmod +x vpn.start vpn.restart vpn.restart

В результате, сеть должна придти к такому виду:

# ifconfig

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
ether 1c:6f:65:72:fb:df
inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (100baseTX )
status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8
inet 127.0.0.1 netmask 0xff000000
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
options=80000
inet6 fe80::1e6f:65ff:fe72:fbdf%tun0 prefixlen 64 scopeid 0x9
inet 10.5.99.186 —> 10.5.99.185 netmask 0xffffffff
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
Opened by PID 2038

Из таблицы ниже — сети 10.*, 77.*, 82.* — это внутренние адреса VPN-сети. Сеть 192.168.1.0/24 — соответственно, локальная сеть настраиваемого клиента.

# netstat -rn

Routing tables

Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.1 UGS 0 14805 re0
10.0.0.0/8 10.5.99.185 UGS 0 1507 tun0
10.5.99.1/32 10.5.99.185 UGS 0 0 tun0
10.5.99.185 link#9 UH 0 0 tun0
10.5.99.186 link#9 UHS 0 0 lo0
77.120.112.132/32 10.5.99.185 UGS 0 0 tun0
82.144.192.33/32 10.5.99.185 UGS 0 0 tun0
82.144.193.236/32 10.5.99.185 UGS 0 0 tun0
82.144.193.241/32 10.5.99.185 UGS 0 0 tun0
83.218.234.20/32 10.5.99.185 UGS 0 0 tun0
127.0.0.1 link#8 UH 0 762 lo0
192.168.1.0/24 link#1 U 0 152 re0
192.168.1.2 link#1 UHS 0 10 lo0
Internet6:
Destination Gateway Flags Netif Expire
::/96 ::1 UGRS lo0
::1 ::1 UH lo0
::ffff:0.0.0.0/96 ::1 UGRS lo0
fe80::/10 ::1 UGRS lo0
fe80::%lo0/64 link#8 U lo0
fe80::1%lo0 link#8 UHS lo0
fe80::%tun0/64 link#9 U tun0
fe80::1e6f:65ff:fe72:fbdf%tun0 link#9 UHS lo0
ff01::%lo0/32 ::1 U lo0
ff01::%tun0/32 fe80::1e6f:65ff:fe72:fbdf%tun0 U tun0
ff02::/16 ::1 UGRS lo0
ff02::%lo0/32 ::1 U lo0
ff02::%tun0/32 fe80::1e6f:65ff:fe72:fbdf%tun0 U tun0

Установка и настройка OpenVPN | www.info-x.org

В данной статье описывается один из методов организации доступа к локальным ресурсам удаленной сети посредством технологии VPN. Я знаю всего пару хороших VPN серверов, работающих под FreeBSD, которые позволяют решить широкий круг задач: MPD и OpenVPN. Каждый из них обладает своими достоинствами и недостатками, поэтому выбирать какой ставить, следует в зависимости от поставленной задачи. К примеру, с помощью MPD можно сделать VPN сервер, авторизующий клиентов только по паре логин/пароль, к которому можно подключиться стандартными средствами Windows. В тоже время для подключения к OpenVPN, клиенту будет необходим, как минимум, определенный сертификат, а так же одноименное клиентское приложение. Зато OpenVPN позволяет организовать соединение, которое работает на втором уровне сетевой модели OSI, что открывает доступ для широковещательного трафика. Именно поэтому был выбран сервер OpenVPN для решения следующей задачи: организация доступа пользователям к локальным ресурсам удаленной сети, с возможностью циркуляции по соединению широковещательного трафика.

Итак, идем в порты и устанавливаем OpenVPN. На момент написания статьи в портах доступен сервер версии 2.2.2. В окне параметров сборки я ничего не изменял.

  1. # cd /usr/ports/security/openvpn

  2. # make install clean

Далее необходимо создать сертификаты для сервера и нарисовать конфигурационный файл. Для создания сертификатов с портом также ставится набор скриптов, который находится тут — /usr/local/share/doc/openvpn/easy-rsa/2.0. Для удобства, я скопировал их в папку с конфигурационными файлами OpenVPN — /usr/local/etc/openvpn.

  1. # mkdir /usr/local/etc/openvpn/easy-rsa

  2. # cp -R /usr/local/share/doc/openvpn/easy-rsa/2.0 /usr/local/etc/openvpn/easy-rsa

Теперь надо отредактировать конфигурационный файл для скриптов — /usr/local/etc/openvpn/easy-rsa/vars. Я изменил только эти параметры:

  1. # Если у вас паранойя, то увеличьте это значение до 2048 бит.

  2. # Это замедлит процесс согласования TLS и генерацию

  3. # ключа Диффи-Хеллмана.

  4. export KEY_SIZE=1024

  5.  

  6. # Время жизни сертификатов.

  7. export CA_EXPIRE=9999

  8. export KEY_EXPIRE=9999

  9.  

  10. # Эти значения используются при создании сертификатов.

  11. # Они всегда должны быть заданы.

  12. export KEY_COUNTRY=»RU»

  13. export KEY_PROVINCE=»Russia»

  14. export KEY_CITY=»Yekaterinburg»

  15. export KEY_ORG=»www.example.org»

  16. export KEY_EMAIL=»[email protected]»

  17. export KEY_CN=»vpn.example.org»

  18. export KEY_NAME=»Nekit»

Теперь можно приступить к созданию сертификатов. Для этого переключаемся в стандартную оболочку и инициализируем переменные окружения. Все действия осуществляются в директории — /usr/local/etc/openvpn/easy-rsa.

  1. ### Переключаемся в стандартную оболочку

  2. # sh

  3.  

  4. ### Инициализируем переменные окружения

  5. # . ./vars

  6. # ./clean-all

Создаем главный сертификат и ключ:

  1. # ./build-ca

  2. Generating a 1024 bit RSA private key

  3. ……………..++++++

  4. …………..++++++

  5. writing new private key to ‘ca.key’

  6. ——

  7. You are about to be asked to enter information that will be incorporated

  8. into your certificate request.

  9. What you are about to enter is what is called a Distinguished Name or a DN.

  10. There are quite a few fields but you can leave some blank

  11. For some fields there will be a default value,

  12. If you enter ‘.’, the field will be left blank.

  13. ——

  14. Country Name (2 letter code) [RU]:

  15. State or Province Name (full name) [Russia]:

  16. Locality Name (eg, city) [Yekaterinburg]:

  17. Organization Name (eg, company) [www.example.org]:

  18. Organizational Unit Name (eg, section) [none]:

  19. Common Name (eg, your name or your server’s hostname) [vpn.example.org]:

  20. Name [Nekit]:

  21. Email Address [[email protected]]:

Генерируем сертификат и ключ для сервера:

  1. # openvpn —genkey —secret /usr/local/etc/openvpn/easy-rsa/keys/ta.key

  2. # ./build-key-server server

  3. Generating a 1024 bit RSA private key

  4. ………………………………………………………………………………..++++++

  5. …..++++++

  6. writing new private key to ‘server.key’

  7. ——

  8. You are about to be asked to enter information that will be incorporated

  9. into your certificate request.

  10. What you are about to enter is what is called a Distinguished Name or a DN.

  11. There are quite a few fields but you can leave some blank

  12. For some fields there will be a default value,

  13. If you enter ‘.’, the field will be left blank.

  14. ——

  15. Country Name (2 letter code) [RU]:

  16. State or Province Name (full name) [Russia]:

  17. Locality Name (eg, city) [Yekaterinburg]:

  18. Organization Name (eg, company) [www.example.org]:

  19. Organizational Unit Name (eg, section) [none]:

  20. Common Name (eg, your name or your server’s hostname) [server]:

  21. Name [Nekit]:

  22. Email Address [[email protected]]:

  23.  

  24. Please enter the following ‘extra’ attributes

  25. to be sent with your certificate request

  26. A challenge password []:

  27. An optional company name []:

  28. Using configuration from /usr/local/etc/openvpn/test/openssl-0.9.8.cnf

  29. Check that the request matches the signature

  30. Signature ok

  31. The Subject’s Distinguished Name is as follows

  32. countryName           :PRINTABLE:’RU’

  33. stateOrProvinceName   :PRINTABLE:’Russia’

  34. localityName          :PRINTABLE:’Yekaterinburg’

  35. organizationName      :PRINTABLE:’www.example.org’

  36. organizationalUnitName:PRINTABLE:’none’

  37. commonName            :PRINTABLE:’server’

  38. name                  :PRINTABLE:’Nekit’

  39. emailAddress          :IA5STRING:’[email protected]

  40. Certificate is to be certified until Jan 13 16:39:10 2040 GMT (9999 days)

  41. Sign the certificate? [y/n]:y

  42.  

  43. 1 out of 1 certificate requests certified, commit? [y/n]y

  44. Write out database with 1 new entries

  45. Data Base Updated

Генерируем ключ Диффи-Хеллмана:

  1. # ./build-dh

  2. Generating DH parameters, 1024 bit long safe prime, generator 2

  3. This is going to take a long time

  4. ……..+………………………………………+……..

Все файлы после работы скриптов помещаются в директорию keys. Теперь можно переходить к настройке сервера. Приводим файл /usr/local/etc/openvpn/server.conf примерно к такому виду:

  1. # На каком IP адресе сервер будет принимать соединения от клиентов.

  2. # Можно не задавать, тогда сервер будет принимать подключения на всех интерфейсах.

  3. ;local a.b.c.d

  4.  

  5. # На какой порт принимать соединения?

  6. port 1194

  7.  

  8. # TCP или UDP сервер?

  9. ;proto tcp

  10. proto udp

  11.  

  12. # «dev tun» создаст маршрутизируемый IP туннель.

  13. # «dev tap» создаст Ethernet туннель.

  14. # Укажите здесь, например, «dev tap0», если вам нужно сделать мост.

  15. # Также вам нужно будет перед запуском сервера создать интерфейс

  16. # с таким же именем.

  17. dev tap0

  18. ;dev tun

  19.  

  20. # Корневой сертификат SSL/TLS. Сервер и каждый клиент должны иметь

  21. # собственные сертификаты и ключи. Но корневой сертификат (только он)

  22. # один для всех.

  23. ca /usr/local/etc/openvpn/easy-rsa/keys/ca.crt

  24. cert /usr/local/etc/openvpn/easy-rsa/keys/server.crt

  25. key /usr/local/etc/openvpn/easy-rsa/keys/server.key

  26.  

  27. # Ключ Диффи-Хеллмана.

  28. dh /usr/local/etc/openvpn/easy-rsa/keys/dh2024.pem

  29.  

  30. # Данный параметр говорит OpenVPN работать в качестве сервера

  31. # и использовать указанную здесь подсеть. Первый из подсети адрес

  32. # сервер возьмет себе, остальные же будут выдаваться клиентам.

  33. # Закомментируйте данный параметр, если вам нужен режим моста.

  34. #server 10.8.0.0 255.255.255.0

  35.  

  36. # В этом файле сервер сохраняет данные вида: клиент <-> IP адрес.

  37. # Если сервер аварийно завершится, то после возобновления работы

  38. # сервера, восстановивший соединение клиент получит тот же

  39. # IP адрес, который был до обрыва.

  40. #ifconfig-pool-persist ipp.txt

  41.  

  42. # Включить режим сервера для моста. Только сначала вам необходимо

  43. # подготовить в ОС мост и добавить в него TAP интерфейс. Здесь

  44. # указывается 4 параметра: IP и маска моста, а также пул адресов,

  45. # адреса из которого будут выданы клиентам.

  46. #server-bridge 192.168.7.250 255.255.255.0 192.168.7.51 192.168.7.100

  47.  

  48. # Смысл такой же, как и в предыдущем параметре, только выдачей

  49. # адресов клиентам будет заниматься DHCP сервер (должен быть настроен отдельно).

  50. server-bridge nogw

  51.  

  52. # Маршруты, которые будут добавлены на клиентской машине

  53. # при подключении.

  54. ;push «route 192.168.10.0 255.255.255.0»

  55. ;push «route 192.168.20.0 255.255.255.0»

  56.  

  57. # Если раскомментировать данный параметр, то для клиентов

  58. # эта машина будет шлюзом по умолчанию.

  59. ;push «redirect-gateway def1 bypass-dhcp»

  60.  

  61. # Можно передать клиенту дополнительные параметры для сетевого

  62. # подключения, например адреса DNS или WINS серверов.

  63. # За дополнительной информацией идти по этой ссылке:

  64. # http://openvpn.net/faq.html#dhcpcaveats

  65. ;push «dhcp-option DNS 208.67.222.222»

  66. ;push «dhcp-option DNS 208.67.220.220»

  67.  

  68. # Раскомменитруйте данный параметр, чтобы клиенты могла видеть

  69. # друг друга. По умолчанию клиенты могут отправлять запросы

  70. # только серверу.

  71. client-to-client

  72.  

  73. # Раскомментируйте данный параметр, если вы хотите разрешить

  74. # подключение нескольких клиентов с одинаковым значением поля

  75. # Common Name в сертификате.

  76. duplicate-cn

  77.  

  78. # Проверять каждые 10 секунд жив ли клиент. Если за 120 секунд он

  79. # не откликнется, то соединение будет разорвано.

  80. keepalive 10 120

  81.  

  82. # Для дополнительной безопасности (block DoS attacks and

  83. # UDP port flooding) сгенерируйте ключ командой

  84. #   openvpn —genkey —secret ta.key

  85. # и укажите путь к нему здесь. Второй параметр должен быть

  86. # ‘0’ для сервера и ‘1’ для клиента.

  87. tls-auth /usr/local/etc/openvpn/easy-rsa/keys/ta.key 0 # This file is secret

  88.  

  89. cipher BF-CBC        # Blowfish (default)

  90. ;cipher AES-128-CBC   # AES

  91. ;cipher DES-EDE3-CBC  # Triple-DES

  92.  

  93. # Разрешить компрессию трафика по соединению.

  94. # Если включено на сервере, то у клиента тоже должно быть.

  95. comp-lzo yes

  96.  

  97. # Максимальное количество одновременных соединений.

  98. max-clients 100

  99.  

  100. # Группа и пользователь, под которыми будет работать демон сервера.

  101. user nobody

  102. group nobody

  103.  

  104. persist-key

  105. persist-tun

  106.  

  107. # Выводить информацию о текущих подключениях в данный файл.

  108. # Файл обнуляется каждую минуту, а запись идет с самого начала.

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

  110.  

  111. # Писать логи в файл.

  112. log         /var/log/openvpn/openvpn.log

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

  114.  

  115. # Уровень отладки:

  116. # 0 — выводятся только фатальные ошибки

  117. # 4 — рекомендуется

  118. # 5 и 6  — помогут при отладке

  119. # 9 — выводится все подряд

  120. verb 3

  121.  

  122. # Не больше указанного здесь количества одинаковых (повторяющихся)

  123. # сообщений будет выведено в файл.

  124. ;mute 20

Стоит обратить внимание на выбранный сетевой интерфейс tap (который эмулирует канал Ethernet), именно по нему может циркулировать широковещательный трафик. После создания конфига необходимо разрешить в /etc/rc.conf запуск OpenVPN при старте системы, а также настроить автоматическое создание и конфигурирование интерфейсов bridge и tap. Сначала добавляем необходимые модули в /boot/loader.conf:

  1. if_bridge_load=»YES»

  2. if_tap_load=»YES»

Теперь делаем примерно такие записи в /etc/rc.conf:

  1. cloned_interfaces=»bridge0 tap0″

  2. ifconfig_nfe0=»up»

  3. ifconfig_tap0=»up»

  4. ifconfig_bridge0=»inet 192.168.7.250 netmask 0xffffff00 broadcast 192.168.7.255 addm nfe0 addm tap0″

  5.  

  6. openvpn_enable=»YES»

  7. openvpn_if=»tap»

  8. openvpn_configfile=»/usr/local/etc/openvpn/server.conf»

Чтобы не перезагружать компьютер можно выполнить следующие команды, которые создают мост, добавляют в него интерфейсы и запускают OpenVPN:

  1. # kldload if_tap

  2. # kldload if_bridge

  3.  

  4. # ifconfig tap0 create

  5. # ifconfig bridge0 create

  6. # ifconfig bridge0 addm nfe0

  7. # ifconfig bridge0 addm tap0

  8. # ifconfig bridge0 inet 192.168.7.250 netmask 0xffffff00

  9.  

  10. # service openvpn start

Можно проверить запустился ли сервер:

  1. # sockstat -4 -l | grep openvpn

  2. nobody   openvpn    1316  4  udp4   *:1194                *:*

Если сервер OpenVPN не запустился, значит нужно смотреть логи и искать ошибку. Если все заработало, то можно приступить к настройке клиента.

С клиентом все проще, для его работы нужно сгенерировать сертификат и нарисовать конфиг. Также клиенту надо будет предоставить ранее сгенерированный корневой сертификат. Генерируем сертификат для клиента:

  1. # pwd

  2. /usr/local/etc/openvpn/easy-rsa

  3.  

  4. # sh

  5. # . ./vars

  6. # ./build-key client

  7. Generating a 1024 bit RSA private key

  8. ……………………………….++++++

  9. ………++++++

  10. writing new private key to ‘client.key’

  11. ——

  12. You are about to be asked to enter information that will be incorporated

  13. into your certificate request.

  14. What you are about to enter is what is called a Distinguished Name or a DN.

  15. There are quite a few fields but you can leave some blank

  16. For some fields there will be a default value,

  17. If you enter ‘.’, the field will be left blank.

  18. ——

  19. Country Name (2 letter code) [RU]:

  20. State or Province Name (full name) [Russia]:

  21. Locality Name (eg, city) [Yekaterinburg]:

  22. Organization Name (eg, company) [www.example.org]:

  23. Organizational Unit Name (eg, section) [none]:

  24. Common Name (eg, your name or your server’s hostname) [client]:

  25. Name [Nekit]:

  26. Email Address [[email protected]]:

  27.  

  28. Please enter the following ‘extra’ attributes

  29. to be sent with your certificate request

  30. A challenge password []:

  31. An optional company name []:

  32. Using configuration from /usr/local/etc/openvpn/test/openssl-0.9.8.cnf

  33. Check that the request matches the signature

  34. Signature ok

  35. The Subject’s Distinguished Name is as follows

  36. countryName           :PRINTABLE:’RU’

  37. stateOrProvinceName   :PRINTABLE:’Russia’

  38. localityName          :PRINTABLE:’Yekaterinburg’

  39. organizationName      :PRINTABLE:’www.example.org’

  40. organizationalUnitName:PRINTABLE:’none’

  41. commonName            :PRINTABLE:’client’

  42. name                  :PRINTABLE:’Nekit’

  43. emailAddress          :IA5STRING:’[email protected]

  44. Certificate is to be certified until Jan 14 06:13:31 2040 GMT (9999 days)

  45. Sign the certificate? [y/n]:y

  46.  

  47. 1 out of 1 certificate requests certified, commit? [y/n]y

  48. Write out database with 1 new entries

  49. Data Base Updated

Теперь можно установить клиент OpenVPN. Я буду устанавливать и настраивать его на винде. Скачать дистрибутив OpenVPN для Windows можно отсюда. По оканчании установки идем в папку куда был установлен OpenVPN и создаем в ней подпапку config. В папке config должны находиться следующие файлы:

  • Корневой сертификат
  • Клиентский сертификат и ключ
  • Ключ, созданный для дополнительной защиты (его можно и не использовать, но если сервер его использует, то и клиент должен)

Также там должен быть конфигурационный файл (с расширением *.ovpn), содержание которого имеет такой вид:

  1. client

  2.  

  3. # Адрес сервера

  4. remote vpn.example.org 1194

  5.  

  6. # Использовать TCP или UDP?

  7. proto udp

  8.  

  9. # Проверить доступность сервера. Данная опция может быть полезна

  10. # людям, которые

web интерфейс для openvpn

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

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Курс стоящий, все подробности читайте по ссылке. Есть бесплатные курсы.

К моему удивлению, никаких готовых бесплатных решений на эту тему нет. Мне пришлось долго разбираться, прежде чем нашел более ли менее приемлемый вариант. В конечном итоге я остановился на такой связке — сервер freebsd 10, установленный webmin и модуль OpenVPN-admin. Модуль не особо популярный, сайт разработчика на непонятном языке, документации толком нет. Но я разобрался и настроил. В итоге получил возможность через web-интерфейс:

1. Редактировать настройки сервера.
2. Генерировать сертификаты пользователей.
3. Задавать пользовательские настройки.
4. Выгружать в едином архиве все необходимые сертификаты с уже готовым файлом настроек пользователя.

Приступим к настройке.

Установка openvpn

Итак, у нас имеется:

FreeBSD websrv.local 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401

Перво-наперво обновляем порты:

# portsnap fetch update

И устанавливаем openvpn:

# cd /usr/ports/security/openvpn
 # make install clean

Добавляем openvpn в автозагрузку:

# echo 'openvpn_enable="YES"' >> /etc/rc.conf

Больше пока ничего не делаем.

Установка и настройка webmin

Ставим webmin:

# cd /usr/ports/sysutils/webmin
 # make install clean

Добавляем webmin в автозагрузку:

# echo 'webmin_enable="YES"' >> /etc/rc.conf

После установки запускаем настройку. Я сразу же меняю стандартный порт webmin на что-то экзотическое. Это пусть и не сильно, но повышает безопасность сервера.

# /usr/local/lib/webmin/setup.sh

Я все настройки оставляю по-умолчанию, только, как уже сказал, меняю порт, например на 11111 и в конце на вопрос:

Use SSL (y/n): y

отвечаю положительно.

После настройки, запускаем webmin:

# /usr/local/etc/rc.d/webmin start

Чтобы зайти в панель управления, вводим в браузере адрес:

https://ip-adress:11111/

Настройка Webmin OpenVPN admin

Теперь скачиваем модуль для webmin

http://www.openit.it/index.php/en/downloads?task=view.download&cid=27

На всякий случай скопирую себе, если ссылка умрет:

//serveradmin.ru/files/openvpn-2.6.wbm.gz

Добавим модуль в webmin. Идем в раздел Webmin -> Webmin Configuration -> Webmin Modules, выбираем From uploaded file, указываем скачанный файл и жмем install module

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

Сам модуль располагается в разделе Servers -> OpenVPN + CA. Отправляемся туда. Первым делом вы увидите сообщение:

OpenVPN executable not found

The OpenVPN package can be automatically installed by Webmin. Click here to have it downloaded and installed using .Or reconfigure paths using Module Configuration.

Модуль не обнаружил установленный openvpn. Поможем ему это сделать. Создадим папку:

# mkdir /usr/local/etc/openvpn

Снова отправляемся в управление модулем. Нас встречает уже другое сообщение:

openssl.cnf batch file not found

The OpenSSL package can be automatically installed by Webmin. Click here to have it downloaded and installed using .Or reconfigure paths using Module Configuration.

Соглашаемся с предложением установить OpenSSL. Жмем Click here и ждем окончания установки.

Теперь все готово. Можно генерировать корневой сертификат сервера. Идем в Servers -> OpenVPN + CA, заполняем поля формы и жмем Save:

Мы сформировали корневые сертификаты сервера. Проверить их можно в разделе модуля Certification Authority List. Сверху в списке будет единственный наш сервер.

Теперь создадим сервер openvpn. Идем в раздел VPN List и нажимаем New Vpn server. Получаем ошибку:

No server keys configured

Все верно, прежде чем создать рабочий сервер, необходимо сделать для него серверный ключ. Снова идем в раздел Certification Authority List, в строке с нашим сервером, справа, в самом конце нажимаем на ссылку Keys list. Открывается интерфейс создания ключей. Создадим сразу ключ сервера и первого клиента.

Для сервера выбираем в выпадающем списке Server, остальные поля оставляем как есть. Если задать пароль, то при подключении клиента будет выводиться запрос на ввод пароля. Если это не нужно, то поле пароль оставляем пустым:

Создали два сертификата. Теперь идем создавать сервер. В разделе VPN List нажимаем New Vpn server. Тут нам открывается длинная форма для ввода настроек сервера. Я не буду подробно останавливаться на настройках. Это стандартные параметры файла конфигураций openvpn, в интернете много описаний на эту тему. Я приведу скриншоты своих настроек. Обращаю лишь внимание на пункт Encrypt packets with cipher algorithm (option cipher) Я там выбрал AES-128-CBC 128 bit default key (fixed) Это не случайный выбор. С другими значениями у меня были ошибки при подключении клиентов, сейчас я уже не помню какие, но методом проб и ошибок я пришел к этому значению. С ним все нормально работает.

Сохраняем настройки. В списке серверов появился наш сервер:

Дальше добавим клиента. Нажимаем в строке нашего сервера на ссылку Client list и жмем кнопку New Vpn client. Выбираем единственный созданный нами сертификат client1 и заполняем форму с настройками клиента. Там все можно оставить по-умолчанию, кроме одного параметра remote (Remote IP) — тут указываем внешний адрес нашего сервера. В разделе ccd file content указываются дополнительные параметры клиента. Содержимое этого поля будет перенесено в созданный файл настроек пользователя. Сохраняем пользователя. Появился один пользователь в списке:

Если нажать на ссылку Export, скачается архив со всеми необходимыми сертификатами и файлом конфигурации пользователя. Это очень удобно. Этот архив можно в готовом виде передавать клиенту. В нем будет все, что необходимо для подключения. Сохраним его для тестового подключения, к которому у нас все готово. Идем в начальную страницу модуля и жмем кнопку Start VPN. В ответ получаю ошибку:

Command Execution Error /usr/local/etc/rc.d/openvpn start.

Чтобы разобраться в чем проблема, смотрим лог messages. Можно через консоль, можно тут же в webmin. Видим там строки:

websrv root: /usr/local/etc/rc.d/openvpn: WARNING: /usr/local/etc/openvpn/openvpn.conf is not readable.
websrv root: /usr/local/etc/rc.d/openvpn: WARNING: failed precmd routine for openvpn

Все ясно. Сервер не стартовал, потому что ищет настройки в файле /usr/local/etc/openvpn/openvpn.conf, а у нас его нет. Вместо него модуль openvpn admin создал файл websrv.local.conf Я не стал разбираться в чем тут дело. Это актуально, если у нас несколько серверов и нужно запускать отдельно каждый из них. А так как у нас он всего один и нам этого достаточно, то я решил просто явно указать через rc.conf файл конфигурации. Делается это так:

# echo 'openvpn_configfile="/usr/local/etc/openvpn/websrv.local.conf"' >> /etc/rc.conf

Пробуем снова запустить сервер через openvpn admin. Сервер успешно стартовал. Поднялся интерфейс tun0 с заданным адресом:

tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
options=80000<LINKSTATE>
inet6 fe80::20c:29ff:fe19:9976%tun0 prefixlen 64 scopeid 0x3
inet 10.0.0.1 --> 10.0.0.2 netmask 0xffffffff
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
Opened by PID 66606

В каталоге /usr/local/etc/openvpn/websrv.local созданы 3 папки: bin, ssd, logs. В ssd располагается файл настроек нашего пользователя client1. Его можно править как непосредственно тут, так и через webmin. В папке с логами лежат логи и файл ipp.txt, в котором сохраняются ip адреса, выданные клиентам, с тем, чтобы в случае повторного подключения выдать тот же адрес.

Теперь берем архив с настройками клиента и подключаемся к серверу:

Все в порядке. Через webmin можно отзывать сертификаты и удалять клиентов. Функционал небольшой, но, в принципе, достаточный в повседневной жизни. Теперь не обязательно заходить в консоль и готовить сертификаты с настройками для клиента. Все это можно сделать через web сайт и сразу же отдать файлы пользователю.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Дополнительные материалы по Freebsd

Онлайн курс по Linux

Если у вас есть желание освоить операционную систему Linux, не имея подходящего опыта, рекомендую познакомиться с онлайн-курсом Administrator Linux. Basic в OTUS. Курс для новичков, адаптирован для тех, кто только начинает изучение Linux. Обучение длится 4 месяца.

Что даст вам этот курс:

  • Вы получите навыки администрирования Linux (структура Linux, основные команды, работа с файлами и ПО).
  • Вы рассмотрите следующий стек технологий: Zabbix, Prometheus, TCP/IP, nginx, Apache, MySQL, Bash, Docker, Git, nosql, grfana, ELK.
  • Умение настраивать веб-сервера, базы данных (mysql и nosql) и работа с сетью.
  • Мониторинг и логирование на базе Zabbix, Prometheus, Grafana и ELK.
  • Научитесь командной работе с помощью Git и Docker.

Смотрите подробнее программу по .



Рекомендую полезные материалы по Freebsd:
  • Установка
  • Настройка
  • Обновление
  • Шлюз
  • Прокси сервер
  • Веб сервер NGINX
  • Веб сервер Apache

Описание установки Freebsd 11 на одиночный диск, либо на софтовый raid1, сделанный средствами zfs, которые поддерживает стандартный установщик.

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

Описание и нюансы обновления системы Freebsd с помощью утилиты freebsd-update. Показано пошагово на конкретном примере обновления.

Настройка Freebsd шлюза для обеспечения выхода в интернет. Используется ipfw и ядерный нат, dnsmasq в качестве dhcp и dns сервера. Мониторинг сетевой активности с помощью iftop.

Настройка максимально быстрого web сервера на базе Freebsd и nginx + php-fpm. Существенный прирост производительности по сравнению с классическим apache.

OpenVPN сервер для офисного шлюза на FreeBSD

Первым делом установим OpenVPN:

cd /usr/ports/security/openvpn && make install clean

Приступаем к настройке. Сначала создадим необходимые директории:

mkdir -p /usr/local/etc/openvpn/{ccd,easy-rsa/keys}

Скопируем скрипты для генерации ключей в более удобное для нас место:

cp -av /usr/local/share/doc/openvpn/easy-rsa/2.0/* /usr/local/etc/openvpn/easy-rsa/

Ключи будут сгенерированы в директории /usr/local/etc/openvpn/easy-rsa/keys. Однако удобнее будет использовать в файлах конфигурации путь /usr/local/etc/openvpn/keys, поэтому создадим симлинк:

ln -sf /usr/local/etc/openvpn/easy-rsa/keys /usr/local/etc/openvpn/

Следующим шагом редактируем по своему вкусу файл /usr/local/etc/openvpn/easy-rsa/vars, который описывает большую часть настроек для новых ключей, после чего переходим в директорию со скриптами:

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

FreeBSD использует в качестве оболочку по умолчанию /bin/csh, а скрипты генерации ключей написаны в расчёте на /bin/sh и при использовании их в csh наблюдаются проблемы с использованием переменных окружения. Чтобы решить эту проблему запустим классически шелл:

sh

По умолчанию со скриптов снят атрибут «исполняемый». Установим его:

chmod +x *

Считаем настройки для генерации скриптов:

. ./vars

Генерируем ключ для сервера:

./clean-all && ./build-ca && ./build-dh && ./build-key-server server

Теперь создадим файл /usr/local/etc/openvpn/server.conf, описывающий конфигурацию сервера. Здесь и далее мы исходим из того, что для клиентов нашего OpenVPN-сервера мы выделяем сеть 172.31.254.0/24:

# OpenVPN запускается в режиме сервера
mode server

# Используем TLS-шифрование
tls-server

# Работаем в режиме демона
daemon

# Настройки виртуального интерфейса на стороне сервера
ifconfig 172.31.254.1 255.255.255.0

# Порт, на котором будет слушать
port 1194

# Используем протокол tcp
proto tcp-server

# Имя интерфейса, который будет использовать сервер
dev tap0

# Сертификаты
ca /usr/local/etc/openvpn/keys/ca.crt
cert /usr/local/etc/openvpn/keys/server.crt
key /usr/local/etc/openvpn/keys/server.key
dh /usr/local/etc/openvpn/keys/dh2024.pem

# Отдаём клиентам маршрут на офисную сеть
push "route 172.31.255.0 255.255.255.0 172.31.254.1"

# Директория, в которой будут описаны настройки для всех клиентов
client-config-dir /usr/local/etc/openvpn/ccd

# Настройки поддержания соединения
keepalive 10 120

# Разрешаем трафик между клиентами
client-to-client

# Используем сжатие
comp-lzo

# Не перечитывать ключевые файлы при переподключении клиентов
persist-key

# Не пересоздавать виртуальный интерфейс
persist-tun

# Уровень детализации в логе
verb 3

# Файл лога
log-append /var/log/openvpn.log

Для автоматического запуска openvpn при старте системы нужно добавить в файл /etc/rc.conf строки:

openvpn_enable="YES"
openvpn_configfile="/usr/local/etc/openvpn/server.conf"

Далее нужно подгрузить модуль для работы с tap-интерфейсами:

kldload if_tap

Чтобы модуль автоматически подгружался при загрузке нужно добавить в /boot/loader.conf строку:

if_tap_load="YES"

Наконец запускаем сервер:

/usr/local/etc/rc.d/openvpn start

Теперь нам нужно внести изменения в настройки пакетного фильтра, который мы настроили в предыдущей статье. Сразу приведём обновлённый вариант файла /etc/pf.rules:

# Основные настройки
if_ext = "le0"
if_int = "em0"
if_vpn = "tap0"
net_int = "172.31.255.0/24"
net_vpn = "172.31.254.0/24"

set block-policy drop
set state-policy if-bound

scrub all reassemble tcp fragment reassemble

# NAT для локальной сети
nat pass on $if_ext from $net_int -> ($if_ext) static-port

# Разрешаем всё на loopback-интерфейсе
pass quick on lo0 all

# Разрешаем исходящий трафик
pass out quick on $if_ext inet proto tcp from ($if_ext) to any flags S/SA keep state
pass out quick on $if_ext inet proto { udp, icmp } from ($if_ext) to any keep state


# Разрешаем исходщящий трафик в сторону локальной сети
pass out quick on $if_int from ($if_int) to $net_int
pass out quick on $if_int from $net_vpn to $net_int

# Разрешаем входящий трафикк со стороны локальной сети
pass in quick on $if_int from $net_int to any keep state

# Разрешаем исходящий трафик в сторону VPN-сети
pass out quick on $if_vpn from ($if_vpn) to $net_vpn
pass out quick on $if_vpn from $net_int to $net_vpn

# Разрешаем входящий трафик со стороны VPN-сети
pass in quick on $if_vpn from $net_vpn to any keep state

# Разрешаем обращение к нашему VPN-серверу снаружи
pass in quick on $if_ext inet proto tcp from any to ($if_ext) port 1194 flags S/SA keep state

# Запрещаем весь остальной трафик
block drop all

Применяем правила:

pfctl -f /etc/pf.rules

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

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

Запустим оболочку, в контексте которой будут работать скрипты:

sh

Установим необходимые переменные окружения:

. ./vars

Сгенерируем ключ для пользователя «username»:

./build-key username

Затем создадим файл /usr/local/etc/openvpn/ccd/username примерно вот такого содержания:

ifconfig-push 172.31.254.101 255.255.255.0

Здесь мы указываем IP-адрес и маску сети, которые будут на виртуальном интерфейсе у клиента. Разумеется что адреса разных клиентов не должны совпадать.

Файл конфигурации клиента будет иметь вид:

client
dev tap
proto tcp

# Внешний адрес офисного сервера
remote office.example.com 1194

resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ns-cert-type server

# Файлы ключей
ca ca.crt
cert username.crt
key username.key

Настройки OpenVPN-клиента в разных ОС уже описывалась ранее и потому подробно рассматривать этот вопрос мы не будем.

На этом всё. Приятной работы!

Настройка OpenVPN сервера в режиме моста на FreeBSD 6.x и FreeBSD 7.x

Имеем задачу — организовать безопасный доступ из внешнего мира к внутренней корпоративной сети. Данная статья не претендует на исчерпывающее повествование по данной теме. В ней не раскрываются все возможности и опции настройки OpenVPN — это пример из личной практики, где я берусь описать процесс создания OpenVPN сервера на системе FreeBSD, с возможностью подключения к нему удаленных пользователей (с различных операционных систем: Windows, Linux, MacOS etc.).

За более подробной информацией рекомендуется обратится на сайты разработчиков openvpn.net, www.openvpn.se и man-страницы.

Для начала установим сам OpenVPN из портов:

cd /usr/ports/security/openvpn
make install

Во время установки будет предложено включить PW_SAVE? Данная опция дает возможность чтения текущих паролей из файла. Хотите включайте — хотите нет (сам эту опцию не включаю). Это не самый критичный параметр 🙂

Далее нужно создать директорию, где будут храниться настройки OpenVPN сервера и скопировать туда пакет управления ключами RSA, а также каталог для хранения ключей:

mkdir -p /usr/local/etc/openvpn
cp -r /usr/local/share/doc/openvpn/easy-rsa /usr/local/etc/openvpn
mkdir -p /usr/local/etc/openvpn/keys

В директории /usr/local/share/doc/openvpn/easy-rsa с исполняемых файлов снят бит выполнения, поэтому можно их скопировать из директории /usr/ports/security/openvpn/work/openxpn-x.y.z/easy-rsa/ либо установить вручную.

Теперь приступаем к созданию файлов настроек для сервера и клиентов. За основу возьмём примеры файлов настроек, расположенные в /usr/local/share/doc/openvpn/sample-config-files. Так как мы делаем сервер, то нам интересен файл server.conf.

vi /usr/local/etc/openvpn/server.conf
#Какой IP слушает сервер OpenVPN (необязательно)
;local 1.2.3.4
#какой TCP/UDP порт слушает сервер. Для использования нескольких отдельных серверов OpenVPN, необходимо указать разные порты.
port 1194
#Какой протокол будет использовать сервер TCP или UDP
proto udp
#указание типа интерфейса и режима работы
#tun = L3-туннель, tap = L2-туннель
dev tap
#главный SSL/TLS сертификат (ca)
#сертификат (cert), частный ключ (key).
#каждый клиент и сервер имеет собственные пары сертификата и ключа.
#Сервер и все его клиенты должны иметь один (ca).
ca /usr/local/etc/openvpn/keys/ca.crt
cert /usr/local/etc/openvpn/keys/server.crt
key /usr/local/etc/openvpn/keys/server.key
dh /usr/local/etc/openvpn/keys/dh2024.pem
#Пример настройки сервера в режиме сетевого моста:
#адрес сервера внутри сети и маска 192.168.1.1 255.255.255.0
#диапазон выдаваемых ip для клиентов (192.168.1.200-192.168.1.210)
server-bridge 192.168.1.1 255.255.255.0 192.168.1.200 192.168.1.210
#указываем где хранятся файлы с настройками клиентов если нужны особые настройки
;client-config-dir ccd
#Время жизни неактивной сессии. Пинговать каждые 10 сек. Считать что соединение разорвано если нет пинга в течении 120 сек.
keepalive 10 120
#Метод криптографического шифрования. Аналогичная настройка должна содержаться в конфиге клиента
cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
#использовать сжатие на vpn соединении (аналогично и в конфиге клиента)
comp-lzo
#снизить права демона OpenVPN
;user nobody
;group nobody
#Использовать те же интерфейс и ключ при рестарте сервера
persist-key
persist-tun
#Файл статуса, в который пишутся текущие соединения, обновляется и переписывается каждую минуту
status openvpn-status.log
#указываем файл, где фиксируется информация об отозваных сертификатах
crl-verify /usr/local/etc/openvpn/keys/crl.pem
#по умолчанию сообщения лога передаются syslog'у.
#"log" - перезаписывает лог файл после каждого запуска
#"log-append" добавляет данные в конец лога
#Можно использовать только один из вариантов
;log         /var/log/openvpn.log
log-append  /var/log/openvpn.log
#Уровень детализации лога
#0 только фатальные ошибки
#1-4 рабочий режим
#5-6 для отладки сервера
#9 самая полная детализация
verb 3
;mute 20

Файл client.conf по сути является зеркалом server.conf, за исключением некоторых специфичных функций.

client # показываем что это именно клиентский конфиг
dev tap # тут должно стоять
proto udp # то-же что и в серверном конфиге
remote xxx.xxx.xxx.xxx 1194 #адрес удаленного сервера
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt # прописываем пути
cert vpnuser1.crt # к локальным копиям
key vpnuser1.key # ключей и сетификатов
;cipher x
comp-lzo
verb 3
;mute 20

Теперь перейдем к настройке самой FreeBSD для работы в качестве VPN сервера. Здесь будут некорые различия для 6 и 7 версии. Рассмотрим их подробнее:

—FreeBSD 6—

1. собрать ядро с опциями

options BRIDGE
options IPSEC
options IPSEC_ESP
# Pseudo devices.
device  tap

2. в /etc/sysctl.conf прописать поднятие виртуального tap интерфейса

net.link.ether.bridge.enable=1
net.link.ether.bridge.config=re0,tap0
// в данном примере re0 - сетевой интерфейс смотрящий в локалку

3. в /etc/rc.conf прописать

openvpn_enable="YES"
openvpn_if="tap"
openvpn_configfile="/usr/local/etc/openvpn/server.conf"

—FreeBSD 7—

1. собрать ядро с опциями

options IPSEC
device  crypto
device  if_bridge
# Pseudo devices.
device  tap

в примере vr0 — сетевой интерфейс смотрящий в локалку

2. в /etc/rc.conf прописать

cloned_interfaces="tap0 bridge0"
ifconfig_bridge0="addm vr0 addm tap0 up"
openvpn_enable="YES"
openvpn_if="tap bridge"
openvpn_configfile="/usr/local/etc/openvpn/server.conf"

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

. ./vars

на всякий случай, удаляем существующие ключи командой:

./clean-all

Генерируем корневой сертификат:

./build-ca

В процессе выполнения последнего скрипта вам будет задано несколько вопросов. Нужно ввести только Common Name для сертификата (например, RootCA), все остальные параметры уже заданы в качестве переменных окружения скриптом vars.

После создания корневого сертификата необходимо сгенерировать для сервера секретный ключ. В этом вам поможет скрипт buildkey-server. Как и в предыдущем случае, для большинства вопросов можно оставить ответы по умолчанию. На вопрос о Common Name введите “server”, на два последних вопроса (подписать ли сертификат и – каламбур, но перевод именно такой – сертифицировать ли его) ответьте утвердительно; когда вас спросят о пароле (“A challenge password”) – введите пароль для ключа сервера (запоминать его не нужно). Наберите:

./build-key-server server

Далее, создайте ключи для необходимого количества клиентов. Эта процедура аналогична созданию ключа для сервера, за исключением того, что для клиентов ключи создаются скриптом build-key, а не buildkey-server. У каждого ключа, конечно же, должно быть указано свое значение в поле Common Name:

./build-key clientname

Если вы хотите защитить паролем ключи клиентов, воспользуйтесь вместо build-key скриптом build-key-pass. Хочу заметить, что сам паролю ключи, если это нужно на стороне клиента. Это можно сделать с помощью GUI оболочки.

И наконец, в довершение ко всем сертификатам и ключам необходимо создать файл параметров Диффи [Diffie] и Хеллмэна [Hellman]. Алгоритм Диффи и Хеллмэна позволяет обмениваться секретными ключами по небезопасным каналам. Для их генерации запустите скрипт build-dh без параметров:

./build-dh

В следующей статье я подробно расскажу про установку и настройку GUI интерфейса openVPN на стороне клиента в ОС Windows.

FreeBSD 11

Никаких дополнительных модулей в ядро добавлять не нужно. Пример rc.conf (для автоматического поднятия интерфейса tap0 в /etc/rc.conf следует дописать последнюю строку):

cloned_interfaces="tap0 bridge0"
ifconfig_bridge0="addm vr0 addm tap0 up"
openvpn_enable="YES"
openvpn_if="tap bridge"
openvpn_configfile="/usr/local/etc/openvpn/server.conf"
ifconfig_tap0="up"

Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.

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

OpenVPN на FreeBSD 10.3 | Джон Рамсден

При попытке настроить OpenVPN я заметил, что не было актуальной информации с правильными инструкциями. OpenVPN использует EasyRSA для настройки ключей, недавно он был изменен в версии 3. В результате старые шаги по настройке OpenVPN больше не являются правильными. Я прошел через процесс настройки VPN с использованием OpenVPN на FreeBSD 10.3.

Это самый современный способ настройки OpenVPN на FreeBSD.

Перед настройкой OpenVPN необходимо выполнить несколько действий.

Установить необходимое программное обеспечение

Для начала установите необходимое программное обеспечение. Единственное, что необходимо для установки, это OpenVPN. Easy-RSA входит в состав установки.

После обновления репозитория пакетов установите openvpn . Я использую pkg, если вы используете порты, вы должны знать аналогичный процесс.

  [root] # обновление пакета
[root] # pkg install openvpn  

Установка структуры каталога для конфигурации

OpenVPN имеет образцы файлов конфигурации, создайте каталог для конфигурации

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

Скопируйте файлы примеров:

  [корень] # cp / usr / local / share / examples / openvpn / sample-config-files / server.conf \
           /usr/local/etc/openvpn/openvpn.conf  

Также необходимы файлы конфигурации для Easy-RSA, скопируйте их в каталог конфигурации:

  [корень] # cp -r / usr / local / share / easy-rsa / usr / local / etc / openvpn / easy-rsa  

Теперь, когда у нас есть все необходимые файлы, можно начинать настройку.

Easy-RSA

Для начала настройте ключи с помощью Easy-RSA.

Перейти в каталог Easy-RSA

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

Внутри должно быть несколько файлов:

  [корень] # ls
easyrsa.реальный openssl-1.0.cnf.example vars.example
openssl-1.0.cnf vars x509-types  

Редактировать файлы конфигурации Easy-RSA

В файле vars отредактируйте обязательные поля, заменив их соответствующими данными. Любые используемые поля следует раскомментировать.

Задайте организационные поля:

  set_var EASYRSA_REQ_COUNTRY "<СТРАНА>"
set_var EASYRSA_REQ_PROVINCE ""
set_var EASYRSA_REQ_CITY ""
set_var EASYRSA_REQ_ORG ""
set_var EASYRSA_REQ_EMAIL ""
set_var EASYRSA_REQ_OU "<ОРГАНИЗАЦИОННЫЙ БЛОК>"  

Установить размер в битах, рекомендуется 2048:

  set_var EASYRSA_KEY_SIZE 2048  

Установить срок действия в днях:

  # Через сколько дней должен истечь срок действия ключа корневого CA?

set_var EASYRSA_CA_EXPIRE 3650

# Через сколько дней истекает срок действия сертификатов?

set_var EASYRSA_CERT_EXPIRE 3650  

Сгенерировать ключи

Теперь ключи можно генерировать с помощью easyrsa.реальный сценарий оболочки .

По умолчанию FreeBSD использует «оболочку c », это может вызвать проблемы из-за различных переменных настройки скрипта конфигурации. Чтобы избежать этих проблем, при запуске сценария измените « bourne shell », sh .

  [root] # sh  

Чтобы увидеть все команды easy-rsa, выполните:

  sh-4.3 # ./easyrsa.real help  

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

  ш-4.3 # ./easyrsa help КОМАНДА  

Чтобы получить список опций, которые могут быть указаны перед командой, используйте:

  sh-4.3 # ./easyrsa help options  

Полный список доступных команд:

  init-pki
  build-ca [cmd-opts]
  gen-dh
  gen-req  [cmd-opts]
  sign-req <тип> <база_имя_файла>
  build-client-full  [cmd-opts]
  build-server-full  [cmd-opts]
  отозвать 
  gen-crl
  update-db
  show-req  [cmd-opts]
  show-cert  [cmd-opts]
  import-req  
  export-p7  [cmd-opts]
  export-p12  [cmd-opts]
  set-rsa-pass  [cmd-opts]
  set-ec-pass  [cmd-opts]  
Инициализировать инфраструктуру открытого ключа

Запустить init-pki:

  ш-4.3 # ./easyrsa.real init-pki  
  Примечание: с использованием конфигурации Easy-RSA из: ./vars

init-pki завершен; теперь вы можете создать CA или запросы.
Ваш недавно созданный каталог PKI: / usr / local / etc / openvpn / easy-rsa / pki  
Build Certificate Authority

Следуйте инструкциям по вводу пароля CA и общего имени.

  sh-4.3 # ./easyrsa.real build-ca  
Сертификаты сервера

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

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

Проверить в случае успеха:

  sh-4.3 # ./easyrsa.real show-cert openvpn-server  
Сертификат клиента

Создайте сертификат (ы) клиента, используйте уникальное имя для каждого сертификата.:

  sh-4.3 # ./easyrsa.real build-client-full   
Параметры Диффи Хеллмана

Создание параметров Диффи Хеллмана:

  sh-4.3 # ./easyrsa.real gen-dh  

Перемещение клавиш

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

Важные файлы:

В pki / :

  • dh.pem — Параметры Диффи Хеллмана. Требуется сервером.
  • ca.crt — сертификат корневого центра сертификации. Требуется сервером и всеми клиентами.

В пки / выдано / :

  • openvpn-server.crt — Сертификат сервера. Требуется сервером.
  • <имя> .crt — Сертификат клиента. Требуется клиентом.

В pki / private / [Это секретно]:

  • openvpn-server.key — Ключ сервера. Требуется сервером.
  • <имя>.key — Клиентский ключ. Требуется клиентом.
  • ca. key — Корневой ключ CA. Требуется машиной для подписи ключей.

Значит, на сервер нужно перенести следующие ключи:

  • pki / dh.pem
  • pki / ca.crt
  • pki / выдано / openvpn-server.crt
  • pki / private / openvpn-server.key

Если se

.

Как установить OpenVPN во FreeBSD | Учебники

OpenVPN — это программное приложение с открытым исходным кодом, которое реализует решения виртуальной частной сети (VPN) для создания безопасных соединений точка-точка или сайт-сайт в маршрутизируемых или мостовых конфигурациях и средствах удаленного доступа. OpenVPN использует безопасность SSL / TLS для шифрования и может проходить через трансляторы сетевых адресов и межсетевые экраны.

И.Сервер OpenVPN — Установка и настройка

1. Установка OpenVPN Server

Чтобы установить OpenVPN из портов FreeBSD, введите:

 компакт-диск / usr / порты / безопасность / openvpn
сделать установку чистой
 

Скриншот установки OpenVPN 1

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

Создайте каталог конфигурации и скопируйте все конфигурации OpenVPN:

 mkdir -p / usr / local / etc / openvpn / ключи
cp -R / usr / local / share / doc / openvpn / / usr / local / etc / openvpn /
cd / usr / local / etc / openvpn
 

3.Создание сертификатов шифрования

 компакт-диск /usr/local/etc/openvpn/easy-rsa/2.0
chmod + x *
ш
. ./vars
sh ./clean-all
 

Создать ключ ок.

 л. / Сборка-ca
 

Скриншот установки OpenVPN 2

Создать server.key

 sh ./build-key-server сервер
 

Скриншот установки OpenVPN 3

Сгенерировать client1.key для Client1

 ш./ build-key client1
 

Скриншот установки OpenVPN 4

ПРИМЕЧАНИЕ: Если вы хотите создать больше клиентов, просто повторите этот шаг и убедитесь, что вы ввели другое «CommonName».

Сгенерировать параметры DH 1024 бит

 ш. / Билд-dh
 

Скриншот установки OpenVPN 5

4. Завершение настройки

Скопируйте все файлы из ключевого каталога в / usr / local / etc / openvpn / keys

 cp -R ключи / * / usr / local / etc / openvpn / keys
 

Показать все файлы в каталоге ключей

 ls -al / usr / local / etc / openvpn / keys
всего 46
drwxr-xr-x 2 root wheel 512 22 мая 15:02.drwxr-xr-x 6 root wheel 512 22 мая 14:41 ..
-rw-r - r-- 1 корневое колесо 3883 22 мая 15:02 01.pem
-rw-r - r-- 1 корневое колесо 3780 22 мая 15:02 02.pem
-rw-r - r-- 1 корневое колесо 1233 22 мая 15:02 ca.crt
-rw ------- 1 root wheel 887 22 мая 15:02 ca.key
-rw-r - r-- 1 root wheel 3780 22 мая 15:02 client1.crt
-rw-r - r-- 1 root wheel 725 22 мая 15:02 client1.csr
-rw ------- 1 root wheel 887 22 мая 15:02 client1.key
-rw-r - r-- 1 root wheel 245 22 мая 15:02 dh2024.pem
-rw-r - r-- 1 root wheel 219 22 мая 15:02 index.txt
-rw-r - r-- 1 root wheel 21 мая 22 15:02 index.txt.attr
-rw-r - r-- 1 root wheel 21 мая 22 15:02 index.txt.attr.old
-rw-r - r-- 1 root wheel 106 22 мая 15:02 index.txt.old
-rw-r - r-- 1 root wheel 3 22 мая 15:02 серийник
-rw-r - r-- 1 root wheel 3 22 мая 15:02 serial.old
-rw-r - r-- 1 root wheel 3883 22 мая 15:02 server.crt
-rw-r - r-- 1 root wheel 712 22 мая 15:02 server.csr
-rw ------- 1 root wheel 891 22 мая 15:02 сервер.ключ
 

Изменить server.conf

 cp /usr/local/share/doc/openvpn/sample-config-files/server.conf / usr / local / etc / openvpn /
vi /usr/local/etc/openvpn/server.conf
 
 пользователь root
порт 1194
прото udp
mssfix 1400 # Этот параметр устраняет проблемы, которые у меня были с такими приложениями, как Remote Desktop
разработчик тап

ca /usr/local/etc/openvpn/keys/ca.crt
сертификат /usr/local/etc/openvpn/keys/server.crt
key /usr/local/etc/openvpn/keys/server.key # Этот файл следует хранить в секрете
дх / usr / локальные / и т.д. / openvpn / ключи / dh2024.pem

сервер 192.168.254.0 255.255.255.0
#push "route-gateway 192.168.1.1" # push default gateway
#push "маршрут 192.168.1.0 255.255.255.0 192.168.254.1"
#push "маршрут 192.168.2.0 255.255.255.0 192.168.254.1"

ifconfig-pool-persist ipp.txt

Keepalive 10 120
cipher BF-CBC # Blowfish (по умолчанию) шифрование
comp-lzo
max-clients 10 # Укажите здесь максимальное количество клиентов
постоянный ключ
настойчивый туннель
статус / var / log / openvpn-status.журнал
log-append /var/log/openvpn.log
глагол 3

# маршрут 192.168.2.0 255.255.255.0 192.168.254.2
 

Изменить rc.conf

 vi /etc/rc.conf
 
 gateway_enable = "ДА"
openvpn_enable = "ДА"
openvpn_configfile = "/ usr / local / etc / openvpn / server.conf"
openvpn_if = "коснитесь"
 

Включить переадресацию IP

 sysctl net.inet.ip.forwarding = 1
 

Измените syslog.conf для поддержки журнала OpenVPN

 vi / etc / syslog.conf
 
 ### добавить строчки в конец конфига
! openvpn
. * /var/log/openvpn.log
 

Создайте openvpn.log и перезагрузите syslogd

 сенсорный /var/log/openvpn.log
killall -HUP syslogd
 

Запуск сервера OpenVPN

 /usr/local/etc/rc.d/openvpn start
 

II. Клиент OpenVPN — установка и настройка

1. Установка клиента OpenVPN

Чтобы установить OpenVPN из портов FreeBSD, введите:

 компакт-диск / usr / порты / безопасность / openvpn
сделать установку чистой
 

2.Настройка клиента OpenVPN и завершение настройки

 mkdir -p / usr / local / etc / openvpn / ключи
 

Необходимо передать ca.crt , client1.crt , client1.key с сервера OpenVPN и скопировать их в каталог / usr / local / etc / openvpn / keys.

 vi /usr/local/etc/openvpn/client.conf
 
 клиент
разработчик тап
# тап-мту 1500
mssfix 1400
прото udp
remote 1.2.3.4 1198 # замените 1.2.3.4 на IP-адрес сервера OpenVPN

nobind
#user openvpn
#group openvpn
постоянный ключ
настойчивый туннель
ca / usr / local / etc / openvpn / keys / ca.crt
сертификат /usr/local/etc/openvpn/keys/client1.crt
ключ /usr/local/etc/openvpn/keys/client1.key
#cipher BF-CBC
comp-lzo
глагол 3
немой 20
статус /var/log/openvpn-status.log
log-append /var/log/openvpn.log

#route 192.168.254.3 255.255.255.255 192.168.254.1
 

Изменить rc.conf

 vi /etc/rc.conf
 
 openvpn_enable = "ДА"
openvpn_configfile = "/ usr / local / etc / openvpn / client.conf"
openvpn_if = "коснитесь"
 

Изменить системный журнал.conf для поддержки журнала OpenVPN

 vi /etc/syslog.conf
 
 ### добавить строчки в конец конфига
! openvpn
. * /var/log/openvpn.log
 

Создайте openvpn.log и перезагрузите syslogd

 сенсорный /var/log/openvpn.log
killall -HUP syslogd
 

Запуск клиента OpenVPN

 /usr/local/etc/rc.d/openvpn start
 

III. Тестирование VPN-соединения

Тестовое соединение с сервера :

 [root @ server ~] # пинг 192.168,254,2
PING 192.168.254.2 (192.168.254.2) 56 (84) байт данных.
64 байта из 192.168.254.2: icmp_seq = 1 ttl = 64 time = 85,5 мс
64 байта из 192.168.254.2: icmp_seq = 2 ttl = 64 time = 83,3 мс
64 байта из 192.168.254.2: icmp_seq = 3 ttl = 64 time = 93,3 мс

--- 192.168.254.2 статистика пинга ---
3 пакета переданы, 3 получены, потеря пакетов 0%, время 199 мс
rtt min / avg / max / mdev = 83,363 / 87,420 / 93,347 / 4,298 мс
 

Тестовое соединение от клиента :

 root @ client: ~ # ping 192.168.254.1
PING 192.168.254.1 (192.168.254.1): 56 байтов данных
64 байта из 192.168.254.1: icmp_seq = 0 ttl = 64 time = 91,550 мс
64 байта из 192.168.254.1: icmp_seq = 1 ttl = 64 time = 91,261 мс
64 байта из 192.168.254.1: icmp_seq = 2 ttl = 64 time = 88,179 мс

--- 192.168.254.1 статистика пинга ---
3 пакета переданы, 3 пакета получены, потеря пакетов 0,0%
туда и обратно min / avg / max / stddev = 88,179 / 90,330 / 91,550 / 1,526 мс
 

Распечатать этот пост

.

Установка и настройка сервера OpenVPN на FreeBSD — Марин Атанасов Николов — Место о программном обеспечении с открытым исходным кодом, операционных системах и некоторых случайных мыслях

В этом руководстве мы рассмотрим OpenVPN — полнофункциональный
решение SSL VPN с открытым исходным кодом и узнайте, как его установить и настроить
под FreeBSD.

Пожалуйста, обратитесь на официальный сайт OpenVPN.
для получения дополнительной информации об этом.

В следующем руководстве мы собираемся установить и настроить
маршрутизируемый сервер OpenVPN.

Для получения дополнительной информации о маршрутизированной и мостовой настройке OpenVPN, пожалуйста,
взгляните на следующую страницу:

Установка

Для установки OpenVPN мы собираемся использовать порты FreeBSD.
Коллекция

Чтобы начать установку, выполните следующую команду:

  $ cd / usr / ports / security / openvpn && sudo make install clean
  

После завершения установки вы должны увидеть что-то похожее:

  ### --------------------------------------------- ---------------------------
### Отредактируйте / etc / rc.conf [.local] для автоматического запуска OpenVPN в системе
###  запускать. Подробнее см. /Usr/local/etc/rc.d/openvpn.
### ----------------------------------------------- -------------------------
### Для примечаний о совместимости при взаимодействии со старым OpenVPN
### версии, см. 
### ----------------------------------------------- -------------------------
===> Установка скрипта (ов) запуска rc.d
===> Сжатие страниц руководства для openvpn-2.1.4
===> Запуск ldconfig
/ sbin / ldconfig -m / usr / local / lib
===> Регистрация установки для openvpn-2.1.4
===> ОТЧЕТ О БЕЗОПАСНОСТИ:
      В этот порт установлены следующие файлы, которые могут действовать как сетевые.
      серверов и, следовательно, может представлять угрозу удаленной безопасности системы.
/ USR / местные / sbin / openvpn

      Этот порт установил следующие сценарии запуска, которые могут вызвать
      эти сетевые службы должны запускаться во время загрузки.
/usr/local/etc/rc.d/openvpn

      Если в этих программах есть уязвимости, может быть
      риск для системы. FreeBSD не дает никаких гарантий относительно безопасности
      порты, включенные в коллекцию портов.Введите "make deinstall"
      чтобы удалить порт, если это вызывает беспокойство.

      Для получения дополнительной информации и контактных данных о безопасности
      Состояние этого программного обеспечения см. на следующей веб-странице:
http://openvpn.net/index.php/open-source.html
===> Очистка для openvpn-2.1.4
  

Теперь, когда у нас установлен OpenVPN, давайте продолжим.
конфигурацию на следующих шагах.

Генерация сертификатов для сервера

Каталог установки и конфигурация

OpenVPN по умолчанию находится в
/ USR / местные / доля / документ / openvpn

Во-первых, давайте создадим каталог конфигурации для OpenVPN в
/ USR / местные / и т. Д. / Openvpn

  $ sudo mkdir / usr / local / etc / openvpn
  

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

  $ sudo cp /usr/local/share/doc/openvpn/sample-config-files/server.conf / usr / local / etc / openvpn
$ sudo cp -a / usr / local / share / doc / openvpn / easy-rsa / usr / local / etc / openvpn
  

Для создания файлов сертификатов и ключей мы будем использовать
сценарии easy-rsa , которые поставляются с OpenVPN.

Нам нужно сначала сделать эти скрипты исполняемыми, поэтому для этого выполните
команда ниже:

  $ sudo chmod 0755 / usr / local / etc / openvpn / easy-rsa / 2.0 / *
  

Файл /usr/local/etc/openvpn/easy-rsa/2.0/vars содержит некоторые
значения по умолчанию, которые будут использоваться сценариями easy-rsa во время
создание сертификата.

Переменные, определенные в файле vars , будут использоваться по умолчанию.
во время создания сертификата, но вам будет предложено их изменить
если нужно.

Перед созданием сертификатов нам необходимо получить
/usr/local/etc/openvpn/easy-rsa/2.0/vars Сначала файл .

ПРИМЕЧАНИЕ. Оболочка FreeBSD по умолчанию — / bin / tcsh. В
/usr/local/etc/openvpn/easy-rsa/2.0/vars файл использует экспорт для
* установка значений переменных, поэтому вам придется переключиться на оболочку, которая
* понимает это. Поэтому, если вы используете / bin / tcsh, сначала измените свой
* shell в / bin / sh, а затем исходный файл. Следующие команды предполагают, что вы
* уже используют / bin / sh в качестве оболочки.

  компакт-диск /usr/local/etc/openvpn/easy-rsa/2.0 &&. варс
  

Обратите внимание, что точка «.’Перед тем, как vars файл потребуется для
поиск файла.

Теперь создадим CA:

  # ./build-ca
Создание 1024-битного закрытого ключа RSA
... ++++++
.................................... ++++++
запись нового закрытого ключа в 'ca.key'
-----
Вас сейчас попросят ввести информацию, которая будет
включены
в ваш запрос на сертификат.
То, что вы собираетесь ввести, называется выдающимся именем или
DN.
Поля довольно много, но можно оставить пустыми
Для некоторых полей будет значение по умолчанию,
Если вы введете '.', поле останется пустым.
-----
Название страны (двухбуквенный код) [BG]:
Название штата или провинции (полное название) [София]:
Название населенного пункта (например, город) [София]:
Название организации (например, компания) [example.org]:
Название организационной единицы (например, раздел) []:
Общее имя (например, ваше имя или имя хоста вашего сервера)
[openvpn.example.org CA]: openvpn.example.org
Имя []: демон
Адрес электронной почты [[email protected]]:
#
  

Теперь сгенерируем файл ключей сервера:

  # ./build-key-server openvpn.example.org
Создание 1024-битного закрытого ключа RSA
. ++++++
........................... ++++++
запись нового закрытого ключа в openvpn.example.org.key
-----
Вас сейчас попросят ввести информацию, которая будет
включены
в ваш запрос на сертификат.
То, что вы собираетесь ввести, называется выдающимся именем или
DN.
Поля довольно много, но можно оставить пустыми
Для некоторых полей будет значение по умолчанию,
Если вы введете ".", Поле останется пустым.
-----
Название страны (двухбуквенный код) [BG]:
Название штата или провинции (полное название) [София]:
Название населенного пункта (например, город) [София]:
Название организации (например, компания) [пример.org]:
Название организационной единицы (например, раздел) []:
Общее имя (например, ваше имя или имя хоста вашего сервера)
[openvpn.example.org]:
Имя []: демон
Адрес электронной почты [[email protected]]:

Пожалуйста, введите следующие "дополнительные" атрибуты
для отправки с запросом на сертификат
Пароль для вызова []: my-password
Необязательное название компании []:
Используя конфигурацию из
/usr/local/etc/openvpn/easy-rsa/2.0/openssl.cnf
Убедитесь, что запрос соответствует подписи
Подпись ОК
Отличительное имя субъекта выглядит следующим образом
countryName: ДЛЯ ПЕЧАТИ: 'BG'
stateOrProvinceName: ПЕЧАТЬ: 'София'
localityName: ДЛЯ ПЕЧАТИ: 'София'
organizationName: PRINTABLE: 'пример.org '
commonName: PRINTABLE: 'openvpn.example.org'
имя: ПЕЧАТЬ: 'демон'
emailAddress: IA5STRING:'[email protected] '
Сертификат должен быть сертифицирован до 3 марта 15:14:23 2021 GMT (3650
дней)
Подпишите сертификат? [д / н]: д


1 из 1 запросов на сертификат подтвержден, совершить? [д / н] г
Записать базу данных с 1 новой записью
База данных обновлена
  

Теперь давайте создадим параметры Диффи-Хеллмана:

  # ./build-dh
Генерация параметров DH, безопасное простое число длиной 1024 бита, генератор 2
Это займет много времени
.............. + .................................... .......................................... + ....... .................... + ........................... +. .................................................. ....... + .................... + ..................... ............................... + ............. + .... .................................................. .................................................. ... + ............. + ................... +. + ........ +. ........... + ....... + .............................. ................................................... ............. + .... + ... + ...................... + ... + ...... + ........................................... .................... + ............. + ............... ... + ........................................... + .. .................................... + ............. .. + ............................................... .................. + ............................... .................................................. ........................ + ......................... .................................. + ................ ......................................... + ........ ...................................... + ... +. + ..... ...... + ........................................... ................... + .............................. ................................................ +. ...... + ........................... + ............... .................................... + ............. ........... + ................. + .................... ....... + .......................................... ............................. + ................. + ... ..... + ................... + ........................ ........................... + ...................... . + ................................................ ....... + ........................... + .. + ........... ............................... + .................. ................................................ +. ........... + ..... + .......... + ..................... ........ + ........... + .............. + .............. .......................................... + ..... +. .... + ............................................ +. ............. + .................... + ............... .................................................. .................................................. .................................................. ................ + ................................. .................................................. ....................... + .......................... .................................................. ........................ + ........... + ............. .... + ........................................ + ... +. .................... + ............................. .................................................. ................................ + ................. ..................... + ............................ .... + ............. + ............. + ................. ............................... + .............. + ... .............. + ................................... ....... + ... + ...................................... ............... + .................................. ......................... + ...................... + .. .................................................. ...... + .............................. + ............ ......... + ............... + ............. + .......... .................................................. ............................ + ..................... ...... + ........................ +. + ................ .................................................. ....... + .... + ..................................... .................................................. ................................................... ............ + ..................................... .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. ........................................ + ......... .................................... + ....... + ..... .................. + ................ + ............... ....... + .......................................... ....................... + .... + ..................... ............... + ................ + ............... ++ * ++ * ++ *
  

Теперь нам нужно скопировать файлы, которые мы создали, в
/ usr / local / etc / openvpn / keys каталог:

  $ sudo mkdir / usr / local / etc / openvpn / ключи
$ sudo cp /usr/local/etc/openvpn/easy-rsa/2.0/keys/* / usr / local / etc / openvpn / keys
  

Когда все будет готово, выполните сценарий очистки всего, чтобы очистить
вверх все из каталога ключей.

Генерация сертификатов для клиентов

На этом этапе мы создадим сертификаты для наших клиентов.

Чтобы создать сертификат для клиента, выполните команду
ниже (обратите внимание, что вам уже нужен исходный файл vars ):

  # ./build-key client.example.org
Создание 1024-битного закрытого ключа RSA
.......................... ++++++
......... ++++++
запись нового закрытого ключа в client.example.org.key
-----
Вас сейчас попросят ввести информацию, которая будет
включены
в ваш запрос на сертификат.То, что вы собираетесь ввести, называется выдающимся именем или
DN.
Поля довольно много, но можно оставить пустыми
Для некоторых полей будет значение по умолчанию,
Если вы введете ".", Поле останется пустым.
-----
Название страны (двухбуквенный код) [BG]:
Название штата или провинции (полное название) [София]:
Название населенного пункта (например, город) [София]:
Название организации (например, компания) [example.org]:
Название организационной единицы (например, раздел) []:
Общее имя (например, ваше имя или имя хоста вашего сервера)
[клиент.example.org]:
Имя []: client.example.org
Адрес электронной почты [[email protected]]: [email protected]

Пожалуйста, введите следующие "дополнительные" атрибуты
для отправки с запросом на сертификат
Пароль для вызова []: my-password
Необязательное название компании []:
Используя конфигурацию из
/ usr / местные / и т. д. / openvpn /  

.

OpenVPN FreeBSD

rex_3
Windows guru

: 23.02.2005
#: 24,533
: 13230
:

: 132

: 08, 2006 10:36: OpenVPN FreeBSD

!

Торговец

: 28.09.2004
№: 21,090
: 206

: 08, 2006 15:26:

_________________
Вся работа, а не развлечения, делают Джека скучным мальчиком.
rex_3
Windows guru

: 23.02.2005
#: 24,533
: 13230
:

: 132

: 08, 2006 15:28:

silent_ion

: 10.08.2005
#: 28,118
: 202
:

: 08, 2006 15:32:

_________________
,… (в)
rex_3
Windows guru

: 23.02.2005
#: 24,533
: 13230
:

: 132

: 08, 2006 15:36:

Мнч

: 20.06.2003
#: 6,981
: 283
:

: 08, 2006 18:53:

_________________
Завтра хожу в школу каждый день
rex_3
Windows guru

: 23.02.2005
#: 24,533
: 13230
:

: 132

: 09, 2006 8:50:

Mnch

: 20.06.2003
#: 6,981
: 283
:

: 09, 2006 11:16:

_________________
Завтра хожу в школу каждый день
rex_3
Windows guru

: 23.02.2005
#: 24,533
: 13230
:

: 132

: 09, 2006 16:41:

Mnch

: 20.06.2003
#: 6,981
: 283
:

: 10, 2006 2:03:

_________________
Завтра хожу в школу каждый день

!
.
optimism.ru

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *