Откуда Android знает, что он должен направлять разрешенное приложение vpn на tun0? - PullRequest
0 голосов
/ 02 марта 2019

Это внутренний вопрос для Android.

Я хотел бы иметь четкое представление о том, что происходит, когда туннель vpn устанавливается только с определенными приложениями, разрешенными через него методом "builder.addallowedapplication()".

Это похоже на то, как вы выбираете приложения для обработки через openvpn.

Как это говорит tun0, что это должно пройти через тебя?Какие правила он меняет или какие вызовы функций или API вызывает в процессе.

Пожалуйста, помогите мне здесь.

Спасибо

1 Ответ

0 голосов
/ 04 марта 2019

Это основано на политике маршрутизации.Ядро Linux может работать с несколькими таблицами маршрутизации и правилами, которые определяют, для какого трафика используется конкретная таблица маршрутизации.Вы можете увидеть эти правила с ip rule, если iproute2 доступно в вашей системе.Маршруты в конкретной таблице могут быть перечислены с ip route list table <nr/name> (используйте all в качестве имени, чтобы увидеть маршруты во всех таблицах).

Правила могут соответствовать различным свойствам, связанным с сетевым пакетом (или комбинациейих), например, IP-адреса, входящие / исходящие интерфейсы, метки Netfilter или UID процессов.Последнее, в частности, используется для исключения / включения конкретных приложений.Каждое приложение запускается уникальным пользователем со своим UID.Это позволяет контролировать, использует ли конкретное приложение таблицу маршрутизации, которая направляет трафик на устройство TUN.

Например, использование VPN исключительно для трех приложений добавляет правила с этими селекторами:

... uidrange 10010-10010 lookup 1049 
... uidrange 10062-10062 lookup 1049 
... uidrange 10094-10094 lookup 1049 

Таблица маршрутизации 1049 (это изменяется для каждого нового экземпляра VPN) содержит маршрут, который направляет трафик на устройство TUN.

С другой стороны, если те же три приложения исключены из VPN, селекторами являются:

... uidrange 0-10009 ...
... uidrange 10011-10061 ...
... uidrange 10063-10093 ...
... uidrange 10095-99999 ...

Как вы можете видеть, трафик со всех UID (в диапазоне 0-99999), за исключением трех ранее рассмотренных, направляется в таблицу маршрутизации для устройства TUN.

...