问题标签 [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 投票
0 回答
34 浏览

android - Android VpnService 不允许自己

我正在尝试实现我自己的VpnService,但是我想在 VPN 运行时在 VPN 之外使用 Google API。我该怎么做呢?

我试过了:

这应该不允许当前应用程序 ID 访问 VPN。我也测试过它并Socket在没有的情况下使用它protect,它可以工作(至少对于 LAN 测试 IP)。但是 Google API 会超时和出错。

我能否以某种方式使来自 VPN 应用程序本身的所有流量通过或以某种方式protect通过 Google API 客户端?谢谢。

0 投票
0 回答
30 浏览

android - VPN 服务:来自本机库的隧道接口 write() 不会将 pkt 转发到终端应用程序

我正在使用本机 (C/C++) 库编写应用程序,以创建隧道接口并在通过实际物理接口转发之前检查读/写 pkts。我通过 JNI 连接以创建和管理隧道,如以下文档中所述:https ://developer.android.com/reference/android/net/VpnService 。

当前情况: tun0 接口使用 IP 创建并设置了路由。本机库确实会在读取(tun_fd)时收到 pkt。问题是:write(tun_fd) 成功,但是最终应用程序(例如 ping)没有收到响应。隧道接口上的接口计数器确实显示“RX”递增并且没有下降!

我是否遇到任何基于策略的路由问题?感谢任何指针!如果这不是此问题的正确论坛,请重定向。谢谢!

-- 安卓版本:11

gta7litewifi:/ $ ifconfig tun0 Link encap:UNSPEC inet addr:10.10.20.3 PtP:10.10.20.3 Mask:255.255.255.255 inet6 addr: fe80::24cd:7b38:a0b1:90e7/64 Scope: Link UP POINTOPOINT RUNNING MTU:1500指标:1 RX 数据包:218 错误:0 丢弃:0 超限:0 帧:0 >>>> 无丢弃 将数据写入 tun_fd TX 数据包时 RX 增加:135 错误:0 丢弃:0 超限:0 载波:0 冲突:0 txqueuelen:500 RX 字节:29184 TX 字节:18936

gta7litewifi:/ $ ip route show table 1056 >>>> 1056 是为tun接口创建的表。默认 dev tun0 proto 静态范围链接 10.10.20.3 dev tun0 proto 静态范围链接

gta7litewifi:/ $ ip route get 8.8.8.8 >>> 确保路由指向 tun0 IF 用于传出流量 8.8.8.8 dev tun0 table 1056 src 10.10.20.3 uid 2000 缓存

gta7litewifi:/ $ ip route get 10.10.20.3 local 10.10.20.3 dev lo table local src 10.10.20.3 uid 2000 cache

0 投票
0 回答
33 浏览

java - 连接vpn成功,手机连接不上网络

您好,我在android上找到了一个连接vpn的示例代码,代码如下,我连接成功但手机无法访问网络?

是否有任何示例代码(或教程链接)可以在其中编辑 SNI 自定义项,例如这个HTTP Injector

VPNService.java

0 投票
1 回答
45 浏览

java - 当VPN连接时,用户将能够进入应用程序,如果他们没有连接,他们将无法进入。我怎么做?

我在许多应用程序中看到,当 VPN 连接时,您可以进入应用程序,如果您未连接,则无法进入。我如何使用 Java 编程来做到这一点?

0 投票
1 回答
43 浏览

android - 在本机代码中使用来自 Android VpnService.Builder 的文件描述符

我正在 Android 中制作一个 VPN 应用程序,以下似乎效果很好:

现在,我想用本机代码进行 VPN 处理。所以我试图用这样的东西替换线程:

JNI 代码如下所示:

这似乎也有效。

但是:如果我从 Java 中关闭文件描述符,例如:

然后在纯 Java 代码中,读取调用立即抛出一个看起来合理的 InterruptedIOException。

但在本机代码中,read 调用通常似乎需要很长时间才能报告错误——它只是一直阻塞。此外,如果我通过单击 Android UI 关闭 VPN 并要求 Android 忘记 VPN(这会触发对 VpnService.OnRevoke 的调用),那么本机读取调用似乎会永远阻塞。我怀疑 read 调用会阻塞,直到返回与错误不同的东西,然后再返回错误。这将解释这两个观察结果。

关于如何解决这个问题或发生了什么的任何想法?我真的不希望从 Java 代码中读取文件描述符。

0 投票
0 回答
35 浏览

android - 如何控制 Android 应用程序到蜂窝和 WiFi 设备(已知端口)的同时稳定流量(对于任何消费者:地图、身份验证、ffmpeg)?

问题: 默认情况下,Android 只有一个活动网络,因此当您通过 Wi-Fi(物联网、行车记录仪等,显然没有互联网)将您的其他设备连接到手机时,您的 Android Cellular 无法用于该应用程序。如果您切换到蜂窝网络(例如ConnectivityManager.bindProcessToNetwork),则 Wifi 不再可用于http://10.XX.XX.XX对设备的任何请求。

增加更多复杂性:从技术上讲,您可以 ping 第二个网络,但仅对Network.openConnection(...)WiFi 网络执行操作是不够的,因为我在低级别运行 FFMPEG,需要不断访问 WiFi 设备,无法控制它何时发生以及如何发生,这是一个低层次的过程。

我真正需要的是稳定地重新路由从 HTTP://10.XX.XX.XX 到 WIFI DEVICE 的所有流量。我问的很多吗?任务在纸上似乎微不足道,所以一旦到这个特定 IP 的所有流量都重新路由到 WiFi,我就可以将其他所有内容发送到蜂窝网络。

到目前为止我做了什么:

  • 默认将所有流量绑定到蜂窝网络
  • 创建了 VPNService 以捕获到 10.XX.XX.XX 端口的所有流量,VPNService.Builder().addAddress(...).establish()因此我开始ParcelFileDescriptor使用。我现在如何将所有这些捕获的流量发送到 WiFi 网络,并将整个流量返回给客户端?任何建议为此 IP 地址创建 TCP 套接字或Network.getSocketFactory().createSocket(...)用于将特定套接字绑定到 WiFi 的人的特别说明:我需要它稳定且有效。已弃用requestRouteToHost不再起作用,请不要建议那些旧的和过时的东西,我花了很多时间来测试它。我不需要关闭我的连接并一遍又一遍地打开它,我不需要连续工作 4 秒然后掉线,然后重新运行它。我正在寻找解决方案,即:
  • 稳定的
  • 在应用程序的整个会话中活着
  • 只需将数据从 VpnService 流到 Wifi 并将其发送回请求者
  • 或者,也许您知道另一种简单而现代的方式来使用最新的 Android SDK 并以简洁而优雅的方式执行它。非常感谢你们中的任何人花时间阅读那篇文章。
0 投票
0 回答
20 浏览

android - 在 AOSP 自定义 ROM 中预配置 VPN

如何为自定义 ROM 配置 VPN,例如在构建之前为 android 预配置 VPN,并且设备应该在刷新 ROM 后自动连接

0 投票
0 回答
15 浏览

android - 如何在android应用程序中使用更改IP?

我想Firebase Crashlytics在我的应用中使用,但 Firebase 已禁止我的国家/地区使用此服务。

仅当我更改 IP 或使用代理应用程序时才有效。

我想在我的应用程序中更改 IP。

我使用了以下代码,但它不起作用:

有没有办法更改应用程序中的 IP 或解决我的问题?

0 投票
0 回答
17 浏览

android - 除了 VPN Gate 和 freeVpn4You 之外,在哪里可以获得用于 VPN 应用程序的免费 VPN 服务器?

我正在构建一个免费的 VPN 应用程序,有人可以向我推荐任何好的网站或一种我可以自己为多个用户(1m+)创建 vpn 服务器的方式。

我已经尝试过 VPNgate 和 freeVpn4You

但是一种需要每天更改密码,而另一种则大多速度很慢或没有连接。