Android – VPN на собственном слое

Просто быстрый вопрос, поскольку Google не сильно подбрасывает.

Возможно ли создать VPN-соединение с использованием собственного кода в Android?

И если это так, VPN предлагает поддержку для сохранения алива?

Я полагаю, что это будет скорее проблема с разрешениями, чем проблема с открытой или не открытой. В большинстве VPN-подключений вам потребуется изменить и получить доступ к сетевым фильтрационным вызовам вашего ядра. Поскольку ваше приложение действительно должно работать в собственной песочнице, это то, о чем я сомневаюсь, будет отображаться по умолчанию (по крайней мере, для приложений), так как вы по существу будете изменять способ, которым вся ОС маршрутизирует сетевой трафик. По той же причине, что для изменения iptables в ОС это необходимо, чтобы ваше приложение действительно могло изменить такие вещи. В этот момент я предполагаю, что соединение будет схоже с любым другим соединением vpn в любых других linux os (через демона ipsec или какого-либо прокси-дамона, который вы создаете), но вызывающему объекту потребуется фактический уровень доступа, необходимый для завершения Вызовите ядро.

Для создания VPN-соединения требуется корневое устройство. Нам нужен доступ к / data / misc / keystore и / data / misc / vpn / profiles в нашей программе.