⚙️ Теория
🧭 Туннелирование и VPN это не одно и то же
Туннель инкапсулирует один трафик в другой.
VPN обычно добавляет к туннелю криптографическую защиту (конфиденциальность, целостность, аутентификацию).
1) GRE (RFC 2784)
GRE это простой туннельный протокол:
- хорошо переносит различные L3-протоколы;
- не дает шифрования и аутентификации сам по себе.
Вывод: GRE удобно для инкапсуляции, но для защищенного канала его обычно комбинируют с IPsec.
2) IPsec (RFC 4301 + IKEv2 RFC 7296)
IPsec это набор протоколов сетевой защиты на L3:
ESPобеспечивает конфиденциальность/целостность (RFC 4303);- ключи и SA согласуются через
IKEv2(RFC 7296).
Основные режимы:
- tunnel mode (типично site-to-site);
- transport mode (реже для endpoint-to-endpoint).
Сильные стороны:
- зрелый стандарт;
- межвендорная совместимость;
- гибкая policy-модель.
Сложности:
- выше операционная сложность;
- больше параметров для согласования и troubleshooting.
3) WireGuard
WireGuard это современный VPN-протокол с минималистичной моделью:
- Noise-based handshake;
- фиксированный набор современных криптопримитивов;
- меньше конфигурационных вариантов, чем у IPsec.
Обычно это упрощает эксплуатацию и снижает класс ошибок "неправильная криптоконфигурация".
⚖️ Практический выбор
- нужен чистый туннель без крипты:
GRE; - нужна корпоративная межвендорная L3-защита и строгая policy:
IPsec; - нужен более простой и быстрый операционно VPN в Linux-экосистеме:
WireGuard.
❓ Что нужно уметь объяснить
Почему GRE нельзя считать "безопасным VPN"?
Потому что RFC 2784 не определяет встроенное шифрование/аутентификацию полезной нагрузки.
Почему IPsec часто считают сложным?
Из-за количества параметров (IKE proposals, lifetimes, PFS, selectors, NAT-T), которые должны совпасть на обеих сторонах.
Почему WireGuard часто проще в эксплуатации?
Меньше вариативности конфигурации и современный криптонабор по умолчанию уменьшают пространство ошибок.
🧪 Практика
1. GRE в Linux (инкапсуляция без шифрования)
sudo ip tunnel add gre1 mode gre local 203.0.113.10 remote 198.51.100.20 ttl 255
sudo ip addr add 10.10.10.1/30 dev gre1
sudo ip link set gre1 up
2. IPsec: базовый чеклист до запуска
- синхронизировать IKE/ESP proposals;
- согласовать traffic selectors;
- проверить NAT-T;
- задать ротацию ключей и lifetime SA;
- включить мониторинг rekey/failures.
3. WireGuard: минимальный запуск через wg-quick
sudo wg-quick up wg0
sudo wg show
Проверьте:
- handshake timestamp;
- transfer counters;
- корректность allowed-ips.
4. Операционные guardrails
- явно фиксировать MTU/MSS и тестировать path MTU;
- контролировать маршруты в обе стороны;
- не смешивать "доверяемый туннель" и "открытый доступ" без ACL.
🧾 Вывод
GRE, IPsec и WireGuard закрывают разные задачи.
Лучший выбор не "самый модный", а тот, который соответствует требованиям:
- к безопасности,
- к совместимости,
- к операционной сложности команды.
📚 Ссылки
- RFC 2784 — Generic Routing Encapsulation (GRE)
- RFC 4301 — Security Architecture for IP
- RFC 4303 — IP Encapsulating Security Payload (ESP)
- RFC 7296 — Internet Key Exchange Protocol Version 2 (IKEv2)
- WireGuard: Protocol & Cryptography
- Linux kernel docs: WireGuard