После почти четырёх лет с момента публикации ветки 2.3 выпущен релиз OpenVPN 2.4.0, пакета для создания виртуальных частных сетей, позволяющего организовать шифрованное соединение между двумя клиентскими машинами или обеспечить работу централизованного VPN-сервера для одновременной работы нескольких клиентов. Код OpenVPN распространяется под лицензией GPLv2, готовые бинарные пакеты подготовлены для Debian, Ubuntu, CentOS, RHEL и Windows.


OpenVPN

Из добавленных в новой версии улучшений можно отметить:

  • Добавлена возможность бесшовной смены IP-адреса и номера сетевого порта клиента без разрыва соединения VPN. В новой версии представлен новый протокол P_DATA_V2, в котором для идентификации клиента используется универсальный Peer-ID. При изменении IP-адреса/порта, но сохранении Peer-ID, серевер считает соединение мигрировавшим, проверяет HMAC и обновляет сетевые параметры клиента в своих внутренних структурах без повторного согласования соединения
  • Реализована возможность использования режима блочного шифрования AEAD GCM, при котором шифруется лишь важная часть данных (остаются открыты IP-адреса, номера протоколов и прочие метаданные), но всё сообщение, включая открытые метаданные, аутентифицировано. По сравнению с CBC пакеты в формате AEAD привносят небольшие накладные расходы - при схеме AES-128-GCM дополнительно добавляется 20 байт на пакет вместо 30 байт для AES-128-CBC + HMAC-SHA1
  • Добавлена поддержка протокола согласования ключей на основе эллиптических кривых ECDH (Elliptic Curve Diffie-Hellmann), позволяющего имея незащищённый канал связи получить двум сторонам общий секретный ключ для дальнейшего шифрования
  • Включен по умолчанию механизм согласования шифров ("--cipher"), используемых для защиты канала передачи данных. Если клиент объявит о поддержке согласуемых параметров шифрования (NCP, Negotiable Crypto Parameters), то сервер выберет оптимальный шифр (по умолчанию AES-256-GCM) и предложит его клиенту. Управлять доступными для согласования шифрами можно через опции "--ncp-ciphers" и "--ncp-disable". В случае если на клиенте или сервере используется старая версия OpenVPN, то возможно ограниченное согласование, при котором система с OpenVPN 2.4 может выбрать шифр, используемый на стороне с более ранее версией OpenVPN. Например, клиент 2.4 с "--cipher BF-CBC" и "ncp-ciphers AES-256-GCM:AES-256-CBC" может подсоединиться как к серверу 2.3 с выбранным шифром BF-CBC в файле конфигурации, так и с AES-256-CBC
  • Добавлена поддержка сжатия при помощи алгоритма LZ4 (ранее поддерживался только LZO) и возможность передачи параметров сжатия со стороны сервера
  • Добавлена опция "--tls-crypt" для увеличения защиты конфиденциальных данных о соединении пользователя. Опция позволяет использовать заранее предопределённые статические ключи для шифрования пакетов с управляющей информацией
  • Улучшена работа в окружениях, одновременно использующих IPv4 и IPv6. Например, при соединении с внешним хостом OpenVPN пытается соединиться перебирая все привязанные в DNS адреса IPv6 и IPv4. В настройки добавлена новая опция DNS6 для явного задания DNS-резолвера для IPv6. Настройки "proto udp" и "proto tcp" теперь охватывают как IPv4, так и IPv6. Для настройки только IPv4 добавлены новые опции "proto udp4" и "proto tcp4"
  • Добавлена опция pull-filter, позволяющая явно разрешить или запретить приём опций отправляемых сервером. Также добавлена опция push-remove для выборочного удаления опций из списка "push"
  • Добавлена опция "--auth-gen-token", при указании которой сервер сгенерирует случайный токен и предаст его клиенту без изменения модулей аутентификации. Режим полезен для реализации схем с одноразовыми паролями, позволяя организовать периодическое обновление ключей без необходимости ввода новых кодов OTP
  • Значительно расширен графический интерфейс, встроенный в установочный пакет для Windows. В том числе обеспечена возможность запуска OpenVPN GUI в Windows без наличия привилегий администратора. Полностью переписана прослойка для запуска сервиса OpenVPN в Windows. В установщике OpenVPN 2.4 прекращена поддержка Windows XP
  • Добавлена поддержка платформ Android (через VPNService API) и AIX (через устройство tap). Для macOS реализована возможность использования встроенного хранилища ключей;
  • Для работы со списками отзыва сертификатов (CRLs) вместо встроенной реализации задействованы возможности внешних библиотек (OpenSSL или mbed TLS)
  • Объявлен устаревшим режим "--key-method 1" и опция "--no-iv", их поддержка будет удалена в следующей ветке, как и поддержка ранее объявленных устаревшими опций "--compat-names" и "--no-name-remapping". Удалена опция "--tls-remote", объявленная устаревшей в прошлой ветке

Источник opennet.ru