在HTC G3 Hero上配置OpenVPN

此文系早年博客的备份,仅用于参考学习。
This article is an archival copy of my early years’ blog posts.

前阵子从小毛球手里买到了一个HTC G3 Hero的工程样机,此机器与零售版的Hero略有不同,它没有轨迹球,ROM和RAM的容量也比零售版要小,并且只支持Android1.5版的ROM,俗称“5键版”(还有一种工程机为3键版)。

好了,回归正题。我的设备,只要是能联网的,都免不了要为其添加翻墙的功能。起初在网上看到很多朋友是下载了各种必须的文件之后,通过命令行一步步 手动执行的,可是我执行了多次都没能奏效,可能是手机系统的个体差异,再加上我对Android命令行操作也不太了解,所以最总没有成功。后来搜到一个可 以直接通过软件安装的方法,再借助xda-developers论坛和android-openvpn-installer项目里外国大牛们的指点,最后成功解决,下面是详细的步骤:

  • 我的ROM版本是:3.2-update-hero-modacocustomrom-core-signed.zip (1.5固件)
  • Recovery 版本是: Recovery-RA-hero-v1.6.2-blue

1 – 你需要有一个Google账户,用来登录Android Market。

2 – 在Market里面搜索OpenVPN,找到OpenVPN InstallerOpenVPN Settings,安装之(最好是用WiFi来装,快,省流量)。

3 – 安装完毕后,运行OpenVPN Installer,在第一个画面选择Install ,路径选择/system/bin/,下一个弹出界面,路径选择/system/xbin/bb

4 – 将手机用USB连接电脑(G3 Hero用USB连接如果出现问题,通常插上USB线再重启即可,若还有其它问题,请自行Google解决),打开提示栏,选择“装载”。

5 – 在SD卡根目录创建openvpn文件夹,拷入OpenVPN的四个必须的文件(通常收费的VPN会有两个.crt,一个.key,一个.ovpn)。

6 – 若你的电脑上还没有Android SDK,下载下面的压缩包,将adb.exeAdbWinApi.dll放入c:\Windows\system32\下,然后用Win+R组合键打开运行cmd打开命令行,便可执行下述命令。

7 – 下述命令比较重要,与网上多数版本命令略有不同,请根据自己的情况仔细输入:

确保手机连接正常,并且最好不处于“装载”状态,输入(注意空格)

adb remount
adb shell mkdir /system/xbin/bb
adb shell ln -s /system/xbin/ifconfig /system/xbin/bb/ifconfig
adb shell ln -s /system/xbin/route /system/xbin/bb/route

8 – 然后,运行 adb shell 命令,在 # 提示符下,输入cd /sdcard/openvpn/进入SD卡中存有OpenVPN文件的目录,再执行openvpn –config xxxx.ovpn以测试连接是否成功。此过程必须保证你的手机联网正常(我测试过WiFi,GPRS和3G我没测试,但应该好用),其中xxxx为你的.ovpn文件名。

如果最终出现Initialization Sequence Completed则表明连接成功,以后的操作即可直接在OpenVPN Settings中连接了。

9 – 如果出现错误Linux ifconfig failed: could not execute external program,在其他步骤都执行正确的情况下,通常是ifconfig和route的路径问题,请参照第7步自行修改。当然,ifconfig的路径可以通过命令which来查看,我的路径如下:

D:\android>adb shell
# which ifconfig
which ifconfig
/system/xbin/ifconfig
#

所以第7步所对应的路径便如上所示。我不知道是不是在所有的Android手机中路径都如此,大家在使用的时候根据自己的情况更改第7步中后两个命令的第一个路径即可,第二个路径/system/xbin/bb/ifconfig/system/xbin/bb/route)应该都是相同的,因为OpenVPN Installer就是这么安装的。

10 – 最后,再说说OpenVPN Settings。如果初次运行OpenVPN Settings时在主界面看不到你的.ovpn文件名,一般重启后即可解决。另外,如果有连接不上的问题,可能属于DNS污染,需要做如下操作:
MENU键 –  Fix DNS  –  Reset DNS,等一会儿,如果弹出需要root权限则点击Allow,完成后它会自动将DNS设置为8.8.8.8,再次打开Fix DNS即可看见Current DNS已经被修改。最后,相继勾选OpenVPN和你的.ovpn文件名,等待一会儿之后应该就会提示链接成功了,在你的.ovpn下面显示connected to xx.xx.xx.xx as xx.xx.xx.xx
 
补充:要想成功配置OpenVPN,还跟一个名叫tun.ko的底层驱动有关,我之前刷的一个ROM需要手动安装驱动,而这个驱动似乎又有版本之 分,或者跟ROM的版本相关,我弄不太明白,也没弄成功。另外还需要安装busybox,我起初也弄得不明不白,当然,还有手机取得ROOT权限等等琐碎的问题。所以我推荐大家如果希望避免后期的麻烦,在前期刷ROM的阶段,不妨参照下ROM发布者提供的reference,找一个已经安装好tun.kobusybox的ROM,并且参照论坛里的刷机和ROOT教程,将自己的手机配置好,这样能给后期的操作省很多力气。

注:由于我自己的工程机只能支持1.5的ROM版本,其它版本我也无从测试,所以使用其他版本的系统的朋友请自行“随机应变”。若在操作过程中遇到什么问题,或者我有哪一步写的有问题,欢迎留言讨论。以下是操作过程中可能用到的文件打包:
工具包:HTC-Hero-Package
ROM:  Modaco 3.2

 
参考资料:
中文:
http://14551.org/2010/05/g3-connect-to-openvpn.html
http://www.hiapk.com/bbs/thread-214667-1-1.html
http://bbs.gfan.com/android-39617-1-1.html
http://www.xinlogs.com/HTC-Hero-Openvpn/
英文:
http://code.google.com/p/android-openvpn-installer/issues/detail?id=2
http://forum.xda-developers.com/showpost.php?p=7132889&postcount=56
 
关键字:Android手机配置OpenVPN,HTC手机安装OpenVPN,HTC G3 Hero安装OpenVPN