Как работает VPN в Android и списке API? (леденец)

Справка:

Android 4.0 имеет API для создания VPN-сервисов.

  1. VPNService (Android Docs)
  2. VPNService.Builder (Android Docs)
  3. Реализация OpenVPN для Android (github) для Arne Schawbe

Одним из таких приложений с VPN-сервисом является NetMotion Mobility® (Google Play)

Начиная с версии «Lollipop», Android поставляется с новым типом VPN, который предоставляет информацию о состоянии VPN-подключения, независимо от того, проходят ли запросы через VPN и т. Д.

Результаты теста

(Подключен к VPN)

  1. Android <= 5.0 (Android Lollipop)
    1. Соединение успешно выполняется с IP-интерфейсами WIFI (Wlan) и Cellular (rmnet).
    2. Соединение успешно выполняется с IP-адресом VPN (туннеля), но не связано с подключенными / отключенными событиями VPN.
  2. Android> 5.0 (Android Lollipop 5.1 и 6.0)
    1. Соединение не выполняется с использованием IP-интерфейсов WIFI (Wlan) и Cellular (rmnet).
    2. Соединение успешно выполняется с IP-адресом VPN (туннеля), а также с подключенными / отключенными событиями VPN.

Туннель IP: SITE local Private IP ().

  1. ConnectivityManager # TYPE_VPN
  2. NetworkCapabilites # TRANSPORT_VPN
  3. NetworkCapabilities # NET_CAPABILITY_NOT_VPN

Указывает, что эта сеть не является VPN. Эта возможность устанавливается по умолчанию и должна быть явно очищена для сетей VPN. Постоянное значение: 15 (0x0000000f)

Вопросов:

  1. Когда служба VPN активна на устройстве, как запросы работают от сторонних приложений, таких как WhatsApp, Skype или браузер?
  2. Когда VPN подключен, что именно происходит с IP-стеком устройства?
  3. Как работает туннелирование VPN в Android?
  4. Каков дизайн приложения, который связывается с активным IP-адресом и отправляет запросы?
  5. Являются ли API VPN в леденец (5.0) нестабильными?
  6. Если bindProcessToNetwork выполняется через сеть Celluar, и Wi-Fi подключен к устройству, какая сеть будет использовать VPN?

Попробуем ответить на несколько вопросов:

1 . VPN не влияет на другие потоки приложений – он просто «фактически» размещает ваше устройство в другой сети. Например, какая-то частная сеть компании. Это означает, что все запросы, отправляемые по VPN-соединению, будут отправляться в эту сеть, и все правила / фильтры, которые применяются в этой сети, применяются к трафику, генерируемому телефоном, что может вызвать проблемы сторонних приложений.

2 . Реальный IP-адрес, когда трафик проходит через VPN-соединение, заменяется IP-адресами VPN, назначенными VPN-сервером. Веб-серверы, с которыми вы подключаетесь, не будут видеть ваш реальный IP-адрес; Они будут видеть IP-шлюз VPN-сети, через который вы подключаетесь.

5 . С помощью Android 5.0 Lollipop клиенты VPN могут, наконец, предложить подробный контроль над тем, какие приложения обмениваются данными через защищенную сеть и какие приложения напрямую подключаются к Интернету. Возможно, это вызывает проблемы.

Для использования VPN API вы можете проверить этот проект: OpenVPN для Android