Mik*_*ike 3 vpn android openvpn android-vpn-service
这是一个内部 Android 问题。
我想清楚地了解当使用“ builder.addallowedapplication()”方法仅允许特定应用程序通过它建立 vpn 隧道时会发生什么。
这类似于您选择要处理的应用程序的方式openvpn。
它怎么说tun0这些应该通过你?它改变了什么样的规则,或者它在过程中进行了什么样的函数调用或api调用。
请在这里帮助我。
谢谢
小智 6
这是基于策略路由。Linux 内核可以使用多个路由表和规则来定义特定路由表用于哪些流量。您可以使用ip ruleif iproute2is available 在您的系统上查看这些规则。可以列出特定表中的路由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
Run Code Online (Sandbox Code Playgroud)
路由表 1049(每个新 VPN 实例都会改变)包含将流量定向到 TUN 设备的路由。
另一方面,如果从 VPN 中排除了相同的三个应用程序,则选择器是:
... uidrange 0-10009 ...
... uidrange 10011-10061 ...
... uidrange 10063-10093 ...
... uidrange 10095-99999 ...
Run Code Online (Sandbox Code Playgroud)
如您所见,来自所有 UID(在 0-99999 范围内)的流量(除了之前看到的三个)都被定向到 TUN 设备的路由表。
| 归档时间: |
|
| 查看次数: |
1012 次 |
| 最近记录: |