Рецепты VPN для pfSense - IPsec, OpenVPN, WireGuard
В этом разделе собраны рецепты настройки VPN-подключений в pfSense для различных сценариев: межсайтовые туннели IPsec с оборудованием разных производителей, интеграция OpenVPN с корпоративными каталогами, развертывание WireGuard для мобильных пользователей и обеспечение отказоустойчивости VPN-каналов.
Перед настройкой VPN рекомендуется создать резервную копию конфигурации: Diagnostics - Backup & Restore. Общие сведения о VPN-подключениях описаны в разделе VPN pfSense .
IPsec Site-to-Site между pfSense и Cisco ASA
IPsec-туннель между pfSense и Cisco ASA позволяет объединить офисные сети через зашифрованный канал. Критически важно согласовать параметры Phase 1 и Phase 2 на обеих сторонах.
Пошаговая настройка
Определите параметры обеих сторон:
- pfSense WAN IP: например, 203.0.113.1
- Cisco ASA WAN IP: например, 198.51.100.1
- pfSense LAN: 192.168.1.0/24
- Cisco ASA LAN: 10.0.1.0/24
На pfSense перейдите в VPN - IPsec - Tunnels и нажмите Add P1
Настройте Phase 1:
- Key Exchange Version - IKEv2
- Remote Gateway - 198.51.100.1
- Authentication Method - Mutual PSK
- Pre-Shared Key - сгенерируйте надежный ключ (минимум 32 символа)
- Encryption Algorithm - AES 256-GCM, 128 bits
- Hash Algorithm - SHA256
- DH Group - 14 (2048 bit)
- Lifetime - 28800
Нажмите Save, затем нажмите Show Phase 2 Entries и добавьте Phase 2:
- Mode - Tunnel IPv4
- Local Network - LAN subnet (192.168.1.0/24)
- Remote Network - 10.0.1.0/24
- Encryption Algorithm - AES 256-GCM, 128 bits
- Hash Algorithm - SHA256
- PFS Key Group - 14 (2048 bit)
- Lifetime - 3600
На Cisco ASA настройте зеркальные параметры:
crypto ikev2 policy 10
encryption aes-gcm-256
integrity sha256
group 14
lifetime 28800
crypto ikev2 enable outside
tunnel-group 203.0.113.1 type ipsec-l2l
tunnel-group 203.0.113.1 ipsec-attributes
ikev2 local-authentication pre-shared-key <ключ>
ikev2 remote-authentication pre-shared-key <ключ>
access-list VPN_TRAFFIC extended permit ip 10.0.1.0 255.255.255.0 192.168.1.0 255.255.255.0
crypto ipsec ikev2 ipsec-proposal AES256-GCM
protocol esp encryption aes-gcm-256
crypto map VPN_MAP 10 match address VPN_TRAFFIC
crypto map VPN_MAP 10 set peer 203.0.113.1
crypto map VPN_MAP 10 set ikev2 ipsec-proposal AES256-GCM
crypto map VPN_MAP interface outside- На pfSense перейдите в Firewall - Rules - IPsec и создайте правило:
Action: Pass
Interface: IPsec
Source: 10.0.1.0/24
Destination: LAN netВключите туннель: Status - IPsec - Overview, нажмите Connect P1 and P2
Проверьте состояние в Status - IPsec - SPD и протестируйте связность ping между подсетями
Важно: параметры шифрования, хеширования, DH-группы и lifetime должны совпадать на обеих сторонах. Несовпадение любого параметра приведет к сбою установления туннеля.
IPsec Site-to-Site между pfSense и AWS VPN Gateway
AWS VPN Gateway поддерживает IPsec-туннели с внешними устройствами. AWS предоставляет два туннеля для обеспечения отказоустойчивости. Рекомендуется настроить оба.
Пошаговая настройка
В консоли AWS создайте Customer Gateway:
- BGP ASN - 65000 (или ваш ASN)
- IP Address - публичный IP pfSense WAN
- Routing - Static
Создайте Virtual Private Gateway и присоедините к VPC
Создайте Site-to-Site VPN Connection:
- Customer Gateway - выберите созданный
- Virtual Private Gateway - выберите созданный
- Routing Options - Static
- Static IP Prefixes - подсеть LAN pfSense (192.168.1.0/24)
Скачайте конфигурацию VPN: выберите Vendor: Generic для получения параметров
На pfSense перейдите в VPN - IPsec - Tunnels и создайте Phase 1 для первого туннеля:
- Key Exchange Version - IKEv1 (AWS по умолчанию использует IKEv1)
- Remote Gateway - IP первого AWS туннеля (из скачанной конфигурации)
- Authentication Method - Mutual PSK
- Pre-Shared Key - из конфигурации AWS
- Encryption Algorithm - AES 256
- Hash Algorithm - SHA256
- DH Group - 2 (AWS default)
- Lifetime - 28800
Добавьте Phase 2:
- Local Network - LAN subnet
- Remote Network - VPC CIDR (например, 10.0.0.0/16)
- Encryption Algorithm - AES 256
- Hash Algorithm - SHA256
- PFS Key Group - 2
- Lifetime - 3600
Повторите шаги 5-6 для второго AWS-туннеля (с другим Remote Gateway и PSK)
Перейдите в System - Routing - Gateways и добавьте шлюзы для обоих туннелей
Настройте правила файрвола на интерфейсе IPsec для разрешения трафика из VPC
В консоли AWS проверьте статус туннелей в разделе VPN Connections - Tunnel Details
Важно: AWS использует DH Group 2 по умолчанию. Убедитесь, что параметры Phase 1 и Phase 2 точно соответствуют скачанной конфигурации. DPD (Dead Peer Detection) должен быть включен на pfSense.
IPsec Site-to-Site между pfSense и Azure VPN Gateway
Azure VPN Gateway поддерживает IKEv2 с расширенными параметрами шифрования. Подключение pfSense к Azure Virtual Network Gateway требует согласования пользовательских IPsec-политик.
Пошаговая настройка
В портале Azure создайте Virtual Network Gateway:
- Gateway type - VPN
- VPN type - Route-based
- SKU - VpnGw1 или выше
- Virtual network - выберите целевую VNet
Создайте Local Network Gateway:
- IP address - публичный IP pfSense WAN
- Address space - подсеть LAN pfSense (192.168.1.0/24)
Создайте Connection:
- Connection type - Site-to-site (IPsec)
- Virtual network gateway - созданный шлюз
- Local network gateway - созданный LNG
- Shared key - сгенерируйте надежный ключ
Настройте IPsec/IKE Policy на Azure connection (Custom):
- IKE Phase 1: AES256, SHA256, DHGroup14
- IPsec Phase 2: GCMAES256, GCMAES256, PFS2048
- SA Lifetime: 27000 секунд
На pfSense перейдите в VPN - IPsec - Tunnels и создайте Phase 1:
- Key Exchange Version - IKEv2
- Remote Gateway - публичный IP Azure VPN Gateway
- Pre-Shared Key - ключ из Azure connection
- Encryption Algorithm - AES 256
- Hash Algorithm - SHA256
- DH Group - 14 (2048 bit)
- Lifetime - 27000
Добавьте Phase 2:
- Local Network - LAN subnet
- Remote Network - Azure VNet CIDR (например, 10.1.0.0/16)
- Encryption Algorithm - AES 256-GCM, 128 bits
- PFS Key Group - 14
- Lifetime - 3600
Включите Dead Peer Detection: Threshold 10, Retry 3
Создайте правила файрвола на IPsec для разрешения трафика из Azure VNet
Проверьте состояние в Status - IPsec на pfSense и в Azure Portal - Connection Status
Дополнительные сведения о настройке интерфейсов описаны в разделе интерфейсы pfSense .
OpenVPN с аутентификацией Active Directory
Интеграция OpenVPN с Active Directory позволяет использовать корпоративные учетные данные для аутентификации VPN-пользователей. pfSense поддерживает аутентификацию через LDAP-сервер AD.
Пошаговая настройка
Перейдите в System - User Manager - Authentication Servers и добавьте LDAP-сервер:
- Type - LDAP
- Hostname or IP address - IP-адрес контроллера домена
- Port - 636 (LDAPS) или 389 (LDAP)
- Transport - SSL/TLS (рекомендуется)
- Peer Certificate Authority - CA сертификат домена (импортируйте заранее)
- Protocol version - 3
- Search scope - Entire Subtree
- Base DN - DC=corp,DC=example,DC=com
- Authentication Containers - OU=Users,DC=corp,DC=example,DC=com
- Extended Query - включите и укажите:
memberOf=CN=VPN_Users,OU=Groups,DC=corp,DC=example,DC=com - Bind Credentials - DN и пароль сервисной учетной записи AD
Проверьте подключение кнопкой Select a container - если контейнеры отображаются, LDAP работает
Перейдите в System - User Manager - Settings и установите Authentication Server на созданный LDAP-сервер
Перейдите в VPN - OpenVPN - Servers и создайте сервер:
- Server mode - Remote Access (SSL/TLS + User Auth)
- Backend for authentication - выберите LDAP-сервер AD
- Protocol - UDP on IPv4 only
- Local port - 1194
- TLS Configuration - включите TLS Key
- Peer Certificate Authority - внутренний CA pfSense
- Server certificate - сертификат OpenVPN-сервера
- Encryption Algorithm - AES-256-GCM
- Auth digest algorithm - SHA256
- IPv4 Tunnel Network - 10.0.8.0/24
- IPv4 Local Network - 192.168.1.0/24
Перейдите в Firewall - Rules - WAN и создайте правило:
Action: Pass
Protocol: UDP
Destination port: 1194Перейдите в Firewall - Rules - OpenVPN и разрешите трафик VPN-клиентов в LAN
Установите пакет OpenVPN Client Export: System - Package Manager - openvpn-client-export
Экспортируйте конфигурации для клиентов: VPN - OpenVPN - Client Export
Важно: сервисная учетная запись для LDAP-привязки должна иметь минимальные привилегии (только чтение). Используйте LDAPS (порт 636) для шифрования LDAP-трафика.
WireGuard для мобильных устройств с QR-кодами
WireGuard обеспечивает высокопроизводительное VPN-подключение с минимальными накладными расходами. Генерация QR-кодов упрощает настройку на мобильных устройствах.
Пошаговая настройка
Установите пакет WireGuard: System - Package Manager - Available Packages - WireGuard
Перейдите в VPN - WireGuard - Settings и включите WireGuard
Перейдите в VPN - WireGuard - Tunnels и создайте туннель:
- Description - WAN WireGuard
- Listen Port - 51820
- Interface Keys - нажмите Generate для создания пары ключей
- Сохраните публичный ключ сервера
Перейдите в VPN - WireGuard - Peers и добавьте пир для каждого мобильного устройства:
- Tunnel - выберите созданный туннель
- Description - имя устройства (например, iPhone-Admin)
- Public Key - публичный ключ клиента (сгенерируйте на клиенте или через pfSense)
- Allowed IPs - уникальный IP клиента (например, 10.0.9.2/32)
- Pre-shared Key - сгенерируйте для дополнительной безопасности (опционально)
Назначьте интерфейс туннелю: Interfaces - Assign - выберите tun_wg0 и включите
Назначьте IP-адрес интерфейсу WireGuard: 10.0.9.1/24
Создайте правила файрвола:
- На WAN: разрешите UDP 51820
- На интерфейсе WireGuard: разрешите трафик из 10.0.9.0/24
Сгенерируйте конфигурацию клиента:
[Interface]
PrivateKey = <приватный_ключ_клиента>
Address = 10.0.9.2/32
DNS = 10.0.9.1
[Peer]
PublicKey = <публичный_ключ_сервера>
Endpoint = 203.0.113.1:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25- Сгенерируйте QR-код из конфигурации. На машине с установленным
qrencode:
qrencode -t ansiutf8 < client-wg.confИли используйте онлайн-генератор QR на локальной машине (не передавайте конфигурацию на внешние сервисы).
- Откройте приложение WireGuard на мобильном устройстве, нажмите + и отсканируйте QR-код
Подробности настройки WireGuard описаны в разделе VPN pfSense .
Multi-WAN с отказоустойчивостью OpenVPN
При наличии нескольких WAN-каналов можно настроить автоматическое переключение OpenVPN-туннеля на резервный канал при сбое основного.
Пошаговая настройка
Убедитесь, что Multi-WAN настроен и оба шлюза работают
Перейдите в System - Routing - Gateway Groups и создайте группу:
- Group Name - VPN_Failover
- Gateway Priority:
- WAN_GW - Tier 1
- WAN2_GW - Tier 2
- Trigger Level - Packet Loss or High Latency
Перейдите в VPN - OpenVPN - Servers
В настройках OpenVPN-сервера:
- Interface - выберите группу шлюзов VPN_Failover (или оставьте любой и настройте через outbound NAT)
Настройте Firewall - NAT - Outbound:
- Переключите на Hybrid Outbound NAT
- Создайте правило для OpenVPN-подсети через каждый WAN-интерфейс
Настройте правила файрвола на обоих WAN-интерфейсах для разрешения OpenVPN (UDP 1194)
На клиентской стороне добавьте в конфигурацию OpenVPN оба адреса сервера:
remote 203.0.113.1 1194 udp
remote 198.51.100.1 1194 udp- Протестируйте переключение: отключите основной WAN и убедитесь, что клиенты переподключаются через резервный канал
Важно: при переключении WAN существующие OpenVPN-сессии разрываются. Клиенты должны быть настроены на автоматическое переподключение. Параметр
resolv-retry infiniteв конфигурации клиента обеспечивает повторные попытки подключения.
VPN со Split DNS
Split DNS разделяет разрешение DNS-имен: корпоративные домены разрешаются через внутренний сервер через VPN, остальные запросы используют публичные DNS. Подробный рецепт настройки Split DNS описан в разделе популярных рецептов конфигурации .
Расширенная конфигурация с несколькими доменами
Настройте базовый OpenVPN-сервер согласно инструкции из общих рецептов
Перейдите в Services - DNS Resolver и добавьте несколько Domain Override:
- corp.example.com - 10.0.1.10 (основной AD)
- dev.example.com - 10.0.2.10 (среда разработки)
- staging.example.com - 10.0.3.10 (staging-среда)
В настройках OpenVPN-сервера добавьте Advanced Configuration:
push "dhcp-option DOMAIN corp.example.com"
push "dhcp-option DOMAIN dev.example.com"
push "dhcp-option DOMAIN staging.example.com"
push "dhcp-option DNS 10.0.9.1"Добавьте маршруты ко всем внутренним подсетям:
- IPv4 Local Network - 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24
Убедитесь, что на pfSense DNS Resolver слушает интерфейс OpenVPN-туннеля
Протестируйте разрешение корпоративных доменов через VPN-подключение с помощью
nslookupилиdig
Для устранения неполадок VPN-подключений обратитесь к руководству по диагностике .