如何在Android系统上连接OpenVPN

原文:http://igfw.net/archives/8938

这篇文章主要讲如何在Android系统上连接OpenVPN。

一般原厂固件

  1. 首先要获取root权限,请自行搜索相应机型的解决方案。其次,如果没有BusyBox的话请用这个app安装:BusyBox(在原版电子市场里搜索并下载安装);
  2. 在原版电子市场里搜索并下载安装OpenVPN SettingOpenVPN Installer
  3. 打开OpenVPN Installer,选择安装OpenVPN。
  4. 在跳出的第一个窗口中,选择/system/bin ,将OpenVPN的二进制文件安装到/system/bin目录下。
  5. 在跳出的第二个窗口中,选择/system/xbin/bb将ifconfig和route这两个命令连接到/system/xbin/bb下。(可能无效,需要在后面人工修正)
  6. 以上步骤会跳出su授权,必须允许
  7. 安装完成后,打开OpenVPN Setting
  8. 点Menu,选Advanced,点击Path to OpenVPN binary,将目录改为/system/bin/openvpn,并返回
  9. 在SD卡根目录下创建openvpn文件夹,将你的VPN.opvn,ca.crt等配置文件全部复制到新建的openvpn文件夹。OpenVPN Setting完全兼容PC上的OpenVPN的配置文件,包括自动输入用户名和密码的选项。
  10. 点击你新加的配置文件连接,成功后按菜单键,选“Fix DNS”,将DNS服务器改成8.8.8.8。

如果因为RP问题出现以下错误:

  1. cannot allocate tun/tap dev dynamically
  2. linux ifconfig failed: could not execute external program

请继续阅读下文:

第一个错误是由于你的系统缺少tun.ko驱动,请google之,一般和Linux内核有关,同一系列硬件类似的机型有可能通用,比如moto的 defy和里程碑2就可以通用。下载完毕后,你需要将它粘贴到/system/lib/modules/目录下,该操作需要RE管理器来执行。然后通过 ADB或Android Terminal Emulator执行如下命令:

insmod /system/lib/modules/tun.ko
1
insmod /system/lib/modules/tun.ko

如果该命令报错,则说明tun.ko文件的版本和os不兼容,你需要找到符合你os的版本。
成功后,请参照如下步骤:

  • 打开openvpn settings,按菜单键选择advanced,勾选”Load tun kernel module”
  •  点击“Tun module settings”,再点击“Load module using”,选择“insmod”,点击“Path to tun module”,输入tun.ko路径“/system/lib/modules/tun.ko”

如果出现第二个错误

通过ADB或Android Terminal Emulator执行如下命令:(确认目录存在,不存在就新建,并给与权限)

ln -s /system/bin/ifconfig /system/xbin/bb/ifconfig
ln -s /system/bin/route /system/xbin/bb/route
1
2
ln -s /system/bin/ifconfig /system/xbin/bb/ifconfig
ln -s /system/bin/route /system/xbin/bb/route

这下应该差不多了,如果还有问题的话请寻求社区支持吧。

 

CyanogenMod固件

CyanogenMod固件是支持OpenVPN的,请参考:http://www.cyanogenmod.com/features/openvpn。所以你只需安装一个OpenVPN Setting,无需任何额外配置,装好后从一般原厂固件中的第七步开始配置就可以了。

 

补充

在Google Play商店里有这么一个程序:TUN.ko Installer 可以帮助你安装tun.ko驱动。

原文http://elvisw.com/2012/02/android-openvpn/

发表评论