VPN тунелі та IPsec
1) Навіщо IPsec і коли він доречний
IPsec забезпечує шифрування L3 між майданчиками/хмарами/ЦОДами і для віддаленого доступу. Застосування:- Site-to-Site: on-prem ↔ cloud, cloud ↔ cloud, DC ↔ DC.
- Client VPN: адмін-доступ, jump-host, break-glass.
- Backhaul/Transit: хаби та spoke-VPC/VNet (hub-and-spoke).
- IPsec доречний, коли потрібен стандартний, інтероперабельний стек, апаратне прискорення (AES-NI/DPDK/ASIC), строгі криптополітики і сумісність з мережевим залізом.
2) Базові поняття (швидкий дайджест)
IKEv2 (Phase 1) - узгодження параметрів/автентифікація (RSA/ECDSA/PSK), створення IKE SA.
IPsec ESP (Phase 2) - шифрування трафіку, Child SA (SA для конкретних префіксів/інтерфейсів).
PFS - епhemerality (Diffie-Hellman group) для кожного Child SA.
NAT-T (UDP/4500) - інкапсуляція ESP, якщо є NAT по дорозі.
DPD - Dead Peer Detection, заміна зламаної SA.
Rekey/Reauth - оновлення ключів до закінчення (lifetime/bytes).
- IKE: 'AES-256-GCM'або'AES-256-CBC + SHA-256', DH'group 14/19/20'( 2048-біт MODP або ECP).
- ESP: «AES-GCM-256» (AEAD), PFS тими ж групами.
- Lifetimes: IKE 8-24 год, Child 30-60 хв або за об'ємом трафіку (наприклад, 1-4 ГБ).
3) Топології і типи тунелів
3. 1 Route-based (переважно)
Віртуальний інтерфейс (VTI) на кожній стороні; маршрути/динамічні протоколи (BGP/OSPF) несуть префікси. Простіше масштабувати і сегментувати, краще для overlapping CIDR (з NAT-політиками).
3. 2 Policy-based (селектори трафіку)
Списки «istochnik↔naznacheniye» в SA. Підходить для простих S2S без динамічної маршрутизації; складніше при безлічі префіксів.
3. 3 GRE-over-IPsec / VXLAN-over-IPsec
Інкапсуляція L3/L2 поверх шифрованого каналу: мультипротокол, зручно для BGP (несуть keepalive) і для випадків, де потрібен мультикаст/ЕСМР в underlay.
4) Сегментація, маршрутизація та відмовостійкість
BGP поверх VTI/GRE: обмін префіксами, MED/LocalPref/communities для пріоритетів, max-prefix захист.
ECMP/Active-Active: пара тунелів паралельно (різні провайдери/РОР).
Active-Passive: резервний тунель з більш високим AD/LocalPref, DPD прискорює перемикання.
Split-tunnel: тільки корпоративні префікси через VPN; інтернет - локально (зниження затримок/вартості).
Пересічні CIDR: NAT-політики на краях або проксі-підмережі, по можливості - редизайн адресації.
5) MTU, MSS і продуктивність
IPsec/NAT-T overhead: −~60 -80 байт на пакет. Ставте MTU 1436-1460 для VTI/тунелів.
MSS-clamp: для TCP виставляйте'MSS = 1350-1380'( залежить від underlay), щоб виключити фрагментацію.
Увімкніть PMTUD і логуйте ICMP «Fragmentation Needed».
Апаратні offload/fast-path (DPDK, AES-NI, ASIC) значно зменшують навантаження на CPU.
6) Надійність і безпека ключів
PFS обов'язковий; Rekey до закінчення 70-80% lifetime.
Автентифікація: по можливості ECDSA сертифікати від корпоративного CA (або cloud-CA), PSK - тільки тимчасово і з високою ентропією.
CRL/OCSP або короткі термін дії сертифікатів.
Журнали автентифікації та алерти при повторюваних невдалих IKE.
7) Хмари та особливості провайдерів
AWS: AWS Managed VPN (policy-based/route-based), TGW (Transit Gateway), VGW/CGW. Для перфомансу/масштабу - Direct Connect + IPsec як бекап.
GCP: Cloud VPN (Classic/HA), Cloud Router (BGP); для throughput — Interconnect.
Azure: VPN Gateway (Policy/Route-based), VNet-to-VNet, ExpressRoute для L2/L3 приватки.
Private Endpoints/Privatelink: трафік до PaaS краще вести через приватні інтерфейси замість NAT egress.
8) Kubernetes і сервіс-меш
Ноди K8s всередині приватних мереж; Pod CIDR не повинен «вилазити» у віддалені майданчики - маршрутизуйте Node CIDR і проксируйте сервіси через ingress/egress-шлюзи.
Istio/Linkerd mTLS поверх IPsec - окремі домени довіри.
Egress-контроль: заборона прямого виходу з pod в інтернет (NetworkPolicy), дозвіл - на VTI/VPN.
9) Моніторинг і журнали
Тунель-SLA: latency, jitter, packet loss, up/down стану SA.
BGP: сусідства, префікси, flap-лічильники.
Логи IKE/ESP: автентика, rekey, DPD події.
Експорт в Prometheus (через snmp_exporter/telegraf), алерти на churn SA і деградацію RTT/PLR.
Трейси/логи додатків позначайте'site = onprem'cloud','vpn = tunnel-X'для кореляції.
10) Траблшутінг (чек-лист)
1. Файрволи: дозволені UDP/500, UDP/4500, протокол 50 (ESP) по дорозі (або тільки 4500 при NAT-T).
2. Годинники/NTP синхронні - інакше IKE падає через таймінги/сертифікати.
3. Параметри IKE/ESP збігаються: шифри, DH, lifetimes, селектори.
4. NAT-T включений, якщо є NAT.
5. DPD и rekey: не надто агресивні, але й не ліниві (DPD 10-15s, rekey ~ 70% lifetime).
6. MTU/MSS: затисніть MSS, перевірте ICMP «need fragmentation».
7. BGP: фільтри/communities/AS-path, чи немає «blackhole» через wrong next-hop.
8. Логи: IKE SA established? Child SA created? SPI змінюється? Чи є replay-помилки?
11) Конфіги (референси, укорочені)
11. 1 strongSwan (route-based VTI + IKEv2)
ini
/etc/ipsec. conf conn s2s keyexchange=ikev2 auto=start left=%defaultroute leftid=@onprem. example leftsubnet=0. 0. 0. 0/0 leftauth=pubkey leftcert=onprem. crt right=203. 0. 113. 10 rightid=@cloud. example rightsubnet=0. 0. 0. 0/0 rightauth=pubkey ike=aes256gcm16-prfsha256-ecp256!
esp=aes256gcm16-ecp256!
dpdaction=restart dpddelay=15s ikelifetime=12h lifetime=45m installpolicy=no # route-based через VTI
VTI (Linux):
bash ip tunnel add vti0 local 198. 51. 100. 10 remote 203. 0. 113. 10 mode vti ip link set vti0 up mtu 1436 ip addr add 169. 254. 10. 1/30 dev vti0 ip route add 10. 20. 0. 0/16 dev vti0
11. 2 VyOS (BGP поверх VTI, MSS clamp)
bash set interfaces vti vti0 address '169. 254. 10. 1/30'
set interfaces vti vti0 mtu '1436'
set protocols bgp 65010 neighbor 169. 254. 10. 2 remote-as '65020'
set protocols bgp 65010 neighbor 169. 254. 10. 2 timers holdtime '9'
set firewall options mss-clamp interface-type 'all'
set firewall options mss-clamp mss '1360'
11. 3 Cisco IOS (IKEv2/IPsec profile)
cisco crypto ikev2 proposal P1 encryption aes-gcm-256 integrity null group 19
!
crypto ikev2 policy P1 proposal P1
!
crypto ikev2 keyring KR peer CLOUD address 203. 0. 113. 10 pre-shared-key very-long-psk
!
crypto ikev2 profile IKEV2-PROF match address local 198. 51. 100. 10 authentication local pre-share authentication remote pre-share keyring local KR
!
crypto ipsec transform-set ESP-GCM esp-gcm 256 mode transport
!
crypto ipsec profile IPSEC-PROF set transform-set ESP-GCM set ikev2-profile IKEV2-PROF
!
interface Tunnel10 ip address 169. 254. 10. 1 255. 255. 255. 252 tunnel source 198. 51. 100. 10 tunnel destination 203. 0. 113. 10 tunnel protection ipsec profile IPSEC-PROF ip tcp adjust-mss 1360
12) Політики та комплаєнс
Криптопрофілі і списки дозволених шифрів централізовані (security baseline).
Ротація ключів/сертів з нагадуваннями та автоматизацією.
Аудит-логи IKE/IPsec в незмінному сховищі (WORM/Object Lock).
Сегментація: VRF/VR-домени для prod/stage/dev і карткового контуру (PCI DSS).
13) Специфіка iGaming/фінансів
Data residency: трафік з PII/платіжними подіями йде по IPsec тільки в рамках дозволених юрисдикцій (маршрутизація по VRF/міткам).
PSP/KYC: якщо доступ дають private connectivity - використовуйте; інакше - egress-проксі з mTLS/HMAC, allowlist FQDN.
Журнали транзакцій: паралельний запис (на on-prem і в хмарі) через IPsec/Privatelink; незмінні логи.
SLO «шляхи грошей»: окремі тунелі/маршрути з пріоритетом і підвищеним моніторингом.
14) Антипатерни
PSK назавжди, одна «загальна» секретна фраза.
Policy-based з безліччю префіксів - «пекло адмінів» (краще VTI + BGP).
Ігнорування MTU/MSS → фрагментація, приховані таймаути, 3xx/5xx «без причин».
Один тунель без резерву; один провайдер.
Відсутність NTP/clock-sync → спонтанні падіння IKE.
Типові шифри (застарілі групи/MD5/SHA1).
Немає алертів на flap SA/BGP і зростання RTT/PLR.
15) Чек-лист prod-готовності
- IKEv2 + AES-GCM + PFS (група 14/19/20), узгоджені lifetimes, rekey ~ 70%.
- VTI/GRE, BGP з фільтрами/communities, ECMP або hot-standby.
- NAT-T включений (при необхідності), відкриті UDP/500/4500, ESP по шляху.
- MTU 1436-1460, MSS clamp 1350-1380, PMTUD активний.
- DPD 10-15s, Dead Peer реакція і швидка перевстановлення SA.
- Моніторинг SA/BGP/RTT/PLR; логи IKE/ESP в централізованому зборі.
- Авто-ротація сертів/ключів, короткі TTL, OCSP/CRL, алерти.
- Сегментація (VRF), split-tunnel, політика egress «deny-by-default».
- Хмарні гейтвеї (AWS/GCP/Azure) протестовані на реальному навантаженні.
- Документовані runbook'і фейловера і розширення каналу.
16) TL; DR
Будуйте route-based IPsec (VTI/GRE) з IKEv2 + AES-GCM + PFS, динамічною маршрутизацією BGP, резервом по двох незалежних лінках і коректною MTU/MSS. Увімкніть NAT-T, DPD і регулярний rekey, моніторьте SA/BGP/RTT/PLR, зберігайте логи аутентифікації. У хмарах використовуйте managed-шлюзи і PrivateLink; в Kubernetes - не «тягайте» Pod CIDR через VPN. Для iGaming тримайте юрисдикції і платіжної контур ізольованими, з посиленими SLO і аудитом.