在Android上用TunnelDroid(OpenVPN)翻墙

2011年9月4日 | 分类: 手机翻墙 | 标签: , , , , ,

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下,然后勾选对应的权限:用户可读、可写、可执行,群组可读、可写、可执行, 其他可读、可执行,如下图左一所示(点击图片查看大图)。

MileStone配置OpenVPN教程图解-图2MileStone配置OpenVPN教程图解-图1

然后打开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

命令如下图所示(点击图片查看大图)。执行结果见上图中、右(点击图片查看大图)。

MileStone配置OpenVPN教程图解-图2MileStone配置OpenVPN教程图解-图2

接下来安装本文附带的压缩包中的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”编辑检查一下配置文件的内容。

MileStone配置OpenVPN教程图解-图3MileStone配置OpenVPN教程图解-图3(配置TunnelDroid)

“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”。

MileStone配置OpenVPN教程图解-图4MileStone配置OpenVPN教程图解-图4(修改OpenVPN配置文件、连接VPN)

连接成功之后你不能够直接(按返回键)退出,必须先断开连接。如果需要进行其他任务,可以按Home键返回主屏。
拉下通知栏,里面会显示目前通过OpenVPN网络收发数据的速率。
连接成功之后再次点击配置文件名,即可断开连接。

MileStone配置OpenVPN教程图解-图5MileStone配置OpenVPN教程图解-图5

呼,发两张我用Seesmic上推的截图。

MileStone配置OpenVPN教程图解-图6    MileStone配置OpenVPN教程图解-图7MileStone配置OpenVPN教程图解-图6(Timeline)、图7(Profile)

图解教程到此结束。

来源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发现了一些有趣的信息:

TunnelDroid LogTunnelDroid Log

错误信息大概意思是默认路由添加失败.

以命令查看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这些命令过后终于可以上网了.

fix ip gateway dnsfix ip gateway dns

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

ip地址验证ip地址验证

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

Twidroid验证穿越Twidroid验证穿越

为了方便连接,我把上面的命令写成一个sh脚本放在sd卡下

  1. #!/system/bin/sh
  2. busybox ifconfig tap0 192.168.10.140 netmask 255.255.255.0
  3. busybox route add –net 192.168.10.0 netmask 255.255.255.0 dev tap0
  4. busybox route add default gw 192.168.10.1 dev tap0
  5. setprop net.dns1 192.168.10.1
  6. busybox route

每次TunnelDroid连接完成后去运行一下这个脚本就可以上网了:

sh脚本sh脚本

完成!

从而实现cmwap完美穿越,不必再更改hosts文件,DNS解析正常.与cmnet无异.

参考:

SmartQ 5 在 Android 1101固件系統下使用華為 E180 USB Modem 成功上網

#fuckgfw

———————————完美的分割线————————————-

20091225更新:

使用tun代替tap,可指定ip地址
使用route-up “cmd”替代sh脚本设置DNS,省去连接后运行脚本的麻烦

server.ovpn

  1. daemon
  2. ifconfig 10.8.0.1 10.8.0.2
  3. proto tcp-server
  4. port 443
  5. dev tun21
  6. cipher BF-CBC
  7. comp-lzo yes
  8. keepalive 15 60
  9. verb 3
  10. secret static.key
  11. status-version 2
  12. status status
在路由器上配置iptables
  1. iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
client.ovpn
  1. dev tun
  2. ifconfig 10.8.0.2 10.8.0.1
  3. secret static.key
  4. proto tcp-client
  5. remote jejer.3322.org 443   #xxxx为你申请的的3322.org动态网址
  6. keepalive 10 60
  7. resolv-retry infinite
  8. nobind
  9. persist-key
  10. persist-tun
  11. cipher BF-CBC
  12. comp-lzo
  13. verb 3
  14. float
  15. http-proxy-retry                  #要通过cmwap网关的话要加上这句和下一句
  16. http-proxy 10.0.0.172 80
  17. route-gateway 10.8.0.1
  18. redirect-gateway def1
  19. dhcp-option DNS 10.8.0.1
  20. #G1需要下面两句来设置DNS,在电脑上不需要,注销掉即可
  21. script-security 2 system
  22. route-up “setprop net.dns1 10.8.0.1”

TunnelDroid连接完成之后即可.不必再执行修正脚本.

来源http://www.jejer.net/2009/12/%E5%9C%A8android%E4%B8%8A%E7%94%A8tunneldroidopenvpn%E5%AE%9E%E7%8E%B0cmwap%E5%AE%8C%E7%BE%8E%E7%A9%BF%E8%B6%8A/

============================================================================

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,授权
提示符变为#后,输入

which openvpn

如果返回一个类似

/system/xbin/openvpn

的结果,说明已经安装了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等通通向你开放,呼呼~~
点击在新窗口中浏览此图片

来源http://xiaod.in/read.php?37

目前还没有任何评论.