Рецепты 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 на обеих сторонах.

Пошаговая настройка

  1. Определите параметры обеих сторон:

    • 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
  2. На pfSense перейдите в VPN - IPsec - Tunnels и нажмите Add P1

  3. Настройте 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
  4. Нажмите 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
  5. На 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
  1. На pfSense перейдите в Firewall - Rules - IPsec и создайте правило:
Action: Pass
Interface: IPsec
Source: 10.0.1.0/24
Destination: LAN net
  1. Включите туннель: Status - IPsec - Overview, нажмите Connect P1 and P2

  2. Проверьте состояние в Status - IPsec - SPD и протестируйте связность ping между подсетями

Важно: параметры шифрования, хеширования, DH-группы и lifetime должны совпадать на обеих сторонах. Несовпадение любого параметра приведет к сбою установления туннеля.

IPsec Site-to-Site между pfSense и AWS VPN Gateway

AWS VPN Gateway поддерживает IPsec-туннели с внешними устройствами. AWS предоставляет два туннеля для обеспечения отказоустойчивости. Рекомендуется настроить оба.

Пошаговая настройка

  1. В консоли AWS создайте Customer Gateway:

    • BGP ASN - 65000 (или ваш ASN)
    • IP Address - публичный IP pfSense WAN
    • Routing - Static
  2. Создайте Virtual Private Gateway и присоедините к VPC

  3. Создайте Site-to-Site VPN Connection:

    • Customer Gateway - выберите созданный
    • Virtual Private Gateway - выберите созданный
    • Routing Options - Static
    • Static IP Prefixes - подсеть LAN pfSense (192.168.1.0/24)
  4. Скачайте конфигурацию VPN: выберите Vendor: Generic для получения параметров

  5. На 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
  6. Добавьте 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
  7. Повторите шаги 5-6 для второго AWS-туннеля (с другим Remote Gateway и PSK)

  8. Перейдите в System - Routing - Gateways и добавьте шлюзы для обоих туннелей

  9. Настройте правила файрвола на интерфейсе IPsec для разрешения трафика из VPC

  10. В консоли 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-политик.

Пошаговая настройка

  1. В портале Azure создайте Virtual Network Gateway:

    • Gateway type - VPN
    • VPN type - Route-based
    • SKU - VpnGw1 или выше
    • Virtual network - выберите целевую VNet
  2. Создайте Local Network Gateway:

    • IP address - публичный IP pfSense WAN
    • Address space - подсеть LAN pfSense (192.168.1.0/24)
  3. Создайте Connection:

    • Connection type - Site-to-site (IPsec)
    • Virtual network gateway - созданный шлюз
    • Local network gateway - созданный LNG
    • Shared key - сгенерируйте надежный ключ
  4. Настройте IPsec/IKE Policy на Azure connection (Custom):

    • IKE Phase 1: AES256, SHA256, DHGroup14
    • IPsec Phase 2: GCMAES256, GCMAES256, PFS2048
    • SA Lifetime: 27000 секунд
  5. На 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
  6. Добавьте 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
  7. Включите Dead Peer Detection: Threshold 10, Retry 3

  8. Создайте правила файрвола на IPsec для разрешения трафика из Azure VNet

  9. Проверьте состояние в Status - IPsec на pfSense и в Azure Portal - Connection Status

Дополнительные сведения о настройке интерфейсов описаны в разделе интерфейсы pfSense .

OpenVPN с аутентификацией Active Directory

Интеграция OpenVPN с Active Directory позволяет использовать корпоративные учетные данные для аутентификации VPN-пользователей. pfSense поддерживает аутентификацию через LDAP-сервер AD.

Пошаговая настройка

  1. Перейдите в 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
  2. Проверьте подключение кнопкой Select a container - если контейнеры отображаются, LDAP работает

  3. Перейдите в System - User Manager - Settings и установите Authentication Server на созданный LDAP-сервер

  4. Перейдите в 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
  5. Перейдите в Firewall - Rules - WAN и создайте правило:

Action: Pass
Protocol: UDP
Destination port: 1194
  1. Перейдите в Firewall - Rules - OpenVPN и разрешите трафик VPN-клиентов в LAN

  2. Установите пакет OpenVPN Client Export: System - Package Manager - openvpn-client-export

  3. Экспортируйте конфигурации для клиентов: VPN - OpenVPN - Client Export

Важно: сервисная учетная запись для LDAP-привязки должна иметь минимальные привилегии (только чтение). Используйте LDAPS (порт 636) для шифрования LDAP-трафика.

WireGuard для мобильных устройств с QR-кодами

WireGuard обеспечивает высокопроизводительное VPN-подключение с минимальными накладными расходами. Генерация QR-кодов упрощает настройку на мобильных устройствах.

Пошаговая настройка

  1. Установите пакет WireGuard: System - Package Manager - Available Packages - WireGuard

  2. Перейдите в VPN - WireGuard - Settings и включите WireGuard

  3. Перейдите в VPN - WireGuard - Tunnels и создайте туннель:

    • Description - WAN WireGuard
    • Listen Port - 51820
    • Interface Keys - нажмите Generate для создания пары ключей
    • Сохраните публичный ключ сервера
  4. Перейдите в VPN - WireGuard - Peers и добавьте пир для каждого мобильного устройства:

    • Tunnel - выберите созданный туннель
    • Description - имя устройства (например, iPhone-Admin)
    • Public Key - публичный ключ клиента (сгенерируйте на клиенте или через pfSense)
    • Allowed IPs - уникальный IP клиента (например, 10.0.9.2/32)
    • Pre-shared Key - сгенерируйте для дополнительной безопасности (опционально)
  5. Назначьте интерфейс туннелю: Interfaces - Assign - выберите tun_wg0 и включите

  6. Назначьте IP-адрес интерфейсу WireGuard: 10.0.9.1/24

  7. Создайте правила файрвола:

    • На WAN: разрешите UDP 51820
    • На интерфейсе WireGuard: разрешите трафик из 10.0.9.0/24
  8. Сгенерируйте конфигурацию клиента:

[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
  1. Сгенерируйте QR-код из конфигурации. На машине с установленным qrencode:
qrencode -t ansiutf8 < client-wg.conf

Или используйте онлайн-генератор QR на локальной машине (не передавайте конфигурацию на внешние сервисы).

  1. Откройте приложение WireGuard на мобильном устройстве, нажмите + и отсканируйте QR-код

Подробности настройки WireGuard описаны в разделе VPN pfSense .

Multi-WAN с отказоустойчивостью OpenVPN

При наличии нескольких WAN-каналов можно настроить автоматическое переключение OpenVPN-туннеля на резервный канал при сбое основного.

Пошаговая настройка

  1. Убедитесь, что Multi-WAN настроен и оба шлюза работают

  2. Перейдите в 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
  3. Перейдите в VPN - OpenVPN - Servers

  4. В настройках OpenVPN-сервера:

    • Interface - выберите группу шлюзов VPN_Failover (или оставьте любой и настройте через outbound NAT)
  5. Настройте Firewall - NAT - Outbound:

    • Переключите на Hybrid Outbound NAT
    • Создайте правило для OpenVPN-подсети через каждый WAN-интерфейс
  6. Настройте правила файрвола на обоих WAN-интерфейсах для разрешения OpenVPN (UDP 1194)

  7. На клиентской стороне добавьте в конфигурацию OpenVPN оба адреса сервера:

remote 203.0.113.1 1194 udp
remote 198.51.100.1 1194 udp
  1. Протестируйте переключение: отключите основной WAN и убедитесь, что клиенты переподключаются через резервный канал

Важно: при переключении WAN существующие OpenVPN-сессии разрываются. Клиенты должны быть настроены на автоматическое переподключение. Параметр resolv-retry infinite в конфигурации клиента обеспечивает повторные попытки подключения.

VPN со Split DNS

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

Расширенная конфигурация с несколькими доменами

  1. Настройте базовый OpenVPN-сервер согласно инструкции из общих рецептов

  2. Перейдите в 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-среда)
  3. В настройках 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"
  1. Добавьте маршруты ко всем внутренним подсетям:

    • IPv4 Local Network - 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24
  2. Убедитесь, что на pfSense DNS Resolver слушает интерфейс OpenVPN-туннеля

  3. Протестируйте разрешение корпоративных доменов через VPN-подключение с помощью nslookup или dig

Для устранения неполадок VPN-подключений обратитесь к руководству по диагностике .

Last updated on