第一代Milestone配置openvpn过程详解
- 环境:Milestone One(古董我也不怕), Android 2.1 英文原版(系统版本不是大问题)
- 条件:具有root权限
- 工具:busybox
- 模块:tun.ko
- 动态库:libcrypto.so, libssl.so, (liblzo.so)
- 可执行文件:openvpn, (openssl)
说明
1.带括号的不是必须的,只有当客户端配置文件中有相对应的选项时才可能需要用到。
2.动态库、可执行文件这两块可以直接从market下载安装openvpn-installer自动安装,同时你可以安装openvpn-settings以方面今后使用。本文将以openvpn-installer为主,并且按照以上列出的工具的顺序进行逐步分解。
3.以上提到的工具可以到这里下载。
我们开始了!
1.获得root身份
lesca强烈建议您使用adb shell
进行操作!
$ su
2.重新挂载/system文件系统属性为RW
先看下/system的设备名称、文件系统等信息:
# mount rootfs / rootfs ro 0 0 tmpfs /dev tmpfs rw,mode=755 0 0 devpts /dev/pts devpts rw,mode=600 0 0 proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0 none /dev/cpuctl cgroup rw,cpu 0 0 /dev/block/mtdblock6 /system yaffs2 ro 0 0 /dev/block/mtdblock8 /data yaffs2 rw,nosuid,nodev 0 0 /dev/block/mtdblock7 /cache yaffs2 rw,nosuid,nodev 0 0 /dev/block/mtdblock5 /cdrom yaffs2 rw 0 0 tmpfs /tmp tmpfs rw,size=2048k 0 0 /dev/block/mtdblock0 /pds yaffs2 rw,nosuid,nodev 0 0 /dev/block/mmcblk0p2 /data/appsd ext2 rw,errors=continue 0 0 /dev/block//vold/179:1 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
因此,执行该命令:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock6 /system
3.安装busybox
方法一:去market下载busybox即可,这是lesca推荐的方法!
方法二:(如果你想知道原理的话看下去)
随本文也一同打包了busybox的可执行文件,因此可以直接复制到/system/bin目录下:
# cp busybox /system/bin/
但是,光有busybox而没有符号链接是很不方便的,这使其他很多工具不能使用。
建议
为了操作方便,您可以将安装包中的bash也一同复制到/system/bin下,然后在命令行下输入bash
即可使用bash
4.安装ifconfig和route
这两个程序是busybox中的,只需要做个符号链接指向busybox即可。
# mkdir /system/xbin/bb # ln -s /system/bin/busybox /system/xbin/bb/ifconfig # ln -s /system/bin/busybox /system/xbin/bb/route
那么为什么不直接使用系统内置的(/system/bin目录下)的ipconfig和route程序呢?这是因为MS的这两个内置程序和openvpn不兼容。
5.安装tun.ko模块
这是本教程的关键部分!请务必小心谨慎,搞不好你系统要重刷。
(该模块已经在下载的包中提供,MS一代完美安装!)
# cp tun.ko /system/lib/modules/ # chown 0:0 /system/lib/modules/tun.ko # chmod 0644 /system/lib/modules/tun.ko # insmod tun.ko
注意
insmod
命令重启后会失效。
我们希望有某种自动机制,每次系统启动或者进行连接的时候能系统够自动加载该模块。
- 连接时加载
- 启动时加载模块
openvpn settings提供了每次连接自动加载的功能。该程序已经在下载的安装包中。
打开该程序,在Advanced-TUN Module settings可以设置tun模块的加载方式,但是请务必把路径改成/system/lib/modules/tun.ko
对于第一代Milestone Android2.1的系统而言,我们可以通过修改/system/bin下的mot_boot_mode文件来达到开机加载模块的目的!如果你没有做过App2SD,那么可能没有这个文件,这时需要手动创建。请至少确保其中包含以下四行,否则您的系统可能无法正常启动。
#!/system/bin/sh export PATH=/system/bin:$PATH mot_boot_mode.bin insmod /system/lib/modules/tun.ko
6.安装openvpn installer
这两个程序已经在下载的安装包中。您仍可到到菜市场去搜索下载最新版本。
软件打开后,点Install,然后叫你选择安装在哪,根据我们前面的描述我们已经可以做出选择:
- openvpn – /system/bin
- ifcinfg/route – /system/xbin/bb/
注意
我试过其他路径但是会出错,还是按照我的经验来吧,如果你全部做下来还连不上,可以根据错误日志再选其他的路径试试。
为了满足下lesca的完美主义情节,以下会稍微介绍下这些文件应该在手机文件系统什么地方,但是您完全可以跳过它们。
- 动态库
# cp libcrypto.so /system/lib/ # cp liblzo.so /system/lib/ # cp libssl.so /system/lib/
如果你没有liblzo.so也不必惊慌,这不影响我们连接,它主要用于数据压缩。
#cp openssl /system/bin/ #cp openvpn /system/bin/
7.复制你的证书和配置文件
可以使用Memory card access模式了,把你的证书相关文件、配置文件复制到/sdcard/openvpn目录下。
如果你熟悉adb的话,可以通过adb push
命令直接发送文件。
8.进行连接
激动的时刻到了,您可以直接在安装好了的openvpn settings里进行连接,但是lesca建议您使用命令行,这样可以看到连接日志,以便能够检查出错误。
# cd /sdcard/openvpn/ # openvpn --config xxx.ovpn
接下来就看人品了,如果出现错误,欢迎交流。如果一次性成功了,那恭喜你!你可以退出shell,之后都可以交给settings来操作了。
References:
[1] Android G1 OpenVPN 系列教程之──OpenVPN的安装与使用
[2] Issue 64: tun.ko for Milestone
[3] OpenVPN on android
版权声明
本文出自 Lesca 技术宅,转载时请注明出处及相应链接。
本文永久链接: https://www.lesca.cn/archives/set-up-openvpn-on-milestone-one.html