Как да конфигурирате VPN програмно на Android?

Трябва да внедря приложение за Android, което ще позволи на потребителя да конфигурира VPN връзка, без да се налага да има достъп до родното меню на устройството с Android. С това имам два проблема:

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

  2. В по-ранните версии на Android, от това, което открих досега, изглежда, че единственият начин за използване на VPN е достъп и конфигуриране на вграденото vpn решение на устройството чрез опаковане (с помощта на отражение) на някои скрити API в android, но това е тромаво решение, тъй като устройството трябва да бъде руутнато, също скритите реализации на API могат да се различават от устройство на устройство и от версия на операционната система до версия на операционната система. Има ли по-добър начин за програмно конфигуриране на вградената VPN на основната операционна система Linux?


person Paul    schedule 04.05.2012    source източник
comment
не, за съжаление не го направих   -  person Paul    schedule 14.10.2013
comment
намерихте ли решение с помощта на VPNService? аз също го правя, просто искам да задам само PPTP VPN настройки ...?   -  person Ahmad    schedule 20.09.2018
comment
така и не намери решение.   -  person Paul    schedule 10.12.2018


Отговори (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-тата, необходими за активиране на такива профили, или да са разширили техните възможности.

person Rajiv Makhijani    schedule 04.12.2012
comment
Успешно отварям скрития API и настройвам работеща VPN връзка с помощта на PPTP на стар Samsung Galaxy Ace, работещ с 2.3.6, и HTC Legend, работещ с 2.2. Не е чак толкова сложно, след като си хванете главата ;) - person slott; 24.06.2013
comment
Здравейте, не можах да намеря подходящо решение на този проблем... съжалявам - person Paul; 26.06.2013
comment
@slott: можеш ли да ми предложиш как направи това - person Samadhan Medge; 20.03.2014
comment
Просто следвайте това ръководство: devmaze. wordpress.com/2011/01/18/ - Направих прост шел скрипт въз основа на това. Ще го публикувам, ако го намеря отново. - person slott; 22.03.2014
comment
Ах - изглежда добавих скрипта към тази страница на стъпка 2 :) devmaze.wordpress.com/2011/01/18/ - person slott; 22.03.2014
comment
@Rajiv: можеш ли да обясниш как направи това? - person zaptech; 05.08.2015
comment
Някой орган намира ли някакво решение? - person Ahmad; 20.09.2018
comment
@slott Не мога да вляза в блога, все пак мога ли да отворя L2TP връзка програмно, използвайки вашия метод? - person Jad Chahine; 15.08.2019
comment
Не мога да си спомня подробностите, но сега всичко е без значение, тъй като сега има отворен API за работа с VPN. Вижте фантастичното отворено VPN приложение и неговия изходен код. - person slott; 17.08.2019