Сравнение OpenVPN и IPsec.
Введение
Меня тут вовсю спрашивали насчёт сравнения OpenVPN и IPsec. Я не буду сравнивать уровни безопасности, потому что я в это всё равно ничего толком не понимаю. Я просто просуммирую то, что читал, слышал, видел. Где-то я, безусловно, могу ошибаться, но уверен, что я ошибаюсь существенно меньше, чем многие другие писатели статей в блогах. Ниже вы найдёте слегка изменённую короткую обзорную статью из внутренней документации нашей компании.
Сравнение OpenVPN и IPsec
Существуют два варианта организации VPN: IPsec и OpenVPN. (я не беру в расчёт всякие проприетарные штуки, для которых требуются специальные клиенты и которые стоят малых и немалых денег).
IPsec
IPsec обычно используется в трёх конфигурациях: туннель (нет возможности пробиться за NAT, поскольку шифруется весь пакет, а nat его корёжит), транспорт (шифруется содержимое пакета, может идти за NAT) и транспорт + PPTP (L2TP), где IPsec занимается шифрованием трафика, идущего в туннеле образованного другой программой.
По сути, как таковой технологии "IPsec" не существует, есть только набор RFC которые описывают отдельные её части, как-то установление соединение, обмен ключами, как и чем шифровать. Причём алгоритм шифрования у IPsec свой. И, судя по записям в сети, в нём достаточно часто находят какие-то уязвимости.
В общем и целом IPsec - сложная технология, чистый IPsec поддерживается малым количеством клиентов, поэтому его используют только как средство шифрования трафика, поверх которого работает L2TP туннель. Так что помимо конфигурации собственно IPsec требуется настраивать ещё и что-то, обслуживающее L2TP туннели.
В Linux существует два стека драйверов (NETKEY, встроенный в ядро, и KLIPS, который написали разработчики OpenSwan), и несколько userspace приложений которые позволяют использовать эти драйверы. KLIPS чуть более совершенная версия стека IPsec, но поддерживается только openswan.
Непосредственно чистый IPsec используют в основном для соединения и работы в зашифрованой локальной сети нескольких серверов. Причём конфигурация сети может быть очень сложной.
В основном IPsec/L2TP выбирают в случаях когда сложность настройки сервера значительно меньше, чем сложность настройки большого количества клиентов. Достаточно выдать данные для доступа и почти в любой операционной системе пользователь сможет настроить подключение штатными средствами.
OpenVPN
OpenVPN может тоже работать в двух режимах, но имеет решающее преимущество - намного более качественная работа за NAT. Причём, в отличие от IPsec, обе стороны могут находиться за фаерволами, лишь бы был открыт тем или иным образом udp/1194.
Как по мне, OpenVPN обладает более прозрачной, чистой и понятной конфигурацией. Клиенты есть для всех OS, кроме iOS, хотя и часто требуют административных прав для установки.
Да и с точки зрения шифрования OpenVPN более привлекателен. Обмен ключами происходит аналогично IPsec при помощи алгоритма Диффи-Хелмана, а дальше весь трафик шифруется при помощи SSL, который и в браузере есть и где угодно.
Суммирую:
IPsec
Плюсы:
- Построение топологии сетей отличной от звезды
- Большое количество встроенных клиентов во всех OS, простота конфигурации клиентов.
- OpenSwan + KLIPS в теории позволяют создавать наиболее производительные VPN сети, поскольку позволяет подключать аппаратные шифрующие устройства.
Минусы:
- Плохая работа с NAT на одной стороне, если NAT на обеих сторонах - сразу нет.
- Очень, нет ОЧЕНЬ сложная конфигурация сервера. Причём что в OpenSwan, который в книге про него назвали простым, что в racoon. Хотя racoon на мой взгляд и проще, в простых конфигурациях, и позволяет настраивать тонкие параметры системы (хотя в большинстве случаев это просто не нужно).
- Роутеры могут в принципе не пропускать IPsec, даже если у них написано что они его поддерживают, потому что у каждого стека реализации IPsec есть свой Vendor ID и свой же список чужих Vendor ID с описанием того как с ним работать. И если какой-то узел не знает как работать - работать ничего не будет.
- Достаточно долго подключается. В целом на подключение нужно где-то 1-2 секунды. Можно ускорить за счёт снижения безопасности.
OpenVPN
Плюсы:
- Хорошая работа с NAT, в том числе и в конфигурациях, когда обе точки расположены за NAT.
- В любой системе пакеты OpenVPN будут одинаковыми
- Очень простая настройка сервера в простых конфигурациях, и не слишком сложная - в сложных.
- Очень быстрое подключение
- Достаточно высокая производительность (потому что udp, хотя можно и tcp)
- Простой и понятный (по сравнению с IPsec) алгоритм шифрования SSL/TLS (по крайней мере знаешь чего от него ждать)
Минусы:
- В большинстве систем необходимы административные права, чтобы установить клиент. Конфигурация клиентов тоже не очень проста, но один раз настроив всё буде работать идеально.
- Топология только звезда.
Если у вас остались вопросы, напишите мне письмо.