Шифрование в SDN: MACsec, IPsec, WireGuard и mTLS

Цикл «Виды связности и SDN», часть 8. Предыдущая часть: «NAT, CGNAT и ограниченные сети: где заканчивается прямая связность».
Ось: шифрование.
Шифрование — не переключатель «безопасно». Нужно знать границы защищённого участка.
MACsec
MACsec защищает Ethernet между непосредственно соединёнными устройствами на конкретном линке. Это hop-by-hop, а не шифрование всего VLAN.
Он полезен для межкоммутаторных и серверных линков в контролируемой инфраструктуре. Глобальную overlay-сеть и NAT traversal MACsec не строит. На каждом маршрутизируемом переходе граница шифрования заканчивается.
IPsec
IPsec работает на L3. ESP защищает содержимое IP-пакета, tunnel mode добавляет внешний IP-заголовок. IKE управляет согласованием ключей.
Для NAT применяется NAT-T, обычно UDP/4500. IPsec широко поддерживается маршрутизаторами и аппаратным ускорением, удобен для site-to-site и нормативно закреплённых решений.
Цена — сложная матрица режимов, предложений (proposals), сроков жизни ключей, сертификатов и поведения разных вендоров. Когда туннель не поднялся, журнал часто уверен, что администратор уже знает все аббревиатуры.
WireGuard
WireGuard использует компактную модель публичных ключей и UDP. Он хорошо подходит как защищённый L3 data plane между узлами.
Сам протокол не содержит полноценного управления участниками, выдачи адресов, ACL, NAT discovery и relay. Эту часть добавляют Tailscale, Headscale, NetBird, Netmaker и другие системы.
WireGuard не маскирует протокол и не поддерживает TCP mode. Это осознанное архитектурное решение.
mTLS
mTLS взаимно аутентифицирует приложения или сервисные proxies. Защищается конкретное соединение между нагрузками, а решение о доступе может приниматься по identity сервиса, а не IP-адресу.
Это сильная модель для микросервисов и service mesh, но она не заменяет базовую IP-связность. Сначала пакету всё равно нужно добраться до удалённой стороны.
Шифрование поверх overlay
Возможны варианты:
- Native routing и WireGuard между узлами.
- IPsec между площадками, внутри — обычный VXLAN.
- VXLAN/Geneve между узлами и прозрачное WireGuard-шифрование поверх.
- Приложение использует mTLS, а межузловой транспорт дополнительно защищён IPsec.
Cilium в tunnel mode сначала помещает pod-трафик в VXLAN/Geneve, затем шифрует межузловой поток WireGuard. Получается двойная инкапсуляция.
В native routing Cilium может шифровать WireGuard без VXLAN/Geneve: тогда налог один, а не два. WireGuard не всегда заменяет tunnel protocol — это отдельный переключатель.
Двойная инкапсуляция работает, но внешний MTU должен вместить оба слоя. Если underlay имеет MTU 1500, MTU нагрузки придётся уменьшить сильнее, чем при одном VXLAN. Цифры накладных расходов — в части 2.
Кто хранит ключи
При ручном WireGuard ключи создаются на узлах, а публичные части распространяются администратором.
В управляемом mesh контроллер хранит или распространяет публичную информацию, policy и сроки действия. Приватный ключ должен оставаться на endpoint.
Нужно проверить:
- как добавляется новый узел;
- можно ли быстро отозвать потерянное устройство;
- как ротируются ключи;
- что происходит при недоступном identity provider;
- может ли контроллер выдать peer лишней группе;
- применяются ли ACL локально с обеих сторон.
Шифрование и наблюдаемость
Внешний firewall видит адреса конечных точек туннеля, объём и время трафика, но не внутренние порты и назначения. Это хорошо для конфиденциальности и неудобно для старых средств анализа.
Наблюдаемость приходится переносить внутрь endpoints: flow logs, eBPF/Hubble, журналы policy engine и метрики туннеля.
Производительность
На современных CPU WireGuard обычно быстр, IPsec может использовать аппаратное AES-ускорение и offload. Но результат зависит от:
- размера пакетов;
- PPS;
- числа участников;
- ядра и драйвера;
- наличия GRO/GSO/TSO;
- NUMA и размещения очередей;
- двойной инкапсуляции.
Сравнивать только гигабиты в одном iperf3 недостаточно. Нужны ещё PPS, latency, CPU и поведение при нескольких потоках.
Где это ломается
- «Зелёный замок» в панели, а пакет открыт до VTEP или внутри хоста.
- MACsec принимают за защиту всей L2-сети, а не линка.
- Cilium tunnel + WireGuard включают без уменьшения MTU.
- Приватные ключи оказываются на контроллере или в общем хранилище конфигов.
- Шифрование путают с политикой доступа: зашифрованный запрещённый поток всё равно должен отбрасываться.
В следующей части соберём эти свойства в продуктовую матрицу и сравним self-hosted mesh-решения.
Предыдущая часть: «NAT, CGNAT и ограниченные сети: где заканчивается прямая связность»
Оглавление цикла: «SDN без магии: карта видов связности»
Следующая часть: «Self-hosted mesh: Headscale, NetBird, Netmaker, Nebula, ZeroTier и OpenZiti»
