OpenVPN сервер удаленного доступа в pfSense - руководство
OpenVPN - наиболее распространённое решение для организации удалённого доступа сотрудников к корпоративной сети через pfSense. Протокол работает в пространстве пользователя, использует SSL/TLS для шифрования и способен функционировать через TCP 443, что позволяет устанавливать соединения даже из сетей с жёсткими ограничениями на исходящий трафик. В pfSense настройка OpenVPN-сервера удалённого доступа выполняется двумя способами: через встроенный визард (мастер настройки) или вручную с полным контролем над каждым параметром.
Данное руководство описывает оба подхода: от подготовки инфраструктуры сертификатов до диагностики типичных проблем подключения. Материал рассчитан на сетевых инженеров с опытом администрирования pfSense и базовым пониманием принципов SSL/TLS.
Подготовка сертификатов
OpenVPN в режиме SSL/TLS требует инфраструктуру открытых ключей (PKI): центр сертификации (CA), серверный сертификат и индивидуальные сертификаты для каждого пользователя. Все операции с сертификатами выполняются через веб-интерфейс pfSense.
Создание центра сертификации (CA)
Центр сертификации создаётся в разделе System > Certificates > Authorities.
- Нажать Add для создания нового CA.
- Заполнить параметры:
| Поле | Значение | Пояснение |
|---|---|---|
| Descriptive name | OpenVPN-CA | Произвольное имя для идентификации |
| Method | Create an internal Certificate Authority | Создание нового CA |
| Key type | RSA | Рекомендуемый тип ключа |
| Key length | 4096 | Минимально рекомендуемая длина - 2048 |
| Digest Algorithm | SHA256 | Не следует использовать SHA1 |
| Lifetime | 3650 | Срок действия CA в днях (10 лет) |
| Common Name | OpenVPN-CA | Уникальное имя CA |
| Country, State, City, Org | По необходимости | Заполняются по требованиям организации |
- Нажать Save.
Создание серверного сертификата
Серверный сертификат создаётся в разделе System > Certificates > Certificates.
- Нажать Add/Sign.
- Заполнить параметры:
| Поле | Значение | Пояснение |
|---|---|---|
| Method | Create an internal Certificate | Создание нового сертификата |
| Descriptive name | OpenVPN-Server-Cert | Имя для идентификации |
| Certificate authority | OpenVPN-CA | Ранее созданный CA |
| Key type | RSA | Должен совпадать с типом ключа CA |
| Key length | 2048 | Минимально допустимая длина |
| Digest Algorithm | SHA256 | Совпадает с CA |
| Certificate Type | Server Certificate | Критически важно - клиентский сертификат не подойдёт |
| Lifetime | 825 | Рекомендуемый срок (Apple ограничивает до 825 дней) |
| Common Name | vpn.example.com | FQDN или IP-адрес сервера |
- Нажать Save.
Создание пользовательских сертификатов
Для каждого пользователя VPN необходим индивидуальный сертификат. Создание выполняется в разделе System > User Manager.
- Открыть существующего пользователя или создать нового.
- В секции User Certificates нажать Add.
- Выбрать Method: Create an internal Certificate.
- Указать Certificate authority:
OpenVPN-CA. - Установить Certificate Type: User Certificate.
- Нажать Save.
Внимание:
Каждому пользователю следует выдавать индивидуальный сертификат. Использование одного сертификата для нескольких пользователей лишает возможности отозвать доступ конкретному сотруднику без влияния на остальных.
Настройка через визард
OpenVPN Wizard - наиболее быстрый способ развернуть сервер удалённого доступа. Визард автоматически создаёт CA, серверный сертификат, экземпляр сервера и базовые правила файрвола.
Визард запускается через VPN > OpenVPN > Wizards.

Рис. 1. Стартовая страница OpenVPN Wizard в pfSense
Шаг 1 - Тип аутентификации
Визард предлагает выбор backend-сервера аутентификации:
- Local User Access - аутентификация через локальную базу pfSense. Подходит для небольших организаций (до 20 пользователей).
- LDAP - аутентификация через Active Directory или OpenLDAP. Рекомендуется при наличии существующей каталожной службы.
- RADIUS - аутентификация через RADIUS-сервер (FreeRADIUS, NPS). Обеспечивает наибольшую гибкость, включая поддержку OTP.
Шаг 2 - Сертификаты
При выборе Local User Access визард предложит создать CA и серверный сертификат. Если CA уже существует, допускается использование ранее созданного.
Шаг 3 - Параметры сервера
Визард предлагает заполнить основные параметры сервера OpenVPN:
| Параметр | Рекомендация |
|---|---|
| Interface | WAN |
| Protocol | UDP on IPv4 only |
| Local Port | 1194 |
| Tunnel Network | 10.8.0.0/24 |
| Local Network(s) | Подсети, к которым разрешён доступ через VPN |
| Concurrent Connections | По количеству пользователей |
| DNS Server 1-4 | DNS-серверы, передаваемые клиентам |
Шаг 4 - Правила файрвола
Визард предлагает автоматически создать:
- Firewall Rule - правило на интерфейсе WAN для входящих подключений на порт 1194/UDP.
- OpenVPN Rule - правило на виртуальном интерфейсе OpenVPN, разрешающее трафик из VPN-подсети в локальную сеть.
Рекомендуется разрешить визарду создать оба правила, а затем скорректировать их при необходимости.
Внимание:
Визард не создаёт правила для разрешения трафика между VPN-клиентами (client-to-client). Если взаимодействие клиентов требуется, необходимо настроить его вручную.
Ручная настройка сервера
Ручная настройка выполняется в разделе VPN > OpenVPN > Servers. Нажать Add для создания нового экземпляра сервера.

Рис. 2. Параметры OpenVPN-сервера в pfSense
General Information
| Поле | Значение | Пояснение |
|---|---|---|
| Disabled | Не установлен | Снятие флага активирует сервер |
| Server mode | Remote Access (SSL/TLS + User Auth) | Наиболее безопасный режим: двойная проверка (сертификат + логин/пароль) |
| Backend for authentication | Local Database | Или LDAP/RADIUS при интеграции с каталожными службами |
| Device mode | tun - Layer 3 Tunnel Mode | Рекомендуемый режим; tap необходим только для L2-бриджинга |
| Interface | WAN | Интерфейс, на котором сервер принимает подключения |
| Local port | 1194 | Стандартный порт OpenVPN |
| Protocol | UDP on IPv4 only | UDP обеспечивает лучшую производительность; TCP используется при блокировке UDP |
Cryptographic Settings
| Поле | Значение | Пояснение |
|---|---|---|
| TLS Configuration | Включена | Дополнительный уровень защиты TLS-канала |
| TLS Key | Автоматически сгенерировать | Генерация ключа при первом сохранении |
| TLS Key Usage Mode | TLS Authentication | Обеспечивает HMAC-подпись начальных TLS-пакетов |
| Peer Certificate Authority | OpenVPN-CA | Ранее созданный CA |
| Server certificate | OpenVPN-Server-Cert | Серверный сертификат |
| DH Parameter Length | 2048 | Группа Диффи-Хеллмана; 4096 для повышенной безопасности |
| ECDH Curve | Не задана (использовать по умолчанию) | Применяется при использовании ECDH |
| Data Encryption Algorithms | AES-256-GCM, AES-128-GCM, CHACHA20-POLY1305 | Клиент и сервер согласуют наилучший вариант |
| Fallback Data Encryption Algorithm | AES-256-CBC | Используется для совместимости со старыми клиентами |
| Auth digest algorithm | SHA256 | Используется при шифровании CBC; GCM-режимы имеют встроенную аутентификацию |
Tunnel Settings
| Поле | Значение | Пояснение |
|---|---|---|
| IPv4 Tunnel Network | 10.8.0.0/24 | Подсеть для VPN-клиентов; не должна пересекаться с существующими сетями |
| IPv6 Tunnel Network | (пусто) | Заполняется при использовании IPv6 |
| Redirect IPv4 Gateway | Не установлен | Установить для Full Tunnel (весь трафик через VPN) |
| IPv4 Local Network(s) | 10.1.0.0/24, 10.2.0.0/24 | Подсети, доступные через VPN; несколько сетей через запятую |
| IPv4 Remote Network(s) | (пусто) | Используется в site-to-site; для Remote Access не заполняется |
| Concurrent connections | 10 | Максимальное количество одновременных подключений |
| Allow Compression | Refuse any non-stub compression | Сжатие отключено из соображений безопасности (атака VORACLE) |
| Push Compression | Не установлен | |
| Topology | Subnet | Рекомендуемая топология; net30 устарела |
| Type-of-Service | Не установлен | Включать только при необходимости QoS |
Client Settings
| Поле | Значение | Пояснение |
|---|---|---|
| Dynamic IP | Включено | Позволяет клиентам менять IP без переподключения |
| Topology | Subnet - One IP address per client | |
| DNS Default Domain | corp.example.com | Доменный суффикс для VPN-клиентов |
| DNS Server 1-4 | 10.1.0.1 | DNS-серверы, передаваемые через push-опции |
| NTP Server 1-2 | 10.1.0.1 | Серверы точного времени |
| Force DNS cache update | Включено | Обновление DNS-кэша на Windows-клиентах |
Advanced Configuration
В поле Custom options допускается указание директив OpenVPN, не представленных в интерфейсе:
push "dhcp-option DOMAIN-SEARCH corp.example.com";
push "dhcp-option DOMAIN-SEARCH dev.example.com";
auth-gen-token 0 external-auth;
reneg-sec 3600;Правила файрвола
Для корректной работы OpenVPN-сервера удалённого доступа необходимы правила на двух интерфейсах.
Правила на интерфейсе WAN
Разрешение входящих подключений к серверу OpenVPN:
| Поле | Значение |
|---|---|
| Action | Pass |
| Interface | WAN |
| Address Family | IPv4 |
| Protocol | UDP |
| Source | Any |
| Destination | WAN address |
| Destination Port | 1194 |
| Description | Allow OpenVPN |
При использовании нескольких WAN-интерфейсов (Multi-WAN) правило создаётся на каждом интерфейсе, через который допускаются VPN-подключения. Подробнее о правилах файрвола - в разделе Правила файрвола в pfSense .
Правила на интерфейсе OpenVPN
После создания сервера в pfSense появляется виртуальный интерфейс OpenVPN. По умолчанию на нём отсутствуют разрешающие правила - весь трафик из VPN-туннеля будет блокироваться.
Минимальное правило для доступа к локальной сети:
| Поле | Значение |
|---|---|
| Action | Pass |
| Interface | OpenVPN |
| Address Family | IPv4 |
| Protocol | Any |
| Source | OpenVPN tunnel network (10.8.0.0/24) |
| Destination | LAN net |
| Description | VPN clients to LAN |
Внимание:
Правило
Source: Any / Destination: Anyна интерфейсе OpenVPN разрешит VPN-клиентам неограниченный доступ ко всем ресурсам, включая управление pfSense. Следует ограничивать доступ конкретными подсетями и портами в соответствии с принципом наименьших привилегий.
Split Tunnel и Full Tunnel
Режим туннелирования определяет, какой трафик клиента проходит через VPN.
Split Tunnel (раздельное туннелирование)
В режиме Split Tunnel через VPN передаётся только трафик, предназначенный для корпоративных подсетей, указанных в поле IPv4 Local Network(s). Весь остальной трафик (интернет, публичные ресурсы) проходит через локальный шлюз клиента.
Преимущества:
- Снижение нагрузки на VPN-канал и корпоративный интернет-шлюз.
- Сохранение доступа к локальным ресурсам (принтеры, IoT-устройства).
- Уменьшение задержки при работе с публичными сервисами.
Full Tunnel (полное туннелирование)
В режиме Full Tunnel весь клиентский трафик, включая интернет-трафик, маршрутизируется через VPN. Для активации установить флаг Redirect IPv4 Gateway в настройках сервера.
Преимущества:
- Весь трафик проходит через корпоративную систему фильтрации и инспекции.
- Защита клиентов от атак в недоверенных сетях (публичный Wi-Fi).
- Единообразное применение политик безопасности.
Дополнительно необходимо настроить DNS-серверы через push-опции, чтобы предотвратить утечку DNS-запросов:
push "dhcp-option DNS 10.1.0.1";
push "block-outside-dns";Директива block-outside-dns работает только на Windows-клиентах и предотвращает использование DNS-серверов, полученных от локальной сети.
Комбинированный подход
Для отдельных пользователей допускается переопределение режима через Client Specific Overrides. Например, сотрудники ИБ-отдела могут использовать Full Tunnel, а остальные - Split Tunnel.
Client Specific Overrides
Механизм Client Specific Overrides позволяет задать индивидуальные параметры для конкретных VPN-клиентов. Настройка выполняется в разделе VPN > OpenVPN > Client Specific Overrides.
Назначение фиксированного IP-адреса
Для привязки постоянного IP-адреса к конкретному пользователю:
- Создать запись в Client Specific Overrides.
- В поле Common Name указать CN из сертификата пользователя (обычно совпадает с именем пользователя).
- В поле Advanced указать:
ifconfig-push 10.8.0.100 255.255.255.0;Предоставление доступа к дополнительным подсетям
Для маршрутизации трафика из подсети за клиентом (например, при работе из домашнего офиса с локальной сетью):
iroute 192.168.100.0 255.255.255.0;
push "route 192.168.100.0 255.255.255.0";Внимание:
Директива
irouteдействует только внутри OpenVPN и должна сопровождаться соответствующим маршрутом на уровне сервера (поле IPv4 Remote Network(s) илиpush "route ..."), а также правилом файрвола, разрешающим трафик в указанную подсеть.
Переопределение DNS и шлюза
Для конкретного пользователя допускается переопределение DNS-серверов и режима туннелирования:
push "dhcp-option DNS 10.1.0.53";
push "redirect-gateway def1";
push "block-outside-dns";Многофакторная аутентификация
Базовая аутентификация по сертификату и паролю обеспечивает два фактора: владение (сертификат) и знание (пароль). Для дополнительного усиления рекомендуется добавить одноразовые пароли (TOTP).
TOTP через FreeRADIUS
- Установить пакет FreeRADIUS через System > Package Manager.
- Настроить RADIUS-сервер на интерфейсе localhost (127.0.0.1), порт 1812.
- Создать пользователей с OTP-профилями - каждый пользователь получает секрет для генерации TOTP (совместим с Google Authenticator, Microsoft Authenticator).
- В настройках OpenVPN-сервера установить Backend for authentication на RADIUS и указать параметры FreeRADIUS.
При аутентификации пользователь вводит пароль в формате <password><TOTP-code> (конкатенация основного пароля и шестизначного кода).
LDAP с двухфакторной аутентификацией
При использовании LDAP (Active Directory) двухфакторная аутентификация реализуется через:
- Duo Security - пакет доступен в pfSense, обеспечивает push-уведомления.
- RADIUS-прокси - LDAP-аутентификация через RADIUS-сервер, поддерживающий TOTP (например, privacyIDEA, LinOTP).
DCO - Data Channel Offload
Data Channel Offload (DCO) - механизм, перемещающий обработку данных OpenVPN из пространства пользователя в ядро операционной системы. Это устраняет накладные расходы на переключение контекста между ядром и процессом OpenVPN, значительно повышая пропускную способность.
Характеристики DCO
| Аспект | Без DCO | С DCO |
|---|---|---|
| Обработка данных | Userspace (OpenVPN process) | Kernel |
| Пропускная способность | 200-400 Mbit/s (зависит от CPU) | 800-2000 Mbit/s |
| Загрузка CPU | Высокая | Низкая |
| Совместимость | Все режимы | Ограничения (см. ниже) |
Ограничения DCO
DCO несовместим со следующими конфигурациями:
- Режим tap (только tun).
- Сжатие (compression) - должно быть отключено.
- Шифры без аутентификации (CBC без HMAC).
- Опция
--fragment. - Режим Peer-to-Peer (Shared Key).
Для активации DCO необходимо установить флаг Data Channel Offload в параметрах сервера. При несовместимости конфигурации pfSense отобразит предупреждение.
Внимание:
При активации DCO на существующем сервере все текущие подключения будут разорваны. Клиенты должны поддерживать DCO (OpenVPN 2.6+). Планируйте переключение на период технологического окна.
Устранение неполадок
Клиент не может подключиться
- Проверить правило файрвола на WAN - убедиться, что порт 1194/UDP открыт. Проверка: Diagnostics > Packet Capture на интерфейсе WAN, фильтр по порту 1194.
- Проверить журналы OpenVPN - Status > System Logs > OpenVPN. Ключевые сообщения:
TLS Error: TLS handshake failed- проблема с сертификатами или несовпадение TLS-ключей.AUTH_FAILED- неверный логин/пароль или заблокированная учётная запись.Connection reset, restarting- проблема маршрутизации или NAT.
- Проверить время на сервере и клиенте - расхождение более 5 минут приведёт к отказу проверки сертификатов.
- Проверить CRL (Certificate Revocation List) - если CRL настроен, убедиться, что сертификат клиента не отозван.
TLS Handshake Failed
Наиболее частые причины:
- Несовпадение TLS-ключа - ключ на сервере и клиенте должен быть идентичным. Пересоздать конфигурацию клиента через пакет openvpn-client-export.
- Истёк сертификат CA или сервера - проверить сроки действия в System > Certificates.
- Несовпадение алгоритмов шифрования - убедиться, что клиент поддерживает хотя бы один из алгоритмов, указанных в Data Encryption Algorithms.
- MTU-проблемы - фрагментация TLS-пакетов. Добавить в Custom options:
fragment 1400; mssfix 1400.
Подключение установлено, но нет доступа к ресурсам
- Проверить правила на интерфейсе OpenVPN - убедиться, что трафик из VPN-подсети разрешён.
- Проверить маршруты - на клиенте выполнить
route print(Windows) илиip route(Linux) и убедиться в наличии маршрутов к корпоративным подсетям. - Проверить поле Local Network(s) - если подсеть не указана, маршрут к ней не будет передан клиенту.
- Проверить обратную маршрутизацию - устройства в корпоративной сети должны иметь маршрут к VPN-подсети (
10.8.0.0/24) через pfSense. Если pfSense является шлюзом по умолчанию - маршрут существует автоматически.
Утечка DNS-запросов
При Full Tunnel клиенты могут продолжать использовать локальные DNS-серверы:
- Убедиться, что в настройках сервера заданы DNS Server 1-4.
- Добавить
push "block-outside-dns"в Custom options (только Windows). - На macOS и Linux утечка DNS предотвращается через скрипты обновления resolv.conf, включённые в конфигурацию клиента.

Рис. 3. Страница Status > OpenVPN - активные подключения и статистика
Связанные разделы
- OpenVPN Site-to-Site туннель - объединение площадок через OpenVPN в режиме Peer-to-Peer
- Экспорт клиентских конфигураций - генерация готовых файлов конфигурации и инсталляторов через пакет openvpn-client-export
- IPsec для мобильных клиентов - альтернативный вариант удалённого доступа через встроенный IPsec-клиент
- Правила файрвола в pfSense - создание и управление правилами для контроля VPN-трафика