Официальный порт Android популярного решения strongSwan VPN.
# ВОЗМОЖНОСТИ И ОГРАНИЧЕНИЯ #
* Использует API VpnService, представленный в Android 4+. Устройства некоторых производителей, похоже, не поддерживают эту функцию — StrongSwan VPN Client не будет работать на этих устройствах!
* Использует протокол обмена ключами IKEv2 (IKEv1 *не* поддерживается)
* Использует IPsec для трафика данных (L2TP *не* поддерживается)
* Полная поддержка измененного подключения и мобильности через MOBIKE (или повторную аутентификацию)
* Поддерживает аутентификацию EAP по имени пользователя/паролю (а именно EAP-MSCHAPv2, EAP-MD5 и EAP-GTC), а также аутентификацию с закрытым ключом/сертификатом RSA/ECDSA для аутентификации пользователей, также поддерживается EAP-TLS с клиентскими сертификатами
* Комбинированная аутентификация RSA/ECDSA и EAP поддерживается за счет использования двух раундов аутентификации, как определено в RFC 4739.
* Сертификаты VPN-сервера сверяются с сертификатами ЦС, предварительно установленными или установленными пользователем в системе. Сертификаты ЦС или сервера, используемые для аутентификации сервера, также можно импортировать непосредственно в приложение.
* Фрагментация IKEv2 поддерживается, если ее поддерживает VPN-сервер (strongSwan делает это, начиная с версии 5.2.1)
* Раздельное туннелирование позволяет пропускать через VPN только определенный трафик и/или исключать из него определенный трафик
* VPN для каждого приложения позволяет ограничить VPN-подключение определенными приложениями или запретить им его использовать.
* В настоящее время реализация IPsec поддерживает алгоритмы AES-CBC, AES-GCM, ChaCha20/Poly1305 и SHA1/SHA2.
* Пароли в настоящее время хранятся в базе данных в виде открытого текста (только если они хранятся вместе с профилем)
* Профили VPN могут быть импортированы из файлов
Подробности и журнал изменений можно найти в нашей документации: https://docs.strongswan.org/docs/5.9/os/androidVpnClient.html.
# РАЗРЕШЕНИЯ #
* READ_EXTERNAL_STORAGE: позволяет импортировать профили VPN и сертификаты ЦС из внешнего хранилища на некоторых версиях Android.
* QUERY_ALL_PACKAGES: требуется на Android 11+ для выбора приложений, которые нужно исключать или включать в профили VPN, а также дополнительный вариант использования EAP-TNC.
# ПРИМЕР КОНФИГУРАЦИИ СЕРВЕРА #
Примеры конфигураций сервера можно найти в нашей документации: https://docs.strongswan.org/docs/5.9/os/androidVpnClient.html#_server_configuration.
Обратите внимание, что имя хоста (или IP-адрес), настроенное для профиля VPN в приложении, *должно* содержаться в сертификате сервера как расширение subjectAltName.
# ОБРАТНАЯ СВЯЗЬ #
Пожалуйста, публикуйте отчеты об ошибках и запросы функций через GitHub: https://github.com/strongswan/strongswan/issues/new/choose.
Если вы это сделаете, укажите информацию о вашем устройстве (производитель, модель, версия ОС и т. д.).
Файл журнала, написанный службой обмена ключами, можно отправить непосредственно из приложения.
# ВОЗМОЖНОСТИ И ОГРАНИЧЕНИЯ #
* Использует API VpnService, представленный в Android 4+. Устройства некоторых производителей, похоже, не поддерживают эту функцию — StrongSwan VPN Client не будет работать на этих устройствах!
* Использует протокол обмена ключами IKEv2 (IKEv1 *не* поддерживается)
* Использует IPsec для трафика данных (L2TP *не* поддерживается)
* Полная поддержка измененного подключения и мобильности через MOBIKE (или повторную аутентификацию)
* Поддерживает аутентификацию EAP по имени пользователя/паролю (а именно EAP-MSCHAPv2, EAP-MD5 и EAP-GTC), а также аутентификацию с закрытым ключом/сертификатом RSA/ECDSA для аутентификации пользователей, также поддерживается EAP-TLS с клиентскими сертификатами
* Комбинированная аутентификация RSA/ECDSA и EAP поддерживается за счет использования двух раундов аутентификации, как определено в RFC 4739.
* Сертификаты VPN-сервера сверяются с сертификатами ЦС, предварительно установленными или установленными пользователем в системе. Сертификаты ЦС или сервера, используемые для аутентификации сервера, также можно импортировать непосредственно в приложение.
* Фрагментация IKEv2 поддерживается, если ее поддерживает VPN-сервер (strongSwan делает это, начиная с версии 5.2.1)
* Раздельное туннелирование позволяет пропускать через VPN только определенный трафик и/или исключать из него определенный трафик
* VPN для каждого приложения позволяет ограничить VPN-подключение определенными приложениями или запретить им его использовать.
* В настоящее время реализация IPsec поддерживает алгоритмы AES-CBC, AES-GCM, ChaCha20/Poly1305 и SHA1/SHA2.
* Пароли в настоящее время хранятся в базе данных в виде открытого текста (только если они хранятся вместе с профилем)
* Профили VPN могут быть импортированы из файлов
Подробности и журнал изменений можно найти в нашей документации: https://docs.strongswan.org/docs/5.9/os/androidVpnClient.html.
# РАЗРЕШЕНИЯ #
* READ_EXTERNAL_STORAGE: позволяет импортировать профили VPN и сертификаты ЦС из внешнего хранилища на некоторых версиях Android.
* QUERY_ALL_PACKAGES: требуется на Android 11+ для выбора приложений, которые нужно исключать или включать в профили VPN, а также дополнительный вариант использования EAP-TNC.
# ПРИМЕР КОНФИГУРАЦИИ СЕРВЕРА #
Примеры конфигураций сервера можно найти в нашей документации: https://docs.strongswan.org/docs/5.9/os/androidVpnClient.html#_server_configuration.
Обратите внимание, что имя хоста (или IP-адрес), настроенное для профиля VPN в приложении, *должно* содержаться в сертификате сервера как расширение subjectAltName.
# ОБРАТНАЯ СВЯЗЬ #
Пожалуйста, публикуйте отчеты об ошибках и запросы функций через GitHub: https://github.com/strongswan/strongswan/issues/new/choose.
Если вы это сделаете, укажите информацию о вашем устройстве (производитель, модель, версия ОС и т. д.).
Файл журнала, написанный службой обмена ключами, можно отправить непосредственно из приложения.