如何在Android上使用VPN API?

3

我正在探索Android中的VPN连接。

  1. 我想知道如何使用应用程序在Android中设置VPN连接。

  2. 我发现了一些名为ToyVpn的示例代码。我运行了该应用程序,但不知道在该应用程序显示的表单中需要提供什么数据。假设我有一个带有IP地址(例如10.162.1.2)的VPN服务器,请问我需要在该应用程序中做些什么才能使此应用程序工作?

  3. 如果我尝试使用公共VPN服务器,我需要做些什么?

  4. 我从GIT/ics-openvpn下载了OpenVPN源代码,并将其编译并在我的ICS设备上运行,但我不知道需要输入哪些配置数据。

请问有人能够提供使用此应用程序的确切方法吗?


1
@user1204089 我在cpp文件的注释中有一个小疑问。我需要知道在编译ToyVpn.cpp文件后运行./a.out是否足够(根据此链接)。并且在cpp文件的注释中,它已经提到了**./ToyVpnServer tun0 8000 test -m 1400 -a 10.0.0.2 32 -d 8.8.8.8 -r 0.0.0.0 0,其中./ToyVpnServer应该替换为./a.out**。 - Sudarshan
谢谢,我的意思是检查你的VPN是否已连接...你应该仔细阅读文档...多个VPN是否可以同时存在?如果不能,则可以使用VPNService的onRevoke()函数(也许!),请阅读文档,如果没有API,则尝试访问系统内部以查看你所需的VPN是否已连接。 - blackfyre
我已经这样做了,但终端看起来仍然卡住了,toyVpn无法连接到电脑。我所做的是: root@mariam-PC:# echo 1 > /proc/sys/net/ipv4/ip_forward root@mariam-PC:# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADEroot@mariam-PC:# cat /proc/sys/net/ipv4/ip_forward1 root@mariam-PC:# ip tuntap add dev tun0 mode tun root@mariam-PC:# ifconfig tun0 10.0.0.1 dstaddr 10.0.0.2 up root@mariam-PC:# ./a.out tun0 8000 test -m 1400 -a 10.0.0.2 32 -d 8.8.8.8 -r 0.0.0.0 0 - blackfyre
谢天谢地!现在它可以工作了,我禁用了防火墙(ufw),然后再次输入了命令。非常感谢您的帮助! :) - blackfyre
这个问题似乎不适合讨论,因为它涉及到 Android 支持。 - Luc M
显示剩余37条评论
1个回答

5
我想知道如何使用应用程序在Android中设置VPN连接?
Android SDK附带了一个示例,可以在android-16样本目录中查看ToyVpn。还可以参考VpnServiceVpnService.Builder的文档。
我发现了一个名为ToyVpn的示例代码。我运行了该应用程序,但我不知道需要在该应用程序所显示的表单中提供什么数据。假设我有一个IP地址为10.162.1.2的VPN服务器,我需要在该应用程序中做什么才能使该应用程序工作?
您的VPN将需要创建一个新套接字,并使用VpnService.protect(Socket)保护套接字免受路由回到VPN的影响,并将套接字连接到10.162.1.2。建立与VPN服务器的隧道连接后,您应该继续将VpnService接口的输入流写入隧道的输出流,并将隧道响应再写回接口输出流。
如果我尝试使用任何公共VPN服务器,我需要做什么?
没有为连接到VPN服务器设置标准机制。 ToyVpn只是使用原始TCP数据包通过套接字进行通信。您可以实现现有协议(请参见RFC 4026)(例如OpenVPN已完成)或自己编写。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接