问题标签 [android-vpn-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
48 浏览

android - 在 Android 应用冷启动时,阻止网络请求,直到 VPN 启动

在我们的应用程序中,我们有许多不同的模块可以自己发出网络请求。应用程序可以选择使用 VPN 进行安全连接。VPN 服务仅为我们的应用程序处理网络。我的问题是:在应用程序冷启动时,启用 VPN 功能时,如何防止模块在 VPN 服务启动之前发出网络请求。

0 投票
0 回答
1430 浏览

java - 如何在我的 Android 应用程序中建立 VPN 连接(Cisco IPSec Xauth PSK),而不是通过 Android 的内置 VPN 工具激活它?

我正在开发一个应用程序,我必须通过 VPN 连接到远程服务器。目前我正在使用 Android 的内置工具进行 VPN 配置和连接(设置>更多>VPN>...),在使用该应用程序期间我必须多次激活和停用该工具(通过此连接时服务器会阻止其他互联网连接VPN,所以我只想偶尔建立一次)。

这是该 VPN 连接所需的配置: 名称:任意 类型:IPSec Xauth PSK 服务器地址:已知 IPSec 标识符:已知 IPSec 预共享密钥:已知 用户名:已知 密码:已知

如果我理解正确,我可以运行后台服务来建立连接,然后从前台/UI 活动中激活/停用,或者如果该活动/类在必要时建立 VPN 连接,则可以只使用内置方法。

我也知道有 VpnService 类,但我认为它比我需要的要复杂得多。我已经看到有关使用 OpenVPN 源代码的建议,但我迷失了在哪里获取它。以此为例: Android:使用 VPNService API 在 Android 4.0 中连接到 VPN 的示例代码

有可能有这个内置的VPN吗?有人可以给我一个关于如何编码的提示吗?提前致谢

编辑:我在这里也发现不可能配置 L2TP/IPSec,它是否也适用于 IPSec Xauth PSK? 在 Android 中以编程方式基于 VpnService 创建 L2TP/IPSec VPN

0 投票
0 回答
611 浏览

android - 如何从反应本机应用程序通过vpn隧道整个设备?

我一直在研究一种方法来创建 VPN 连接以使用本机反应来隧道整个设备,但不幸的是没有任何方法可以做到这一点。VPNService在 android 和iOS 中有 Native Services 可以实现这一点,NetworkExtension但我一直无法在 React Native 中找到实现这一点的方法或库。有没有办法在本机反应中实现这一点,或者可能是一种公开设备的 VPN 设置以手动设置配置的方法?

0 投票
0 回答
93 浏览

android - 如何确定 Android 10 设备加入的多播组?

在 Android 9 及更低版本中,我们阅读/proc/net/igmp以确定我们的 VPN 应用程序中的这一点。然而,可以理解的是,Android 10 将数据锁定在/proc/net. (见这里

是否有“官方”方式来获取设备加入的多播组?或者甚至是通过反射等任何骇人听闻的非官方方式?

0 投票
1 回答
266 浏览

android - 带有 Pac URI 的 VPN 服务 setHttpProxy

根据 Android 文档,API 级别 29 中添加了VpnService.Builder.setHttpProxy方法。这很好。但是 setHttpProxy 方法需要ProxyInfo类的对象,在 API 级别 22 中已弃用。

现在我需要使用 ProxyInfo 类的buildPacProxy方法,这对我不起作用。

任何人都可以帮我通过其他方式为 VPN 服务设置 PAC URI 吗?我的最终目标是将 PAC Uri 应用于设备,它将监控所有设备流量。我正在考虑使用 VPN 来应用 PAC Uri,但创建了一个假 VPN,它不连接到任何服务器。

任何帮助,将不胜感激。

0 投票
0 回答
1341 浏览

java - Java 中的数据包编码和 C 中的数据包解码失败

嗨,我有 2 个函数可以在 Base64 中对数据包进行编码。但是客户端无法与服务器连接。可能是编码和解码有问题。这两个程序可能无法结合使用。这是用于从 Android Java 代码进行 Base64 编码后发送 TCP 数据包并在 C 中接收和解码。

我们正在使用 ToyVPN Android 客户端和 ToyVPNServer。链接在这里- https://github.com/LipiLee/ToyVpnhttps://github.com/LipiLee/ToyVpnServer 这是用于编码的 Java 代码-

这是用于解码的 C 代码,它使用与 Java 编码字母相同的解码字母。

0 投票
0 回答
74 浏览

android - 适用于 Android 的 OpenConnect VpnService

据我所知,android 内部没有支持 PPTP 或 L2TP 连接的 API,所以我改用 openconnect (ocserv)。

是否有任何 VpnService 或 API 可以使用 Android 连接到 ocserv?

我尝试了示例应用程序(ics-openconnect),但源代码已被弃用且集成起来很复杂。

请不要建议使用 OpenVPN 切换 ;))

0 投票
1 回答
142 浏览

java - Java NIO FileChannel - 从 Android TUN 网络接口读取空

背景:我最近开始java.nio在我的项目中使用 Android 的VpnService. 在我的实现中,我将由 the方法FileDescriptor返回的内容包装到 a中,如下所示。establish()VpnServicejava.nio.FileChannel

之后,我有一个 kotlin 协程,它FileChannel无限期地读取并处理出站 IPv4 / IPv6 数据包。

问题:下面提到的代码片段有效,但我看到很多空读取发生在FileChannel其中,这反过来又while不必要地旋转了循环。

我在寻找什么:事实上,我知道这FileChannel是一个阻塞通道,在这种情况下,由于通道由网络接口​​支持,它可能没有准备好读取的数据包。有/没有更好的方法可以FileChannel在不浪费宝贵的 CPU 周期的情况下实现更有效的实现吗?我也对新想法持开放态度:)

0 投票
0 回答
188 浏览

java - Android 上的 BufferedInputStream - 无效参数错误

我目前正在开发一个使用 Android 的VpnService. 在性能测试期间,我发现FileInputStream我在FileDescriptor返回的establish()方法上创建的读取速度很慢。我的工作代码片段如下所示。

为了优化代码,我进行了如下封装FileInputStreamBufferedInputStream保持其他所有内容相同。

但是现在我的读取方法已经停止工作,这是我得到的错误。

.txt只是为了确保我没有做任何不正确的事情,我尝试了使用文件和 a完全相同的读取方法,BufferedInputStream它就像一个魅力。在进一步检查FileInputStream实现后,我在方法附近看到了一些注释available(),如下所示。在我看来,Android 使用的版本似乎比标准 JDK 稍有修改。

注意:我拥有的用例在 Android 世界中是一个BufferedInputStream过大的用例。这里,是一个虚拟网络接口。FileInputStreamFileDescriptorFileDescriptor/dev/tun0

问题:

  1. 我的理解是否存在差距,根本不可能将 a 包裹BufferedInputStream在 a上?FileDescriptor我还没有在 JVM 上尝试过同样的方法。
  2. 或者这是 Android 特有的细微差别?在这种情况下,如何克服这个问题并确保缓冲读取。

任何帮助深表感谢!

0 投票
0 回答
451 浏览

android - 在 MainActivity.kt (Kotlin) 中连接到 VPN

有没有一种简单的方法可以使用 Android Studio (Kotlin) 中的 VpnService 连接到 VPN?我已经阅读了developer.android.com文档,但是作为一个新的 Kotlin 开发人员,我很困惑。我知道有一个示例 VPN 应用程序 (ToyVPN),但实现分布在多个文件中。

我正在寻找一种从 MainActivity.kt 轻松连接到 VPN的简单方法。

更新:解决方案可以通过多个外部文件展开。只要我能从 MainActivity.kt 中调用它就可以了。

这是我想要实现的示例: