Подтвердить что ты не робот

Как настроить VPN программно на Android?

Мне нужно реализовать приложение Android, которое позволило бы пользователю настраивать VPN-подключение без необходимости доступа к собственному меню устройства Android. С этим у меня две проблемы:

  1. В Android 4.0 + (уровень API 14 и выше) я обнаружил, что есть новый компонент, называемый VpnService, который обеспечивает ловушку для создания виртуального сетевого интерфейса, его настройки и перехвата/пересылки пакетов из него на VPN-сервер, но нет встроенные протоколы vpn, такие как PPTP или IPSec, есть только возможность их реализации. Мой вопрос: есть ли готовое решение для PPTP и IPSec для работы с VpnService?

  2. В более ранних версиях Android, из того, что я нашел до сих пор, кажется, что единственный способ использовать VPN состоит в том, чтобы получить доступ и настроить встроенное решение vpn устройства, обернув (используя отражение) некоторые скрытые apis в Android, но это громоздкое решение, поскольку устройство должно быть рутировано, также скрытые реализации API могут отличаться от устройства к устройству и от версии ОС к версии ОС. Есть ли лучший способ программно настроить встроенный VPN базовой ОС Linux?

4b9b3361

Ответ 1

1) Я не знаю ни одной реализации PPTP или IPSec с открытым исходным кодом для Android 4.x ICS VpnService. VpnService предназначен для создания пользовательских VPN-приложений по протоколу (которые теоретически могут быть pptp или IPSec). Я обнаружил, что единственная реализация с открытым исходным кодом, использующая этот новый API, - одна для OpenVPN:

https://github.com/schwabe/ics-openvpn

Это обеспечивает одно потенциальное VPN-решение, которое вы полностью контролируете (сервер также с открытым исходным кодом), но это не PPTP или IPSec. Если вы понимаете протокол PPTP, должно быть возможно использовать это как модель для реализации такого VPN-клиента.

2) Да, это правда, что в более ранних версиях единственный путь - через частные API. Фактически, даже если вы хотите сделать это в более поздних версиях, используя встроенную поддержку VPN (то есть встроенную поддержку PPTP или IPSec), вы должны использовать эти скрытые API. Возможно, это возможно сделать на более низком уровне, используя базовое ядро Linux, но это потребует рутирования ОС и обхода парадигмы приложений Android. Это не обязательно лучшая альтернатива использованию частных API.

Для получения дополнительной информации о том, как настроить VPN с использованием этих API:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/net/vpn/PptpProfile.java (пример объекта профиля PPTP, нужно было пройти в API)

Как программно создать новый интерфейс VPN с Android 4.0? (Объясняет, как сохранить этот новый профиль VPN в системе)

Я не уверен, насколько последовательными и надежными будут эти API. Я ожидаю, что они будут работать на большинстве устройств Android, поскольку производители вряд ли будут повторно реализовывать базовые реализации VPN, хотя они, возможно, добавили свои собственные. Они также могли изменить API, необходимые для включения таких профилей, или расширить свои возможности.