[О блоге] [наверх] [пред] [2020-11-09 15:33:18+03:00] [05f8202714d7fe00a274635e1ece13652ac4899b]
Темы: [ipsec]

Почему IPsec вместо WireGuard?

В 1d5bc1731a1e8f77fed6e7c60bbdeb9db421a87d написал что всё равно
использую IPsec по возможности. Если забыть про то, что IPsec тесно
интегрирован в ОС/ядро и позволяет делать далеко не только VPN туннели,
то всё равно остаётся вопрос эффективности.

IPsec ESP это отдельный тип IP-пакета, в котором (для AES-GCM) : SPI
(4B) + SEQ (4B) + IV (8B) + padLen (1B) + PAD (0-3B) + NextHdr (1B) = 18
+ 0-3 байта overhead. Причём от IV (вместо него использовать ESN) или
SEQ можно было бы для AEAD-ов где это всё счётчики и избавиться уж, но
стандарты гласят вот так.

WireGuard (из его whitepaper): type+reserved (4B) + counter (8B) + I_m
(4B) + UDP заголовок (8B) = 24 байта. В любом случае чуть больше ESP.
Но, при этом ещё и CRC надо считать в UDP заголовке! Хотя он и не нужен,
ибо и так данные аутентифицируются. Так что даже в теории он любом
случае чуть менее эффективен. На практике парсинг ESP возможно отъедает
и больше CPU из-за if-ов всяких, но это уже вопрос конкретной
реализации, которую можно и упростить/ускорить.

Ну а ChaCha20+Poly1305 для ESP уже есть: https://tools.ietf.org/html/rfc7634

И если мне нужно обеспечить защиту только между двумя IP-адресами, двумя
хостями, то в WireGuard-е пришлось бы шифровать IP-пакеты -- это же VPN,
а в IPsec использовать транспортный режим где внутри ESP будет лежать
сразу же TCP/UDP/SCTP/whatever. Но это конечно вопрос решаемых задач. Но
вот у меня по факту нигде нет туннельного режима IPsec, хотя есть пара
туннелей gif-туннелей между двумя хостами, а в остальном только
транспортные между хостами, чтобы не городить между ними никаких
костылей в виде TLS.

    [оставить комментарий]
    комментарий 0:
    From: David Rabkin
    Date: 2020-11-13 21:37:19Z
    
    Порог вхождения в IPsec высокий. Я ежедневно пользуюсь openvpn, и как
    пользователь, и как конфигуратор. Зачем мне что-то менять? Кинь
    ссылкой.
    
    комментарий 1:
    From: Sergey Matveev
    Date: 2020-11-13 21:52:17Z
    
    *** David Rabkin [2020-11-13 23:34]:
    >Порог вхождения в IPsec высокий.
    
    У него и круг задач куда более широкий. Это разные весовые категории.
    В данном посте я всё же имел в виду высоконагруженные системы, LAN-ы,
    связь между ДЦ, что-то долгоживущее. Пока IPv6 у людей нету массово, то
    значит есть NAT, значит с IPsec-ом будут проблемы и он не годится.
    
    Плюс не согласен что у OpenVPN порог вхождения небольшой. Его man в 1.5
    раза больше чем man strongswan.conf. И strongSwan при этом полностью
    рулит и SA и SP (в отличии от racoon какого-нибудь). Я бы поспорил кто
    проще. Одно но у OpenVPN: у него, грубо говоря, один клиент и один
    конфиг, который заработает наверное и на Windows и на Unix-like
    системах. С IPsec зоопарк большой, с совершенно разными конфигами и
    подходами настройки в них.
    
    Я сейчас однозначно всеми руками за WireGuard (для случаев когда не
    подходит IPsec). И простота и эффективность. OpenVPN с моей точки зрения
    это самое сложное и геморройное что есть, в плане администрирования, и
    самое плохое по производительности/ресурсоёмкости.
    
    >Зачем мне что-то менять?
    
    Так говорят и пользователи Windows и macOS :-). Мне на это нечего
    ответить. Но OpenVPN, на мой взгляд -- худшее решение. Я считаю что куда
    проще и эффективнее (там хотя бы быстрая криптография есть) поднять SSH
    TUN туннель (что иногда и делал), который в OpenSSH есть. Мне в своё
    время и Windows95/98 очень нравились и неохота их было менять.
    
    >Кинь ссылкой.
    
    https://m.habr.com/ru/post/518116/