在Android上用TunnelDroid(OpenVPN)翻墙
Android上OpenVPN的设置与使用
这个问题被问过很多次,加上我自己的VPN用户也有询问这个问题,很多人参考的又是网上古老的文档,所以我这里写一篇讲解一下。
想要阅读下文,请确保你知道什么是adb及如何使用adb
首先明确一下,只有Android 1.6及更高版本才默认自带了TUN驱动。没有TUN驱动,Android是无法支持任何VPN的。但是我听说过有人把tun.ko(TUN驱动文件)移 植到了G3 Hero里,从而让Android 1.5也可以使用OpenVPN。这个我没有证实过,稍后补充:-)
100228 UPDATE:确实有,Modaco ROM就是基于官方Android1.5内核的ROM,自带了tun驱动。HTC Hero用户可以参考这里安装
http://blog.devep.net/virushuo/2010/02/28/androidhtc_herovpn.html
其次确认一下你的系统里有没有busybox命令。目前基本上所有自定义rom都会有busybox这个东西。busybox是在嵌入式linux 系统提供基本Linux命令集的工具,官网上的介绍是busybox-The Swiss Army Knife of Embedded Linux。从它的功能上来说也确实是个瑞士军刀~
呃跑题了…然后确认一下你的rom里是否已经预包含了OpenVPN。方法是:在adb shell中输入which openvpn,如果有输出类似/system/xbin/openvpn这样的字样,就说明你的rom已经预装了OpenVPN,你可以跳过安装 OpenVPN的步骤了。
如果你的ROM里没有自带OpenVPN,通过以下方式安装。注意网上流传的一堆.so文件的安装方法仍然有效,但是完全没必要这么安装了。这里提供的openvpn for android二进制文件已经静态编译,不需要动态链接库的支持了:
1、下载http://github.com/downloads/fries/android-external-openvpn/openvpn-static-2.1.1.bz2
2、解压缩获得openvpn-static-2.1.1,执行adb push openvpn-static-2.1.1 /system/xbin/openvpn
3、adb shell,执行chmod 775 /system/xbin/openvpn
以上是安装OpenVPN二进制文件的过程。
OpenVPN的使用:
OpenVPN通常用数字证书进行验证,用一个.ovpn文件进行配置。将.ovpn文件、.key文件、.crt文件及ca.crt一共4个连接所需的文件放在/sdcard/openvpn/文件夹下,然后从market安装tunneldroid进行连接即可。
注意tunneldroid提供了修改DNS的选项。由于国内各个DNS基本都存在DNS污染,所以建议在tunneldroid的设置页面填一个国外的DNS,例如google的8.8.8.8。
以上如有疑问请回复提出。写twitter多了不会写长文了=。=
来源:http://yegle.net/2010/02/25/android-openvpn/
=============================================================================
Milestone配置OpenVPN教程(Android2.1)【图解】
由于众所周知的原因,我们需要使用VPN(虚拟专用网)进行“科学上网”。而OpenVPN作为更安全的VPN解决方案受到更广泛的欢迎。这里图解一下Motorola Milestone的OpenVPN上网配置方法。
(理论上适用于其他任何android 2.1机型)
(有些图是我自己配置的时候截取的,有些是后来补截的,所以图片中电量等细节可能不大一致)
(其实在里程碑上不用PPTP还有个原因……因为经常不能用:电脑上好好的,手机上死活用不了;刷机前好好的,刷完就不行了,再刷回去也不行;或者从1.6、2.01换到2.1也不能用,替换pptpd什么的文件也不行,调整服务器不使用mppe128加密照样不行。)
在开始配置之前,你需要准备以下东西:
0、你的手机需要是root过的,并且有一个Root Explorer和Terminal Emulator。一般刷过自定义ROM的都已经root和附带RE,Terminal Emulator(终端命令行工具)可以从市场下载。
1、一套在电脑上可以使用的OpenVPN服务器的配置文件,通常包括一个ovpn文件以及相关证书。
2、手机上需要有busybox命令。通常刷过自定义ROM的都会带这个命令。判断是否有busybox的方法见后文。可以从本文附带的压缩包中获得(busybox)。
3、OpenVPN For Android 的Binary库。可以从本文附带的压缩包中获得(openvpn)。
4、TunnelDroid 0.8.3 。不要使用市场的最新版,在milestone上大部分机友报告无法使用。可以从本文附带的压缩包中获得(net.sourceforge.tunneldroid.apk)。
5、Tun 驱动。据说有的Android版本自带这玩意。可以从本文附带的压缩包中获得(tun.ko)。
点击此处下载Milestone配置OpenVPN工具包
okay,准备工作完成,开始配置OpenVPN。
首先安装OpenVPN库。确认/system是可写的,然后用Root Explorer把压缩包中的openvpn复制到/system/xbin下,然后勾选对应的权限:用户可读、可写、可执行,群组可读、可写、可执行, 其他可读、可执行,如下图左一所示(点击图片查看大图)。
然后打开Terminal Emulator,运行以下命令确定busybox已经安装:
su
busybox which busybox
如果出现了如下图所示的类似/system/bin/busybox的结果,表示busybox已经安装。
继续输入以下命令:
busybox mkdir /system/xbin/bb
ln -s /system/bin/busybox /system/xbin/bb/ifconfig
ln -s /system/bin/busybox /system/xbin/bb/route
命令如下图所示(点击图片查看大图)。执行结果见上图中、右(点击图片查看大图)。
接下来安装本文附带的压缩包中的TunnleDroid 0.8.3。
安装完成之后,在SD卡根目录下新建openvpn文件夹,把你的OpenVPN的服务器配置文件放进去(TunnleDroid可以识别的配置文件为ovpn格式),把本文附带的压缩包内的tun.ko也一并拷入。
打开TunnleDroid,这个时候主界面中应该已经显示出了你拷入的配置文件,不过先别急着点,还需要做一些配置。
按出菜单,选择“Preferences”,选择“Set DNS after connect”,填入一个可靠的、未被污染的DNS服务器IP地址,确定。(我设置的是谷歌的DNS服务器8.8.8.8,你也可以设置成OpenDNS的地址)
然后选择“Set tun driver path”,填入“/sdcard/openvpn/tun.ko”,确定。
返回TunnleDroid主界面,你可以在配置文件名上长按打开菜单,选择“Edit”编辑检查一下配置文件的内容。
“remote”语句指定服务器的地址和端口。
如果你的OpenVPN也需要用户名和密码的话,配置文件中就应该有“auth-user-pass”语句。如果你不想每次登录都手动输入密码(用户名 TunnleDroid能够记住),就可以在openvpn文件夹下建立一个文本文件,第一行写上用户名,第二行写上密码,然后把这个文本文件的名字放在 “auth-user-pass”后面作为参数(文件名与语句之间有一个空格),详见下图(点击图片查看大图)。
OpenVPN的配置到此已经完成,点击TunnelDroid主界面中的配置文件名,就可以连接OpenVPN网络了。(WiFi和EDGE均可连接,3G网络因为没有条件所以没有测试,不过想来也不会有问题)
经过“AUTH”、“GET_CONFIG”、“ASSIGN_IP”等步骤,成功连接之后会提示“VPN Connection Established”,配置文件名右侧的绿灯亮起,并在通知栏提示“Connected to XXXX”。
连接成功之后你不能够直接(按返回键)退出,必须先断开连接。如果需要进行其他任务,可以按Home键返回主屏。
拉下通知栏,里面会显示目前通过OpenVPN网络收发数据的速率。
连接成功之后再次点击配置文件名,即可断开连接。
呼,发两张我用Seesmic上推的截图。
图解教程到此结束。
来源:http://www.techotaku.net/post/53
==================================================================
在Android上用TunnelDroid(OpenVPN)实现cmwap完美穿越
因为Android平台的限制,用cmwap接入点接入网络时只有内置浏览器会经过代理10.0.0.172:80,其他程序无法使用互联网.
之前我一直使用@biaji开发的cmwrap让其他程序上网,cmwrap使用iptable重定向数据流,结合hosts文件做域名解析,所以你向让其他程序穿过cmwap时需要手动修改hosts文件添加ip-domain记录.
今天在twitter上听见某位推油提到TunnelDroid,我想到尝试用它做cmwap穿越.TunnelDroid的SourceForge地址是:http://sourceforge.net/projects/tunneldroid/files/
本方法需要一个可以连接的OpenVPN服务器.用Linksys路由器架设OpenVPN的方法参见:http://www.jejer.net/?p=3931
我按照README顺利联通了架在路由器上的OpenVPN服务器,但不幸的是网络无法访问.
查看TunnelDroid发现了一些有趣的信息:

错误信息大概意思是默认路由添加失败.
以命令查看tap0虚拟网卡发现tap0没有ip信息,我不知道这是不是TunnelDroid的BUG.
同样以命令修复之:busybox ifconfig tap0 192.168.10.140 netmask 255.255.255.0
然后添加路由项:busybox route add –net 192.168.10.0 netmask 255.255.255.0 dev tap0
busybox route add default gw 192.168.10.1 dev tap0
如此操作之后我发现已经可以ping到路由器的ip了,但是DNS解析还是不行.这好像是Android的BUG,因为busybox ping就可以通.
又在网上一顿搜索,找到了制定DNS的命令:setprop net.dns1 192.168.10.1
OK这些命令过后终于可以上网了.

打开浏览器看看ip哈哈,已经变成电信ip

再开Twidroid看看,完全没有问题:

为了方便连接,我把上面的命令写成一个sh脚本放在sd卡下
- #!/system/bin/sh
- busybox ifconfig tap0 192.168.10.140 netmask 255.255.255.0
- busybox route add –net 192.168.10.0 netmask 255.255.255.0 dev tap0
- busybox route add default gw 192.168.10.1 dev tap0
- setprop net.dns1 192.168.10.1
- busybox route
每次TunnelDroid连接完成后去运行一下这个脚本就可以上网了:

完成!
从而实现cmwap完美穿越,不必再更改hosts文件,DNS解析正常.与cmnet无异.
参考:
SmartQ 5 在 Android 1101固件系統下使用華為 E180 USB Modem 成功上網
#fuckgfw
———————————完美的分割线————————————-
20091225更新:
使用tun代替tap,可指定ip地址
使用route-up “cmd”替代sh脚本设置DNS,省去连接后运行脚本的麻烦
server.ovpn
- daemon
- ifconfig 10.8.0.1 10.8.0.2
- proto tcp-server
- port 443
- dev tun21
- cipher BF-CBC
- comp-lzo yes
- keepalive 15 60
- verb 3
- secret static.key
- status-version 2
- status status
- iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
- dev tun
- ifconfig 10.8.0.2 10.8.0.1
- secret static.key
- proto tcp-client
- remote jejer.3322.org 443 #xxxx为你申请的的3322.org动态网址
- keepalive 10 60
- resolv-retry infinite
- nobind
- persist-key
- persist-tun
- cipher BF-CBC
- comp-lzo
- verb 3
- float
- http-proxy-retry #要通过cmwap网关的话要加上这句和下一句
- http-proxy 10.0.0.172 80
- route-gateway 10.8.0.1
- redirect-gateway def1
- dhcp-option DNS 10.8.0.1
- #G1需要下面两句来设置DNS,在电脑上不需要,注销掉即可
- script-security 2 system
- route-up “setprop net.dns1 10.8.0.1”
TunnelDroid连接完成之后即可.不必再执行修正脚本.
============================================================================
Android G1 Openvpn设置 图文教程
Android G1通过TunnelDroid连接Openvpn傻瓜版图文教程
感谢爱我等于恨你童鞋为xiaod写的android上openvpn的设置教程,经测试成功,本文完全傻瓜图文版,并且附带所需要的openvpn软件TunnelDroid,相信每一位按照教程做的童鞋都能成功。
测试机型:Android G1 Rom: cm 4.2.15.1
本教程只在G1上测试通过,应该来说Android系统都适用,其他机型请参照教程举一反三。
眼下几乎所有的Android rom对PPTP VPN支持得都不是很好,即使连上来,过一下也会不通。而openvpn相对来说在稳定性,速度上都比PPTP有优势,所以建议有条件的朋友都用openvpn来连接。话不多说,开始教程:
1.首先确定一下rom中有没有自带openvpn
打开终端,输入su,授权
提示符变为#后,输入
如果返回一个类似
的结果,说明已经安装了openvpn, 你可以跳过安装的步骤了(cm最新的rom已经自带openvpn了)
如果你的ROM里没有自带openvpn,那就要手动安装,方法见http://xiaod.in/read.php?29
2.在sd卡根目录建立openvpn文件夹,把openvpn的证书和配置文件(ca.crt,client.ovpn)放入这个文件夹中。(如果是购买的openvpn账号,卖家会发给你这两个文件的哈,使用xiaod openvpn的可以直接从http://vpn.xiaod.in处下载)
3.安装下载下面这个TunnelDroid(不要从市场下载最新版,最新版经本人实验不能修改DNS,反而不能用)
下载解压后放在android里安装。
4. 进入TunnelDroid,在Preferences中的Set DNS after connect中修改DNS,由于国内各个DNS基本都存在DNS挟持,所以建议填写填一个国外的DNS,例如8.8.8.8,或者8.8.4.4。
(经测试填8.8.8.8和8.8.4.4也会存在DNS污染现象,使 用xiaod openvpn的童鞋可以把DNS填为10.18.0.1和8.8.8.8,讲彻底解决DNS污染问题)
5.点选chient.ovpn,输入你的openvpn帐号和密码,
显示Connected to client.ovpn,说明你已经成成功连接openvpn,从此youtube,twitter,facebook等通通向你开放,呼呼~~