IPsec VPN
IPsec (Internet Protocol Security) - стандартизированный протокол для создания защищенных VPN туннелей с шифрованием и аутентификацией.
Обзор
IPsec обеспечивает:
- Аутентификация - проверка подлинности сторон
- Шифрование - защита данных от перехвата
- Целостность - защита от изменения данных
- Key Exchange - безопасный обмен ключами
- Key Management - управление ключами
VyOS использует strongSwan для реализации IPsec.
Типы VPN:
- Policy-based - на основе статических политик безопасности
- Route-based - на основе виртуальных туннельных интерфейсов (VTI)
Применение:
- Site-to-Site VPN между офисами
- Remote Access (Road Warrior) для мобильных пользователей
- Cloud connectivity (AWS, Azure, GCP)
- Enterprise WAN
IPsec Протоколы
Authentication Header (AH) - RFC 4302
Обеспечивает:
- Целостность данных
- Аутентификация источника
- Защита от replay attacks
Создает хэш на основе IP заголовка и данных.
Не обеспечивает шифрование.
Encapsulating Security Payload (ESP) - RFC 4303
Обеспечивает:
- Шифрование данных
- Аутентификация
- Целостность
- Защита от replay attacks
Рекомендуется для большинства сценариев.
IPsec Режимы
Transport Mode
IPsec заголовок вставляется между IP заголовком и заголовком протокола верхнего уровня.
[IP Header][IPsec Header][TCP/UDP Header][Data]Используется для:
- Host-to-host коммуникации
- L2TP/IPsec
Tunnel Mode
Весь исходный IP пакет инкапсулируется в новый IP пакет.
[New IP Header][IPsec Header][Original IP Header][TCP/UDP Header][Data]Используется для:
- Site-to-Site VPN
- Remote Access VPN
- Gateway-to-gateway
VyOS использует Tunnel Mode по умолчанию.
IKE (Internet Key Exchange)
Протокол для безопасного согласования параметров IPsec и обмена ключами.
IKEv1
Старая версия с двумя фазами:
Phase 1 (Main Mode или Aggressive Mode):
- Взаимная аутентификация
- Создание защищенного канала (ISAKMP SA)
- Обмен ключами через Diffie-Hellman
Phase 2 (Quick Mode):
- Согласование IPsec SA
- Создание ESP/AH туннелей
Режимы:
- Main Mode - 6 сообщений, более безопасный (для site-to-site)
- Aggressive Mode - 3 сообщения, менее безопасный (для road warrior)
IKEv2
Современная версия (RFC 7296):
Преимущества:
- Меньше сообщений (4 вместо 9)
- Встроенный NAT traversal
- Более надежное переподключение (MOBIKE)
- Лучшая производительность
- Защита от DoS атак
VyOS рекомендует использовать IKEv2.
Методы аутентификации
Pre-Shared Key (PSK)
Общий секретный ключ (пароль), известный обеим сторонам.
Преимущества:
- Простая настройка
- Не требует PKI инфраструктуры
Недостатки:
- Сложно масштабировать
- Требует безопасного обмена ключом
- Уязвим к brute-force (при слабом ключе)
Использование: Малые сети, site-to-site между 2 локациями.
RSA Keys
Использование RSA ключей для аутентификации.
Преимущества:
- Безопаснее чем PSK
- Проще управление чем полноценный PKI
Недостатки:
- Требует генерации и обмена публичными ключами
- Нет certificate revocation
X.509 Certificates (PKI)
Использование цифровых сертификатов с Certificate Authority (CA).
Преимущества:
- Наиболее безопасный метод
- Масштабируемость
- Certificate revocation (CRL, OCSP)
- Автоматическое продление сертификатов
Недостатки:
- Сложная настройка
- Требует PKI инфраструктуры
Использование: Корпоративные сети, remote access с множеством клиентов.
Dead Peer Detection (DPD)
Механизм обнаружения неактивных VPN туннелей.
Как работает:
- Периодически отправляет keepalive сообщения
- При отсутствии ответа считает peer недоступным
- Инициирует переподключение или закрытие туннеля
Параметры:
- action - действие при обнаружении (restart, hold, clear)
- interval - интервал проверки (секунды)
- timeout - таймаут ответа (секунды)
Route-based VPN (VTI)
Использует Virtual Tunnel Interface (VTI) для маршрутизации трафика через IPsec.
Преимущества
- Динамическая маршрутизация (OSPF, BGP) через туннель
- Проще настройка firewall (один интерфейс)
- Гибкая маршрутизация
- QoS и policy routing
- Мониторинг как обычного интерфейса
Базовая конфигурация
Site A (Initiator):
# VTI интерфейс
set interfaces vti vti0 address 10.10.0.1/30
set interfaces vti vti0 description 'IPsec to Site B'
# IPsec authentication
set vpn ipsec authentication psk site-b id '203.0.113.1'
set vpn ipsec authentication psk site-b id '203.0.113.2'
set vpn ipsec authentication psk site-b secret 'SuperSecretKey123!'
# IKE group (Phase 1)
set vpn ipsec ike-group IKE-SiteB key-exchange 'ikev2'
set vpn ipsec ike-group IKE-SiteB lifetime '28800'
set vpn ipsec ike-group IKE-SiteB proposal 1 dh-group '14'
set vpn ipsec ike-group IKE-SiteB proposal 1 encryption 'aes256'
set vpn ipsec ike-group IKE-SiteB proposal 1 hash 'sha256'
# ESP group (Phase 2)
set vpn ipsec esp-group ESP-SiteB lifetime '3600'
set vpn ipsec esp-group ESP-SiteB pfs 'dh-group14'
set vpn ipsec esp-group ESP-SiteB proposal 1 encryption 'aes256'
set vpn ipsec esp-group ESP-SiteB proposal 1 hash 'sha256'
# Peer configuration
set vpn ipsec site-to-site peer site-b authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer site-b authentication pre-shared-secret 'site-b'
set vpn ipsec site-to-site peer site-b connection-type 'initiate'
set vpn ipsec site-to-site peer site-b ike-group 'IKE-SiteB'
set vpn ipsec site-to-site peer site-b default-esp-group 'ESP-SiteB'
set vpn ipsec site-to-site peer site-b local-address '203.0.113.1'
set vpn ipsec site-to-site peer site-b remote-address '203.0.113.2'
set vpn ipsec site-to-site peer site-b vti bind 'vti0'
set vpn ipsec site-to-site peer site-b vti esp-group 'ESP-SiteB'
# Отключить auto-install маршрутов
set vpn ipsec options disable-route-autoinstall
# Статический маршрут через VTI
set protocols static route 192.168.2.0/24 interface vti0
commit
saveSite B (Responder):
# VTI интерфейс
set interfaces vti vti0 address 10.10.0.2/30
set interfaces vti vti0 description 'IPsec to Site A'
# IPsec authentication
set vpn ipsec authentication psk site-a id '203.0.113.1'
set vpn ipsec authentication psk site-a id '203.0.113.2'
set vpn ipsec authentication psk site-a secret 'SuperSecretKey123!'
# IKE group (Phase 1)
set vpn ipsec ike-group IKE-SiteA key-exchange 'ikev2'
set vpn ipsec ike-group IKE-SiteA lifetime '28800'
set vpn ipsec ike-group IKE-SiteA proposal 1 dh-group '14'
set vpn ipsec ike-group IKE-SiteA proposal 1 encryption 'aes256'
set vpn ipsec ike-group IKE-SiteA proposal 1 hash 'sha256'
# ESP group (Phase 2)
set vpn ipsec esp-group ESP-SiteA lifetime '3600'
set vpn ipsec esp-group ESP-SiteA pfs 'dh-group14'
set vpn ipsec esp-group ESP-SiteA proposal 1 encryption 'aes256'
set vpn ipsec esp-group ESP-SiteA proposal 1 hash 'sha256'
# Peer configuration
set vpn ipsec site-to-site peer site-a authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer site-a authentication pre-shared-secret 'site-a'
set vpn ipsec site-to-site peer site-a connection-type 'respond'
set vpn ipsec site-to-site peer site-a ike-group 'IKE-SiteA'
set vpn ipsec site-to-site peer site-a default-esp-group 'ESP-SiteA'
set vpn ipsec site-to-site peer site-a local-address '203.0.113.2'
set vpn ipsec site-to-site peer site-a remote-address '203.0.113.1'
set vpn ipsec site-to-site peer site-a vti bind 'vti0'
set vpn ipsec site-to-site peer site-a vti esp-group 'ESP-SiteA'
# Отключить auto-install маршрутов
set vpn ipsec options disable-route-autoinstall
# Статический маршрут через VTI
set protocols static route 192.168.1.0/24 interface vti0
commit
saveПроверка VTI туннеля
show interfaces vti
show vpn ipsec sa
ping 10.10.0.2 source-address 10.10.0.1Policy-based VPN
Использует traffic selectors (политики) для определения какой трафик шифруется.
Базовая конфигурация
Site A:
# IPsec authentication
set vpn ipsec authentication psk site-b id '203.0.113.1'
set vpn ipsec authentication psk site-b id '203.0.113.2'
set vpn ipsec authentication psk site-b secret 'SecretPassword!'
# IKE group
set vpn ipsec ike-group IKE-GROUP key-exchange 'ikev2'
set vpn ipsec ike-group IKE-GROUP proposal 1 dh-group '14'
set vpn ipsec ike-group IKE-GROUP proposal 1 encryption 'aes256'
set vpn ipsec ike-group IKE-GROUP proposal 1 hash 'sha256'
# ESP group
set vpn ipsec esp-group ESP-GROUP proposal 1 encryption 'aes256'
set vpn ipsec esp-group ESP-GROUP proposal 1 hash 'sha256'
# Peer configuration
set vpn ipsec site-to-site peer site-b authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer site-b authentication pre-shared-secret 'site-b'
set vpn ipsec site-to-site peer site-b connection-type 'initiate'
set vpn ipsec site-to-site peer site-b ike-group 'IKE-GROUP'
set vpn ipsec site-to-site peer site-b default-esp-group 'ESP-GROUP'
set vpn ipsec site-to-site peer site-b local-address '203.0.113.1'
set vpn ipsec site-to-site peer site-b remote-address '203.0.113.2'
# Traffic selectors (policies)
set vpn ipsec site-to-site peer site-b tunnel 1 local prefix '192.168.1.0/24'
set vpn ipsec site-to-site peer site-b tunnel 1 remote prefix '192.168.2.0/24'
commit
saveSite B:
# IPsec authentication
set vpn ipsec authentication psk site-a id '203.0.113.1'
set vpn ipsec authentication psk site-a id '203.0.113.2'
set vpn ipsec authentication psk site-a secret 'SecretPassword!'
# IKE group
set vpn ipsec ike-group IKE-GROUP key-exchange 'ikev2'
set vpn ipsec ike-group IKE-GROUP proposal 1 dh-group '14'
set vpn ipsec ike-group IKE-GROUP proposal 1 encryption 'aes256'
set vpn ipsec ike-group IKE-GROUP proposal 1 hash 'sha256'
# ESP group
set vpn ipsec esp-group ESP-GROUP proposal 1 encryption 'aes256'
set vpn ipsec esp-group ESP-GROUP proposal 1 hash 'sha256'
# Peer configuration
set vpn ipsec site-to-site peer site-a authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer site-a authentication pre-shared-secret 'site-a'
set vpn ipsec site-to-site peer site-a connection-type 'respond'
set vpn ipsec site-to-site peer site-a ike-group 'IKE-GROUP'
set vpn ipsec site-to-site peer site-a default-esp-group 'ESP-GROUP'
set vpn ipsec site-to-site peer site-a local-address '203.0.113.2'
set vpn ipsec site-to-site peer site-a remote-address '203.0.113.1'
# Traffic selectors (policies)
set vpn ipsec site-to-site peer site-a tunnel 1 local prefix '192.168.2.0/24'
set vpn ipsec site-to-site peer site-a tunnel 1 remote prefix '192.168.1.0/24'
commit
saveRemote Access VPN (Road Warrior)
IPsec IKEv2 для мобильных клиентов.
Конфигурация сервера
# ESP group
set vpn ipsec esp-group ESP-RW lifetime '3600'
set vpn ipsec esp-group ESP-RW pfs 'disable'
set vpn ipsec esp-group ESP-RW proposal 1 encryption 'aes128gcm128'
set vpn ipsec esp-group ESP-RW proposal 1 hash 'sha256'
# IKE group
set vpn ipsec ike-group IKE-RW key-exchange 'ikev2'
set vpn ipsec ike-group IKE-RW lifetime '7200'
set vpn ipsec ike-group IKE-RW proposal 1 dh-group '14'
set vpn ipsec ike-group IKE-RW proposal 1 encryption 'aes128gcm128'
set vpn ipsec ike-group IKE-RW proposal 1 hash 'sha256'
# IP pool для клиентов
set vpn ipsec remote-access pool rw-pool name-server '8.8.8.8'
set vpn ipsec remote-access pool rw-pool name-server '8.8.4.4'
set vpn ipsec remote-access pool rw-pool prefix '10.255.0.0/24'
# Remote access connection
set vpn ipsec remote-access connection rw authentication client-mode 'eap-mschapv2'
set vpn ipsec remote-access connection rw authentication local-id '203.0.113.1'
set vpn ipsec remote-access connection rw authentication server-mode 'x509'
set vpn ipsec remote-access connection rw authentication x509 ca-certificate 'CA1'
set vpn ipsec remote-access connection rw authentication x509 certificate 'SERVER1'
set vpn ipsec remote-access connection rw esp-group 'ESP-RW'
set vpn ipsec remote-access connection rw ike-group 'IKE-RW'
set vpn ipsec remote-access connection rw local-address '203.0.113.1'
set vpn ipsec remote-access connection rw pool 'rw-pool'
# User authentication
set vpn ipsec remote-access connection rw authentication local-users username alice password 'SecurePass123!'
set vpn ipsec remote-access connection rw authentication local-users username bob password 'AnotherPass456!'
commit
saveСертификаты для Remote Access
Генерация CA:
generate pki ca install ca-name CA1Генерация серверного сертификата:
generate pki certificate sign ca-name CA1 install certificate-name SERVER1Экспорт CA сертификата для клиентов:
show pki ca CA1 certificateEncryption Algorithms
IKE Encryption
Рекомендуемые (по убыванию приоритета):
aes256gcm128- AES-256 GCM (AEAD, самый современный)aes256- AES-256 CBCaes192- AES-192 CBCaes128gcm128- AES-128 GCMaes128- AES-128 CBC
Устаревшие (не рекомендуется):
3des- Triple DESdes- DES
Hash Algorithms
Рекомендуемые:
sha512- SHA-512sha384- SHA-384sha256- SHA-256 (оптимальный баланс)
Устаревшие:
sha1- SHA-1 (уязвим)md5- MD5 (уязвим)
Diffie-Hellman Groups
Рекомендуемые:
20- NIST P-384 (ECC, высокая безопасность)19- NIST P-256 (ECC, оптимальный)16- 4096-bit MODP14- 2048-bit MODP (минимальный приемлемый)
Устаревшие:
5- 1536-bit MODP2- 1024-bit MODP (слабый)
Perfect Forward Secrecy (PFS)
PFS использует отдельные DH обмены для каждой IPsec SA:
set vpn ipsec esp-group ESP-GROUP pfs 'dh-group14'Опции:
enable- использовать DH группу из IKEdh-groupN- конкретная DH группаdisable- без PFS (не рекомендуется)
Dead Peer Detection (DPD)
Конфигурация DPD
set vpn ipsec ike-group IKE-GROUP dead-peer-detection action 'restart'
set vpn ipsec ike-group IKE-GROUP dead-peer-detection interval '30'
set vpn ipsec ike-group IKE-GROUP dead-peer-detection timeout '120'action:
restart- перезапустить туннельhold- удерживать туннельclear- очистить туннель
interval: Интервал проверки (секунды), по умолчанию 30.
timeout: Таймаут ответа (секунды), по умолчанию 120.
Рекомендации DPD
- Site-to-Site:
action restart,interval 30,timeout 120 - Remote Access:
action clear,interval 15,timeout 60 - Unstable connections: меньше interval и timeout
NAT Traversal
IPsec ESP несовместим с NAT (изменяет пакеты, нарушает integrity check).
NAT-T (NAT Traversal) решает проблему:
- Инкапсулирует ESP в UDP порт 4500
- Автоматически определяет NAT
- Включен по умолчанию в VyOS
Конфигурация за NAT
Если VyOS за NAT:
set vpn ipsec site-to-site peer site-b local-address '192.168.1.1'
set vpn ipsec site-to-site peer site-b remote-address '203.0.113.2'- local-address - внутренний IP VyOS
- remote-address - публичный IP удаленного peer
VyOS автоматически использует NAT-T.
Примеры конфигурации
Site-to-Site VTI с IKEv2 и AES-256
HQ (Initiator):
# VTI
set interfaces vti vti10 address 172.16.0.1/30
# PSK
set vpn ipsec authentication psk branch-01 id '198.51.100.1'
set vpn ipsec authentication psk branch-01 id '203.0.113.10'
set vpn ipsec authentication psk branch-01 secret 'MyStrongPassword123!@#'
# IKE
set vpn ipsec ike-group IKE-BRANCH key-exchange 'ikev2'
set vpn ipsec ike-group IKE-BRANCH lifetime '28800'
set vpn ipsec ike-group IKE-BRANCH proposal 1 dh-group '14'
set vpn ipsec ike-group IKE-BRANCH proposal 1 encryption 'aes256'
set vpn ipsec ike-group IKE-BRANCH proposal 1 hash 'sha256'
set vpn ipsec ike-group IKE-BRANCH dead-peer-detection action 'restart'
set vpn ipsec ike-group IKE-BRANCH dead-peer-detection interval '30'
set vpn ipsec ike-group IKE-BRANCH dead-peer-detection timeout '120'
# ESP
set vpn ipsec esp-group ESP-BRANCH lifetime '3600'
set vpn ipsec esp-group ESP-BRANCH pfs 'dh-group14'
set vpn ipsec esp-group ESP-BRANCH proposal 1 encryption 'aes256'
set vpn ipsec esp-group ESP-BRANCH proposal 1 hash 'sha256'
# Peer
set vpn ipsec site-to-site peer branch-01 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer branch-01 authentication pre-shared-secret 'branch-01'
set vpn ipsec site-to-site peer branch-01 connection-type 'initiate'
set vpn ipsec site-to-site peer branch-01 ike-group 'IKE-BRANCH'
set vpn ipsec site-to-site peer branch-01 default-esp-group 'ESP-BRANCH'
set vpn ipsec site-to-site peer branch-01 local-address '198.51.100.1'
set vpn ipsec site-to-site peer branch-01 remote-address '203.0.113.10'
set vpn ipsec site-to-site peer branch-01 vti bind 'vti10'
set vpn ipsec site-to-site peer branch-01 vti esp-group 'ESP-BRANCH'
# Options
set vpn ipsec options disable-route-autoinstall
# Routing
set protocols static route 192.168.10.0/24 interface vti10
commit
saveBranch (Responder):
# VTI
set interfaces vti vti10 address 172.16.0.2/30
# PSK
set vpn ipsec authentication psk hq id '198.51.100.1'
set vpn ipsec authentication psk hq id '203.0.113.10'
set vpn ipsec authentication psk hq secret 'MyStrongPassword123!@#'
# IKE
set vpn ipsec ike-group IKE-HQ key-exchange 'ikev2'
set vpn ipsec ike-group IKE-HQ lifetime '28800'
set vpn ipsec ike-group IKE-HQ proposal 1 dh-group '14'
set vpn ipsec ike-group IKE-HQ proposal 1 encryption 'aes256'
set vpn ipsec ike-group IKE-HQ proposal 1 hash 'sha256'
set vpn ipsec ike-group IKE-HQ dead-peer-detection action 'restart'
set vpn ipsec ike-group IKE-HQ dead-peer-detection interval '30'
set vpn ipsec ike-group IKE-HQ dead-peer-detection timeout '120'
# ESP
set vpn ipsec esp-group ESP-HQ lifetime '3600'
set vpn ipsec esp-group ESP-HQ pfs 'dh-group14'
set vpn ipsec esp-group ESP-HQ proposal 1 encryption 'aes256'
set vpn ipsec esp-group ESP-HQ proposal 1 hash 'sha256'
# Peer
set vpn ipsec site-to-site peer hq authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer hq authentication pre-shared-secret 'hq'
set vpn ipsec site-to-site peer hq connection-type 'respond'
set vpn ipsec site-to-site peer hq ike-group 'IKE-HQ'
set vpn ipsec site-to-site peer hq default-esp-group 'ESP-HQ'
set vpn ipsec site-to-site peer hq local-address '203.0.113.10'
set vpn ipsec site-to-site peer hq remote-address '198.51.100.1'
set vpn ipsec site-to-site peer hq vti bind 'vti10'
set vpn ipsec site-to-site peer hq vti esp-group 'ESP-HQ'
# Options
set vpn ipsec options disable-route-autoinstall
# Routing
set protocols static route 192.168.1.0/24 interface vti10
commit
saveHub-and-Spoke с Multiple Branches
Hub:
# VTI для Branch 1
set interfaces vti vti10 address 172.16.10.1/30
set vpn ipsec authentication psk branch-01 id 'hub'
set vpn ipsec authentication psk branch-01 id 'branch-01'
set vpn ipsec authentication psk branch-01 secret 'Branch01Secret!'
set vpn ipsec site-to-site peer branch-01 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer branch-01 authentication pre-shared-secret 'branch-01'
set vpn ipsec site-to-site peer branch-01 connection-type 'respond'
set vpn ipsec site-to-site peer branch-01 ike-group 'IKE-BRANCHES'
set vpn ipsec site-to-site peer branch-01 default-esp-group 'ESP-BRANCHES'
set vpn ipsec site-to-site peer branch-01 local-address '198.51.100.1'
set vpn ipsec site-to-site peer branch-01 remote-address '203.0.113.10'
set vpn ipsec site-to-site peer branch-01 vti bind 'vti10'
set vpn ipsec site-to-site peer branch-01 vti esp-group 'ESP-BRANCHES'
# VTI для Branch 2
set interfaces vti vti20 address 172.16.20.1/30
set vpn ipsec authentication psk branch-02 id 'hub'
set vpn ipsec authentication psk branch-02 id 'branch-02'
set vpn ipsec authentication psk branch-02 secret 'Branch02Secret!'
set vpn ipsec site-to-site peer branch-02 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer branch-02 authentication pre-shared-secret 'branch-02'
set vpn ipsec site-to-site peer branch-02 connection-type 'respond'
set vpn ipsec site-to-site peer branch-02 ike-group 'IKE-BRANCHES'
set vpn ipsec site-to-site peer branch-02 default-esp-group 'ESP-BRANCHES'
set vpn ipsec site-to-site peer branch-02 local-address '198.51.100.1'
set vpn ipsec site-to-site peer branch-02 remote-address '203.0.113.20'
set vpn ipsec site-to-site peer branch-02 vti bind 'vti20'
set vpn ipsec site-to-site peer branch-02 vti esp-group 'ESP-BRANCHES'
# Routing
set protocols static route 192.168.10.0/24 interface vti10
set protocols static route 192.168.20.0/24 interface vti20
commit
saveRemote Access с EAP-MSCHAPv2
# ESP/IKE groups
set vpn ipsec esp-group ESP-MOBILE lifetime '3600'
set vpn ipsec esp-group ESP-MOBILE proposal 1 encryption 'aes256'
set vpn ipsec esp-group ESP-MOBILE proposal 1 hash 'sha256'
set vpn ipsec ike-group IKE-MOBILE key-exchange 'ikev2'
set vpn ipsec ike-group IKE-MOBILE proposal 1 dh-group '14'
set vpn ipsec ike-group IKE-MOBILE proposal 1 encryption 'aes256'
set vpn ipsec ike-group IKE-MOBILE proposal 1 hash 'sha256'
# IP pool
set vpn ipsec remote-access pool mobile-pool name-server '8.8.8.8'
set vpn ipsec remote-access pool mobile-pool prefix '10.255.0.0/24'
# Remote access connection
set vpn ipsec remote-access connection mobile authentication client-mode 'eap-mschapv2'
set vpn ipsec remote-access connection mobile authentication local-id 'vpn.company.com'
set vpn ipsec remote-access connection mobile authentication server-mode 'x509'
set vpn ipsec remote-access connection mobile authentication x509 ca-certificate 'CompanyCA'
set vpn ipsec remote-access connection mobile authentication x509 certificate 'VPNServer'
set vpn ipsec remote-access connection mobile esp-group 'ESP-MOBILE'
set vpn ipsec remote-access connection mobile ike-group 'IKE-MOBILE'
set vpn ipsec remote-access connection mobile local-address '203.0.113.1'
set vpn ipsec remote-access connection mobile pool 'mobile-pool'
# Users
set vpn ipsec remote-access connection mobile authentication local-users username john password 'JohnPass123!'
set vpn ipsec remote-access connection mobile authentication local-users username jane password 'JanePass456!'
set vpn ipsec remote-access connection mobile authentication local-users username admin password 'AdminSecure789!'
commit
saveОперационные команды
Просмотр IPsec статуса
Все SA (Security Associations):
show vpn ipsec saДетали конкретного peer:
show vpn ipsec sa peer 203.0.113.10IKE SA:
show vpn ike saПросмотр конфигурации
show configuration commands | grep ipsecСтатистика
show vpn ipsec statisticsDebug
Включить logging:
set vpn ipsec logging log-level 2
commitУровни (0-4):
- 0 - только критичные ошибки
- 1 - ошибки
- 2 - информация (рекомендуется для troubleshooting)
- 3 - debug
- 4 - verbose debug
Просмотр логов:
show log vpn ipsecИли через journald:
journalctl -u strongswanПерезапуск туннеля
restart vpn ipsec peer branch-01Все туннели:
restart vpnReset SA
reset vpn ipsec peer branch-01Интеграция
С Firewall
Разрешить IKE и ESP:
# IKE (UDP 500)
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 destination port 500
set firewall ipv4 input filter rule 100 protocol udp
set firewall ipv4 input filter rule 100 description 'IPsec IKE'
# NAT-T (UDP 4500)
set firewall ipv4 input filter rule 101 action accept
set firewall ipv4 input filter rule 101 destination port 4500
set firewall ipv4 input filter rule 101 protocol udp
set firewall ipv4 input filter rule 101 description 'IPsec NAT-T'
# ESP (protocol 50)
set firewall ipv4 input filter rule 102 action accept
set firewall ipv4 input filter rule 102 protocol esp
set firewall ipv4 input filter rule 102 description 'IPsec ESP'
commitДля VTI интерфейсов:
set firewall ipv4 input filter rule 200 action accept
set firewall ipv4 input filter rule 200 inbound-interface name vti0
set firewall ipv4 input filter rule 200 description 'Allow from VPN'
commitС NAT
Exclude VPN трафика от NAT:
# Exclude site-to-site VPN traffic
set nat source rule 100 destination address 192.168.10.0/24
set nat source rule 100 exclude
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.1.0/24
# Regular NAT для интернета
set nat source rule 200 outbound-interface name eth0
set nat source rule 200 source address 192.168.1.0/24
set nat source rule 200 translation address masquerade
commitС динамической маршрутизацией
OSPF через VTI:
set interfaces vti vti0 address 172.16.0.1/30
set protocols ospf interface vti0 area 0
set protocols ospf interface vti0 authentication md5 key-id 1 md5-key 'OspfSecret!'
set protocols ospf interface vti0 network point-to-point
commitBGP через VTI:
set interfaces vti vti0 address 172.16.0.1/30
set protocols bgp system-as 65001
set protocols bgp neighbor 172.16.0.2 remote-as 65002
set protocols bgp neighbor 172.16.0.2 update-source 172.16.0.1
commitУстранение неполадок
Туннель не поднимается
Проверьте статус:
show vpn ipsec saЕсли пусто - туннель не установлен.
Проверьте:
Доступность peer:
ping 203.0.113.10Firewall правила:
show firewallДолжны быть разрешены UDP 500, UDP 4500, ESP (50).
PSK совпадает на обеих сторонах
IKE и ESP параметры совпадают
Логи:
show log vpn ipsec
Phase 1 успешна, Phase 2 нет
Проверьте:
- ESP group параметры (encryption, hash)
- Traffic selectors (local/remote prefix)
- Firewall не блокирует ESP
Туннель периодически падает
Проверьте:
- DPD настройки
- MTU проблемы (установите MTU 1400 на VTI)
- Unstable connection (измените DPD interval)
Низкая производительность
MTU optimization:
set interfaces vti vti0 mtu 1400 commitHardware offloading: Проверьте поддержку AES-NI на CPU:
cat /proc/cpuinfo | grep aesИспользуйте AES-GCM:
set vpn ipsec esp-group ESP-GROUP proposal 1 encryption 'aes256gcm128'Отключите PFS (если не критично):
set vpn ipsec esp-group ESP-GROUP pfs 'disable'
NAT Traversal проблемы
Если peer за NAT и туннель не работает:
- Убедитесь что UDP 4500 разрешен
- Проверьте что NAT-T включен (по умолчанию)
- Попробуйте форсировать encapsulation:
set vpn ipsec site-to-site peer site-b force-udp-encapsulation commit
Certificate проблемы
Проверьте сертификаты:
show pki ca
show pki certificateУбедитесь:
- CA certificate установлен
- Server certificate подписан CA
- Certificate не истек
- CN (Common Name) совпадает с local-id
Безопасность
Рекомендации
Используйте IKEv2 - более безопасен чем IKEv1
Сильные алгоритмы:
- Encryption: AES-256-GCM или AES-256
- Hash: SHA-256 или выше
- DH Group: 14 или выше
PFS (Perfect Forward Secrecy):
set vpn ipsec esp-group ESP-GROUP pfs 'dh-group14'Certificate authentication для remote access (вместо PSK)
Сильные PSK:
- Минимум 20 символов
- Случайные символы
- Используйте password generator
Firewall для VPN трафика:
set firewall ipv4 forward filter rule 100 action accept set firewall ipv4 forward filter rule 100 inbound-interface name vti0 set firewall ipv4 forward filter rule 100 destination address 192.168.1.0/24Логирование:
set vpn ipsec logging log-level 1Регулярное обновление VyOS для security patches
Monitoring состояния туннелей
Certificate rotation - обновляйте сертификаты до истечения
Избегайте
- IKEv1 Aggressive Mode (уязвим к offline attacks)
- Weak algorithms: 3DES, MD5, SHA1, DH group < 14
- Weak PSK (короткие или словарные пароли)
- Отключение DPD
- Отключение PFS (если возможно)
Производительность
Optimization
Hardware AES: Используйте CPU с AES-NI инструкциями для ускорения шифрования.
AES-GCM:
set vpn ipsec esp-group ESP-GROUP proposal 1 encryption 'aes256gcm128'GCM быстрее CBC и обеспечивает AEAD.
MTU tuning:
set interfaces vti vti0 mtu 1400 commitУменьшает фрагментацию.
MSS clamping:
set firewall ipv4 forward filter rule 10 action accept set firewall ipv4 forward filter rule 10 protocol tcp set firewall ipv4 forward filter rule 10 tcp flags syn set firewall ipv4 forward filter rule 10 tcp mss 1360Rekey optimization:
set vpn ipsec ike-group IKE-GROUP lifetime '28800' set vpn ipsec esp-group ESP-GROUP lifetime '3600'Баланс между security и performance.
Benchmark
Тестирование пропускной способности:
iperf3 -c 192.168.2.1 -t 60Через VTI:
iperf3 -c 172.16.0.2 -B 172.16.0.1 -t 60Лучшие практики
- Route-based VPN (VTI) - для гибкости
- IKEv2 - для надежности
- Certificates - для масштабируемости
- DPD - всегда включен
- PFS - для forward secrecy
- Logging - включен для troubleshooting
- Мониторинг - отслеживайте состояние туннелей
- Документация - описывайте каждый туннель
- Naming convention - понятные имена (site-name, не ip)
- Резервирование - backup туннели для critical links
Ограничения
- Максимум производительности зависит от CPU (AES encryption)
- Policy-based VPN не поддерживает динамическую маршрутизацию
- Remote access ограничен IKEv2 (IKEv1 не поддерживается для road warrior)
- Certificate revocation требует CRL или OCSP setup
Следующие шаги
- WireGuard - современная альтернатива IPsec
- OpenVPN - SSL VPN
- VTI Interfaces - детали VTI интерфейсов
- Firewall - защита VPN трафика
- NAT - exclude VPN от NAT