Создание OpenVPN сервера

Создать свой OpenVPN сервер в pfsense довольно несложно, если понимать специфику его работы. Давайте разберём как это сделать, настроить сервер для подключения пользователей к нашей сети используя аутентификация по TLS ключу и локальному паролю.

Для начала в главном меню переходим на вкладку VPN - openvpn - add.

General information

Server mode. Тут нам доступно несколько вариантов.

  1. Peer To Peer (SSL/TLS) - применяется для соединения двух удаленных офисов между собой, используя TLS ключ для аутентификации.
  2. Peer To Peer (shared key) - то же самое, только используется один общий ключ для аутентификации
  3. Remote access (SSL/TLS) - в этом варианте настраивается сервер удаленного доступа для клиентов, используя для аутентификации TLS ключ, то есть пароль пользователю вводить не придётся.
  4. Remote access(User Auth) - то же самое, но используется внутренняя аутентификация сервера по паролю.
  5. Remote access (SSL/TLS+User Auth) - используется аутентификация и по паролю и по TLS ключу. Этот пункт мы выберем для дальнейшего создания подключения.

Protocol
Как мы знаем, протокол UDP не гарантирует доставку пакетов, но обеспечивает хорошую скорость там где важна быстрая доставка пакетов, например в передаче аудио или видео.
TCP же гарантирует что вся информация дойдет до нас в неизменном виде, однако при плохом канале пакеты будут передаваться заново пока передача не будет успешной.
Я рекомендую выбрать UDP протокол, так для нас в данном случае важна работа без задержек.

Device mode
Вирутальные сетевые драйверы, TAP эмулирует ethernet устройство, оперировая MAC адресами, TUN работает на 3-ем уровне модели OSI и оперирует IP пакетами. Нам для маршрутизации сетей нужен TUN.


Interface
На каком интерфейсе будем слушать входящие подключения?

Local port
Какой порт будет слушать входящие подключения от клиентов?

Cryptographic Settings

Как следует из названия, в данном разделе находится всё, что касается шифрования.

TLS Configuration,Automatically generate a TLS Key.
Генерируем общий TLS ключ, не является обязательным. Используется для аутентификации канала управления перед установкой туннеля. Позволяет снизить риски несанкционированных подключений.

TLS Key Usage Mode
Кроме аутентификации канала управления, может дополнительно и шифровать его

Peer Certificate Authority
Центр сертификации, который будет выпускать сертификаты для клиентов.

Peer Certificate Revocation list
Возможность создать список отзыва сертификатов.

Server certificate
Сертификат openVPN сервера

DH Parameter Length
Обмен ключами, оптимально 2048, для усиления безопасности можно выставить 4096

ECDH Curve
Параметр обмена ключами DH, по умолчанию

Encryption Algorithm
Симметричное шифрование, используемое после обмена ключами, если недоступна NCP. Выбираем не ниже AES 256.

Enable NCP,NCP Algorithms
Автосогласование алгоритма шифрования с клиентом. Выбираем несколько разных алгоритмов, желательно не ниже AES 256.

Auth digest algorithm
Алгоритм используется для аутентификации пакетом канала данных и канала управления, выбираем не ниже SHA-256

Hardware Crypto
Поддержка аппаратного ускорения шифрования, читайте спецификацию к Вашему оборудованию

Certificate Depth
Какой вложенности выпуска должны приниматься сертификаты.

Strict User-CN Matching
Строгое соответствие имени в сертификате, и имени указанным при аутентификации.

Tunnel Settings

IPv4 Tunnel Network
Указываем сеть для туннеля. Эти IP адреса будут выдаваться клиентам OpenVPN. Задаем в формате подсети: 10.0.8.0/24

Redirect IPv4 Gateway
Если хотите что бы весь клиентский трафик заворачивался в туннель, ставьте эту галку.

IPv4 Local network(s)
Здесь указываем подсети, которые доступны через наш туннель. Обычно это сеть офисная сеть. Маршрут будет автоматически добавлен в таблицу маршрутизации клиента.

Concurrent connections
Максимальное количество подключение к серверу

Compression
Сжатие пакетов. Обширная тема, можно почитать про неё отдельно. По умолчанию можете включить Adaptive compression

Push Compression
Применить параметры для подключенных клиентов

Type-of-Service
Включить заголовки ToS

Inter-client communication
Разрешить клиентам openvpn взаимодействовать между собой.

Duplicate Connection
Разрешить клиентам openvpn устанавливать несколько сессий одновременно.

Client Settings

Dynamic IP
Сохранять подключения клиентов при изменении их IP

Topology
По умолчанию - subnet. Адреса выдаются из обшей подсети. Net30 - каждому клиенту изолированная подсеть.

Advanced Client Settings

DNS Default Domain
Подставлять домен по умолчанию клиентам

DNS Default Domain
Домен по умолчанию

DNS Server enable
предоставлять клиентам DNS сервер

DNS Server 1
Список DNS

Block Outside DNS
Блокировать внешние DNS

Force DNS cache update
Сброс DNS кеша при подключении клиента

NTP Server enable
Предоставить клиентам список NTP серверов.

NetBIOS enable
Включить netbios

Node Type,Scope ID,WINS server enable
Относится к netbios

Advanced Configuration

Custom options
Дополнительные параметры. Например клиенту можно передать маршрут: push “route 192.168.1.1 255.255.255.0”

UDP Fast I/O
Экспериментальная функция

Send/Receive Buffer
Буфер отправки/получения пакетов. Рекомендуется экспериментировать.

Gateway creation
Значение по умолчанию

Verbosity level
Уровень ведения журнала

После создания сервера, установите пакет openvpn-client-export, после этого у Вас появиться дополнительная вкладка “Client Export”. Через неё Вы сможете генерировать установочные файлы для клиентов и их устройств. Установщик обязательно запускать от имени администратора! В противном случае не будут использоваться маршруты и DNS полученные с сервера.

1 Симпатия