Как стать автором
Обновить

Комментарии 11

но чем не устроили «обычные» впн? pptp там, openvpn, ipsec вот эти все
Что значит не устроили «обычные» vpn, можно поподробнее? В статье мы рассказываем про перехват трафика и про то, чего стоит ожидать используя VpnService API. Тот же OpenVPN для android (net.openvpn.openvpn) тоже использует этот api.
ну, емнип, андроид сам может во всякие там pptp, через которые и начинает гонять трафик, ещё с 2 версии вроде
Если вопрос относится к любым приложениям VPN-клиентам, то ограничения и постоянные проблемы со стандартным функционалом андроида (Беспроводные сети -> VPN) известны давно и про них много написано (неработающее шифрование в PPtP, проблемы с установкой ключа в L2TP/IPsec, пример 1, пример 2 и еще 100500 проблем, гугл в помощь). Поэтому и сделали VpnService API, что бы можно было делать любые свои ЧТО-УГОДНО-клиенты с блекджеком и остальными.

Если вопрос относится к WebGuard, то нам нужно было перехватывать трафик от всех приложений, при этом не использовать какой либо внешний сервер.
Работаю в VPN компании. В 90% случаев никаких проблем с использованием штатного впн клиента на андроиде нет. Проблемы возникают в основном только с кастомными прошивками на китайские телефоны.
Тут как про суслика: «видишь суслика? — нет! — и я не вижу. а он есть.» Можно с проблемами и не столкнуться.

Вот к примеру, если вбить в поиск багтрекера по открытым багам pptp vpn видны замечательные багрепорты «Android 4.4.3 drops VPN Connection L2tp/IPSec PSK», «PPTP-VPN leaves IPv6 traffic insecure» про те же Nexus'ы.

Если взять уже закрытые баги (например по ссылкам в ответе выше), то видно что в сообщениях есть Nexus, Transformer Prime, Motorola Xoom и другие популярные устройства с официальными прошивками. Конечно баги исправляют, но исправление может занимать по времени от полгода и выше, вот тут иногда сторонние клиенты и спасают.
Эти ребята сделали VPN без, собственно, VPN. Используется API для построения VPN-клиента, но и фейковый VPN-сервер «запущен» тоже этим же клиентом. Никакого стороннего сервера нет.
И, если честно, в Android просто отвратительная поддержка изкоробочных VPN. IPSec забагованый, поддержки IKEv2 нет.
Если делать приложение только для рутованных устройств, это сильно облегчает задачу (помимо использования сырых сокетов)?
Да, конечно.
Если именно VPN, то нужно только все правильно самим реализовать (тоже не простая задача), в основном настройку TUN и маршрутов т.к. половина проблем с VpnService из-за неправильной настройки маршрутизации. И это не снимает проблемы с наличием поддержки TUN (иногда есть tun.ko но не загружается по умолчанию, иногда его нет), но тут можно таскать модули для разных ядер с собой. Есть даже приложение TUN.KO Installer на xda-developers, заявляют о более 6100 различных вариантов поддерживаемых устройств.
Если нужно фильтровать трафик, то используется iptables (в маркете полно таких приложений для рутованых устройств).
Безусловно, с root все становится значительно проще. Можно хоть tap использовать и полноценно l2-трафик гонять
Зарегистрируйтесь на Хабре, чтобы оставить комментарий