Total Pageviews

Sunday, 9 September 2012

在android上配置openvpn客户端

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

1. 你需要有一个Google账户,用来登录Android Market
2. 在Market里面搜索 OpenVPN ,找到 OpenVPN Installer 和 OpenVPN 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.exe 和 AdbWinApi.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 /etc/openvpn/openvpn.conf
以测试连接是否成功。此过程必须保证你的手机联网正常(我测试过WiFi,GPRS和3G我没测试,但应该好用)。
如果最终出现如下所示:
initialization sequence completed,
则表明连接成功,以后的操作即可直接在OpenVPN Settings中连接了。

9. 如果出现如下错误:
linux ifconfig failed,
在其他步骤都执行正确的情况下,通常是ifconfig和route的路径问题,请参照第7步自行修改。
当然,ifconfig的路径可以通过which命令来查看,
所以第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.ko和busybox的ROM,并且参照论坛里的刷机和ROOT教程,将自己的手机配置好,这样能给后期的操作省很多力气.

参考资料:
中文:
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

 如果你登录google play失败,建议直接下载安装如下4个APK:
BusyBox_v5.2.apk
(from http://www.iapktop.com/tag/busybox-apk, http://www.iapktop.com/busybox-5-2.html)
OpenVPN-Settings-0.4.12.apk
OpenVPN-Installer-0.2.3.apk
http://www.4shared-china.com/get/LpCqd0IU/TUNKO_installer_by_DRZN.html
(TUNKO_installer的另一个下载地址:
https://www.box.com/s/6d5c6iby1ilinwujnw7q

如果你在连接上openvpn后,开始翻墙,然后过一段时间翻不了墙了,那实际上是由于openvpn断开连接了所致,重新连接即可。

不错,按此文我设置成功。
 --------------------------------------------------------------------------
http://sourceforge.net/projects/tunneldroid/ is merged with http://code.google.com/p/android-openvpn-settings/ Was a small GUI wrapper to manage your OpenVPN configuration and tunnel on your Android powered device. It enables you to start/stop tunnels and to edit the configuration.

Here you can find a beta version of TunnelDroid
Sourcecode: http://sourceforge.net/projects/tunneldroid/
Developer: Christophe Vandeplas <christophe@vandeplas.com>
License : GPL v3
Icon credits: TunnelBlick

It contains a lot of ugly code, but the basic functionality works on my phone.
(connect, disconnect, prompt password, show log)

If you didn't install openvpn yet, please follow the instructions at the bottom of this document.

Planned for future releases
-------------------
- GUI rework
- probably stability improvements.


Technical Features
------------------
- start/stop the openvpn binary
- interqct with the openvpn daemon using the management network socket over port 7171
- editor for configfiles
- show and share your logfile easily
- Bandwith info via the Notification panel
- set DNS server on connect ( and restore on disconnect)
- autoload kernel module (if you have set the path to the file)


How does it work?
-----------------
Place your openvpn configuration and keys in a /sdcard/openvpn directory
Start the app and it will list all *.ovpn files in that dir.

Short-touch on the config will start/stop the connection.
Long-touch opens menu with these options:
- connect/disconnect
- edit config
- delete config

If you load password files in your configuration you will not be prompted for a password
(auth-user-pass passfile.txt and askpass passfile.txt)

To see the traffic statistics slide down the notification screen.



Issues?
--------
If you have problems connecting you can always send me your logfile.
Do this by doing "menu > show log" in the main screen
Then in the log window "menu > share" and email it to christophe@vandeplas.com
I will do my best to help.

If you find an issue please report issues by mail or using the sourceforce bug tracker
http://sourceforge.net/tracker/?group_id=285294&atid=1209244


HOWTO Install openvpn
---------------------
Cyanogenmod => You probably already have openvpn, do not follow these procedures.
               But my libssl might have more cryptofunctions than yours

Droid Users => Read this http://code.google.com/p/get-a-robot-vpnc/wiki/Motorola_Droid_Support

MoDaCo MCR  => Just follow these instructions

Download the binary: http://sourceforge.net/projects/tunneldroid/files/openvpn-binary.zip/download


Others:
Step 1 - Take back and secure externally - optional, but always a good idea.

Step 2 - Make a backup of the original files, you never know...
> adb remount
> adb shell
# cd /system/lib
# cp libcrypto.so libcrypto-orig.so
# cp libssl.so libssl-orig.so
# exit

Step 3 - Perform the following text commands at a command prompt
From the unzipped fries download find all the files (should be 5 in total) and do
> adb remount
> adb push libcrypto.so /system/lib/
> adb push liblzo.so /system/lib/
> adb push libssl.so /system/lib/
> adb push openvpn /system/bin/
> adb shell chmod +x /system/bin/openvpn

Then reboot the phone

Make sure you have a kernel with the tun device installed and loaded.
 
from http://voxel.dl.sourceforge.net/project/tunneldroid/README 
--------------------------------------------------------------------------------

如何在Android系统上连接OpenVPN (for android2.x)

 

一般原厂固件

  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执行如下命令:
如果该命令报错,则说明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执行如下命令:(确认目录存在,不存在就新建,并给与权限)
这下应该差不多了,如果还有问题的话请寻求社区支持吧。

CyanogenMod固件

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

补充

在Google Play商店里有这么一个程序:TUN.ko Installer 可以帮助你安装tun.ko驱动。
如果在连接时提示ifconfig出错,请重新安装busybox。
-------------------------------------------------------------------------------

Android手机安装OpenVPN客户端 (for android2.x)



 为了顺利通过翻墙,安装了OpenVPN客户端。

安装OpenVPN之前,先要破解手机的ROOT权限,至于如何破解ROOT权限,请参考另外一篇文章:Android手机如何破解ROOT权限。
在电子市场搜索下面的程序并安装:
busybox
OpenVPN Setting
OpenVPN Installer
说明:OpenVPN Installer程序在我手机上安装的OpenVPN程序无法正常工作,可能和动态链接库不全有关。后来我在网上找到的Openvpn for Android二进制文件是静态编译的,不需要动态链接库,才可以正常使用。下载地址:
将文件上传到手机,并赋予执行权限。
adb push openvpn-static-2.1.1 /system/xbin/openvpn
adb shell
# chmod 775 /system/xbin/openvpn

tun.ko
tun.ko是VPN的TUN/TAP虚拟设备的驱动,一般1.6版本以后都自带该TUN驱动,但很多版本为了精简系统,把它去掉了。先检查/system/lib/modules/目录中是否存在tun.ko文件, 如果没有的话,需要下载之后放进该目录或自行编译。
你可以从Google的VPN Connections for android 项目主页下载tun.ko,链接如下:
不过这个tun.ko并不适合我的Android系统,tun.ko和具体OS版本有关,如果不想自行编译,只能到网上搜索能和自己系统匹配的tun.ko文件。
安装并加载tun.ko文件:
mount -o remount,rw /system
cd /system/lib/modules/
chmod 644 tun.ko
cp /sdcard/download/tun.ko .
insmod tun.ko
如果提示找不到ifconfig和route命令:
mkdir /system/xbin/bb
ln -s /system/xbin/busybox /system/xbin/bb/ifconfig
ln -s /system/xbin/busybox /system/xbin/bb/route
OpenVPN Setting
OpenVPN采用数字证书进行验证,我们需要client.ovpn配置文件、i9000.key文件、i9000.crt文件及ca.crt证书文件,将这4文件放在/sdcard/openvpn/目录下,然后运行OpenVPN Setting就可以连接VPN服务。
client.ovpn
安装OpenVPN客户端,在config目录中可以找到默认的client.ovpn,修改以下设置:
remote linode.liaojl.com 1194

ca ca.crt
cert i9000.crt
key i9000.key
OpenVPN Setting有一个选项是加载模块,只需要给出tun.ko文件的路径,就可以让OpenVPN帮你自动加载这个模块。
由于国内各个DNS基本都存在DNS污染,所以建议在OpenVPN的设置页面填一个国外的DNS,例如:Google的8.8.8.8。或者干脆在OpenVPN服务器上直接PUSH这个DNS.
-------------------------------------------------------------------------------

Android的原生OpenVPN使用方法(不适合我的手机)

 现在Cyanogenmod和MIUI的ROM都已经原生自带OpenVPN,但是使用方法不是那么方便,前几个月折腾过,今天把方法记录下,需要的人也可以尝试下.

我这里以MIUI ROM为例介绍,其实Cyanogenmod也是完全相同的,MIUI也是基于Cyanogenmod开发出来的.

原生的OpenVPN设置的最大问题就是证书选择,很多人不知道怎么导入证书.

android支持的证书类型是PKCS#12,所以之前我把生成的crt证书放到手机内存块根目录或openvpn文件夹下都找不到.

做这些的前提是你有服务器或VPS,并安装了openvpn,或者你购买了Openvpn,并提供商可以帮忙制作PKCS#12证书.

我是用自己的VPS安装了openvpn来测试的,这里我不具体说openvpn的安装方法了,网上教程非常多,今天主要说的是如何生成PKCS#12证书,并在手机上设置openvpn.

进入到openvpn的证书生成文件夹,通常在/etc/openvpn/easy-rsa/2.0/keys,

这里假设你生成的根证书名为ca.crt,而你自己的用户证书为client.crt,私钥为client.key,

在目录下运行指令:

openssl pkcs12 -export -in client.crt -inkey client.key -certfile ca.crt -out client.p12

运行指令会提示你输入一个export passwd,随便设置一个就行.

开始我没设置,直接为空,但是android导入证书时就有问题了,不允许无密码解开PKCS#12证书.

其实这指令就是把根证书和你自己的证书和私钥合并到一个PKCS#12证书中,然后把该证书传到手机导入.

这里有两个办法,直接把证书放到你的apache或nginx等web服务器的文档目录下,然后直接用手机访问下载地址.

这样手机会直接弹出导入证书提示,要求输入导入密码,就是之前运行指令时要求输入的密码.

输入后确定,会要求为证书命名,默认是一串字符,你可以取一个方便你区分的证书名字,确定即可.

另一种导入方法是把PKCS#12证书传到手机SD卡根目录,然后设置——》个人——》安全和隐私,找到凭证存储.

使用安全凭证,默认是没设置过密码的,这里会要求你先设置一个密码,相当于手机报密码一样,只是用处不同.

然后下面有一个从SD卡安装,选择这个选项,会弹出一个选择框,让你选择需要导入的证书,同样会要求为证书命名,确定后就导入成功了.

使用第一种方法,如果你之前未设置过存储凭证的密码,也会先提示设置一个密码.

证书导入的步骤就完成了,下面是设置VPN了.

进入设置——》系统——》VPN——》添加虚拟专用网,选择“添加VPN “OpenVPN””

名称随你自己设一个,服务器设置为OpenVPN服务器的ip或者域名.

用户认证根据你生成用户证书的时候是否选择输入密码,具体方法这里没有提及,我因为讨厌输入密码,没有设置,所以这里不需要开启.

设置CA证书,选择后会弹出选择框,里面有你之前导入的证书,选择它.

设置用户证书,同样选择你之前导入的证书.

DNS搜索范围,可设置为8.8.8.8,Google的DNS.

然后按下menu,选择高级设置.

服务端口改为你的OpenVPN端口,默认为1194,很多人装OpenVPN把端口改为53端口,具体原因不在这里解释.

使用协议,OpenVPN支持TCP和UDP协议,根据你的OpenVPN服务器设置选择相同的协议.

使用设备,一般都是用tun网卡,不需修改.

LZO压缩,大部分OpenVPN都会打开这个压缩,如果服务器开启了LZO压缩,手机也必须开启.

重定向网关,根据你自己需求而定.

远程设置地址,默认开启,由服务器为手机分配一个ip地址.

下面的密码算法,密钥大小等不需修改,返回后保存.

在VPN设置里多了你刚才设置的VPN账户,点击连接即可.

补充一点,如果你的VPN设置里需要TLS验证,无法使用原生OpenVPN.

如果要更好的使用OpenVPN,推荐在菜市场里搜索openvpn setting下载安装.

因为MIUI本来就支持OpenVPN,也就是本来就有openvpn的库文件,不需要下载openvpn install,这个程序的功能是按照openvpn的库文件,安装一次后即可删除.

但是如果你使用Cyanogenmod或者MIUI的ROM,你不需要安装它,直接安装OpenVPN Setting即可.

当然你也可以下载安装看看,它会先检测是否已经有openvpn库了,一般都在/system/xbin/openvpn

-------------------------------------------------------------------------------------------------------------------------

Android的OpenVPN 方案 (for android2.x)


机器必须已经 root。

Step 1:安装 OpenVPN

    1. 在市场中搜索安装 OpenVPN Installer。安装后运行,如果提示“Binary installed” 并给出程序路径(如 system/xbin/openvpn),进行下一步。否则,点击“Install”安装。
    2. 在市场中搜索安装 OpenVPN Settings。在 SD 卡中新建 openvpn 文件夹(全小写),将证书、conf 文件拷贝到该文件夹内。
    3. 启动 OpenVPN Settings。如果前面配置正确,就应该能看到配置文件被载入(右图)。
    4. 打开 OpenVPN 的开关,然后再打开对应 conf 的开关。如果看到“Connected to … as …”,就说明连接成功啦。
说明:
    1. 通知栏上也会有状态提示。左数第五个图标(豌豆荚左侧),指示 OpenVPN 状态。深色(如图)表示已连接,浅色表示连接中。
    2. 开机后会自动启动。也就意味着,不需要你管它,只要有网络信号,就能连接上(只不过有时候切换超慢,需要你手动关了再开。这个应该与 OpenVPN 服务器也有关系,因为 OpenVPN 同一时刻一账号只允许触发一个连接,非正常掉线服务器可能会反应错误)。

Step 2:解决 DNS 污染

还有一个重要的问题没解决。众所周知,国内的 DNS 基本全被污染光了,所以必须强制走国外 DNS(在 VPN 拨通的条件下,也即 DNS 流量也必须被加密)。
最好的办法就是让服务商开通 DNS Push。但如果没开通,就只能在本机上做了。iOS 上有插件 GuizmoDNS 可以强制 wifi / 3G 的 DNS,但 Android 上我还没发现。只好找了一个折中的办法,执行一个脚本,来制定 DNS。
    1. 在市场中搜索安装 GScript Lite。
    2. 安装后运行,添加一个新的脚本,内容就两行:
setprop net.dns1 8.8.8.8
setprop net.dns2 8.8.4.4
保存,运行。
为了方便以后运行,可以点击(MIUI 桌面下)Menu → 编辑模式 → Menu → 添加 → 快捷方式,将该脚本的快捷方式放置在桌面。
以后每次开机后,点一下这个脚本,设置 DNS 就可以了。麻烦点,但,不这样又能怎么办呢?
-------------------------------------------------------------------------

The process was quite straightforward after installing the OpenVPN Settings app from the android Market. The only issue was that the DNS were not updated with the info from the VPN connection.
For setting up the DNS servers to use you have to run these two simple commands:
# setprop net.dns1 your-vpn-dns-ip
# setprop net.dns2 your-vpn-second-dns-ip
And that's all, hope it helps.

from http://blog.tenak.net/2010/08/2010-08-openvpn_with_android.html

----------------------------------------------------------------------------------------
相关帖子: http://briteming.blogspot.com/2012/09/how-to-set-up-openvpn-on-android.html
---------------------------------------------------------------------------------------
 在moto的CM7/9安卓手机上使用OpenVPN

最近把Defy+从CM9刷回了CM7,由于CM9实在是太吃内存了。另外一个原因就是ICS对VPN的支持实在太差(见https://code.google.com/p/android/issues/detail?id=23124),很多人都报告L2TP在ICS上无法正常连接。
CM7自带OpenVPN的客户端,CM9必须另外安装。CM9的客户端可以到这里下载:https://play.google.com/store/apps/details?id=de.blinkt.openvpn,只支持4.0+,不支持tap模式(服务端用这个很少,一般是tun)。这个客户端是目前Android上最好的第三方OpenVPN客户端,支持直接读入ovpn和证书文件,几乎100%的免配置

OpenVPN for Android在ICS上唯一需要注意的是可能需要选择Fix permissions for /dev/tun(需要root),至少在我的Defy+ CM9上面需要这样选择。据说三星的某些ROM根本没有这个文件,那么很遗憾无法使用OpenVPN。
CM7的话需要先生成p12文件(如果服务端使用的是客户端/服务器双证书认证),步骤如下:
准备好服务器CA证书(ca.crt),客户端证书(client.crt)和客户端密钥(client.key),在linux下运行
openssl pkcs12 -export -in client.crt  -inkey client.key -certfile ca.crt -name magic -out client.p12
然后把这个文件拷到SD卡根目录,在Android上通过“设置”-“位置与安全”-“从SD卡安装”来安装证书。
如果是用户名/密码认证的话则只需要安装CA证书,直接把ca.crt拷到SD卡根目录即可安装。
然后在“无线与网络设置”-“虚拟专用网设置”-“添加虚拟专用网”里面选择OpenVPN,按照服务器提供的ovpn文件设置即可。如果是用户名/密码认证需要在“高级”-“额外参数”里面添加:
--ns-cert-type server --persist-tun --persist-key --nobind --resolv-retry infinite --tun-mtu 1500
如果服务器不是使用的默认AUTH算法(CM7客户端默认是SHA1)的话(在ovpn里面auth一行会定义),还需要加上
--auth algorithm
algorithm替换为所使用的算法。否则在服务器端log里会看到类似的条目:
WARNING: 'auth' is used inconsistently, local='auth alg', remote='auth SHA1'
本文参考:
http://lgallardo.com/en/2011/09/12/openvpn-en-android-cyangenmod/
-----------------------------------------------------------------------------------

OpenVPN on Android (Cyanogenmod)


As my HTC Magic has Cyangenmod 6.1.0 (Froyo 2.2.1) I decided to give it  a try to the OpenVPN feature to see if it gets connected to the net. In this post I explain how to set it.

Setting the OpenVPN server

In general terms nothing must be done on the server except to disable the HMAC firewall because Cyangenmod’s OpenVPN version doesn’t work with this feature, if not you’ll get errors on the OpenVPN server like this one:
Sep  9 13:54:23 fluffy openvpn(sample_server)[4396]: TLS Error: cannot locate HMAC in incoming packet from [AF_INET]192.168.1.30:54934
In order to disable the HMAC firewall just comment this line in the configuration file:
#option tls_auth "/etc/openvpn/ta.key 0"
Clients must disable as well by commenting this line:
#option tls_auth "/etc/openvpn/ta.key 1"

Making Android's cert and key

In a similar way as covered in post how to install OpenVPN on OpenWRT, you must make the certificate and key for the client:
cd /etc/openvpn/easy-rsa/
source vars
./pkitool magic

Making the file PKCS12

  • Now you must make a PKCS12 file using the certificate and key generated previously:
openssl pkcs12 -export -in keys/magic.crt  -inkey keys/magic.key -certfile keys/ca.crt -name magic -out magic.p12
Here file magic.crt and magic.key were just created, while the ca.crt file is the OpenVPN server certificate. When ask, provide a phrase or password (don’t forget it because it will be asked later on the Android device).
  • Connect the phone to the PC and copy the magic.p12 file into the SD card’s root:
cp magic.p12 /media/disk/
Unplug the phone nicely and wait until the SD card is mounted on the phone.

Setting the client

  • First you must add the certificate generated for the device, to do so go to Settings > Location & security > Credential Storage > Install from SD card
A phrase or password will be asked, the same you provided when making the file PKCS12.
  • Now you can proceed to set the VPN, to do so go to Settings > Wireless & networks > VPN settings > Add VPN > Add “OpenVPN” VNP:
Next screen lets you set the VPN parameters:
Where,
VPN Name: The name you give to the VPN
Set VPN server: IP address or public domain name where the OpenVPN server is running
User authentication: Leave unchecked
Set CA certificate: Select the certificate you made, in this example magic
Set user certificate: Select the certificate you made, in this example magic
DNS search domains: Leave unchecked
Then select the advanced options by pressing the menu button and choosing Advanced. Here is important to set the port to 1194  and enable the LZO compression:

Once done you can select the VPN  added.

References

related posts:

  1. Setting OpenVPN on OpenWrt
  2. CyanogenMod 6.1.0-DS for HTC Magic
  3. Watch movies on Android from an UPnP server
  4. CyanogenMod 7 (Gingerbread) for Samsung Galaxy Tab 7
 from http://lgallardo.com/en/2011/09/12/openvpn-en-android-cyangenmod/
-------------------------------------------------------------------------------------------

OpenVPN for Android4.0(无需root)


Android 4.0 及更高版本提供了更高的VPN权限,从此安卓设备使用OpenVPN就无需root或刷CM固件了。
OpenVPN for Android下载地址:https://play.google.com/store/apps/details?id=de.blinkt.openvpn
如果您有能力希望帮助他们翻译,项目地址 http://code.google.com/p/ics-openvpn/
下载后安装即可配置使用OpenVPN了(openvpn需要tun模式,当然我们常见的openvpn都是tun模式的,tap模式的我至今未见过),有网友测试过可以正常使用,我没测试过。
此外OpenVPN官方经营的VPN服务: https://www.privatetunnel.com也推出专门的Android版客户端了。
这样OpenVPN在Windows、Mac、Linux和Android上都比较完善了,iOS估计不会开那么高的权限给OpenVPN所以想用 OpenVPN还要继续越狱,WM手机估计也没啥希望据说微软还是不打算给新的WM手机增加VPN功能(微软手机系统也真够和谐的)。
另外还有网友说strongSwan VPN Client也是此次Android开放VPN更高权限的受益者,在安卓上使用IPsec VPN(IKEv2)也是个不错的选择,另外4.0之后的Android都可以记忆PPTP VPN/L2TP (IPSec) VPN密码,这样安卓的VPN支持也是比较完善了。
strongSwan VPN Client下载地址:https://play.google.com/store/apps/details?id=org.strongswan.android
有的VPN服务商的VPN服务已经提供安卓的IKEv2 VPN支持,有的vpn provider(https://www.igssh.com/)还 是不错的,Nokia S60 mVPN、WebOS平台Cisco IPSec VPN、BlackBerry黑莓手机和PlayBook平板IPSec VPN、Windows Phone 7 APN Proxy等基本上能见到的设备的稀奇古怪的VPN都支持了.
说起这稀奇古怪的VPN有个Tinc一直感觉好玩,可惜国内搜索不到搭建教程,搜到个国外的也不怎么懂,有没有高人能根据其官方文档写一个Linux上搭建服务器端和Windows系统上使用Tinc VPN的教程啊。这个Tinc VPN支持IPv6,有Windows客户端和Android客户端,mac、Linux、BSD、iOS也都有支持。
Tinc-VPN官网:http://www.tinc-vpn.org/
Android客户端下载:https://play.google.com/store/apps/details?id=org.poirsouille.tinc_gui
另外还有连个项目感觉也可以看看https://github.com/ptrhere/tincie(据称可以实现无tun设备的VPN)和https://github.com/geniedb/tinc-tailor(简化tinc vpn).
-----------------------------------------------------------------------------------------
相关帖子:
http://briteming.blogspot.co.uk/2012/09/how-to-set-up-openvpn-on-android.html
http://briteming.blogspot.co.uk/2012/10/how-to-setup-openvpn-on-android.html
-----------------------------------------------------------------------------------
 Android系统4或以上,no root权限,用FEAT VPN 免费连接OpenVPN (我测试成功)


目前安卓4.0以上已经支持OpenVPN了,无需root,不过4.0以下版本的安卓手机还需要root才能使用openvpn,不过FEAT VPN声称其提供了一种Android 2.x and 3.x在不root的情况下使用OpenVPN的方案。

一如既往,测试版是免费的,FEAT VPN 提供的商业版本的全部功能。它不会有一个小时的时间限制,不会过期。

Free FEAT VPN是一个Android应用程序,带来了OpenVPN的Android版本2.1到3.2。对比现有的应用程序,适宜VPN不需要你 Rooting 你的Android手机或平板电脑,从而丧失其保修。

  • The beta version for Android 4.x – feat_beta.apk – is available here:
    https://www.box.com/s/zchypyfqv98wzxjn58lj
现在测试版is free for all.

在開通免费feat vpn 要按 setup 測試你的手机.

成功 test finshed 沒出error 下一步是設定feat vpn的通用設定了.

    setting
    Feat VPN service 選了在手機運行
    Start on Boot      選了在手機開始常工作
    Log Level           可選

Add tunnel to the vpn      加入你供应商的 OVPN 設定档.   你需要先把你pc上的client.ovpn和static.key打包为zip文件,放入手机的/sdcard/openvpn/,
然后在手机上,打开feat_beta,点击Add tunnel to the vpn,定位到那个zip文件。
(跟PC上一样,需用静态密匙模式的openvpn,证书模式的openvpn是连不上的。)
---------------------------------------------------------------------------------------------

安卓手机(no root)使用openvpn for Android翻牆(我测试成功)

只適用android 4 或以上,不需要root權限。

簡單安裝的2步
(1) 在google play OpenVPN for Android 》 同意安裝》 开启 》
下载地址:  https://www.box.com/s/irahrp8xk8eoblxehugv
(2) 点击VPN列表 -点击右上角的“+”号-输入“新配置文件名”-点击右上角的文件夹图标-在/sdcard/openvpn/找到OpenVPN 的设定档client.ovpn,导入配置文件 》保存 》.你需要先把你pc上的client.ovpn和static.key放入手机的/sdcard/openvpn/.


from http://3forever.com/%E5%AE%89%E5%8D%93%E6%89%8B%E6%9C%BA-openvpn%E5%A4%A7%E9%99%B8%E7%BF%BB%E7%89%86android%E5%AE%89%E8%A3%9D%E6%95%99%E7%A8%8B%E6%9C%AAroot/

 (跟PC上一样,需用静态密匙模式的openvpn,证书模式的openvpn是连不上的。)
---------------------------------------------------------------------

什么是一体的OpenVPN的设定档


openvpn 配置文件可包括有  key ca cert tls-auth ta.key  client.ovpn

从2.0版本  openvpn 支持一体的设定档.

client.ovpn这一个文件包含所有的配置 不用分開不同的文件档.

只要把所有openvpn的文档复制到client.ovpn中,   删除回车键



from http://3forever.com/%E4%BB%80%E4%B9%88%E6%98%AF%E4%B8%80%E4%BD%93%E7%9A%84openvpn%E7%9A%84%E8%AE%BE%E5%AE%9A%E6%A1%A3/

(把ca.crt证书放入client.ovpn文件
 
如果你有好几个网站的openvpn配置你可以在config目录下为每一个网站建一个文件夹,也可以都放在config目录下,不过是不是有很多.crt和.key文件很烦人呀,其实你可以把它们都删除了,只需要把他们放入client.ovpn配置文件。
用写字板打开各个client.ovpn文件在最后面添加
<ca>
</ca>
<cert>
</cert>
<key>
</key>
key-direction 1
<tls-auth>
</tls-auth>
用记事本打开ca.crt把文件内容复制到<ca>和</ca>的中间,
用记事本打开client.crt把文件内容复制到<cert>和</cert>的中间,
用记事本打开client.key把文件内容复制到<key>和</key>的中间,
用记事本打开ta.key把文件内容复制到<tls-auth>和</tls-auth>的中间,
(ca.crt、client.crt、client.key、ta.key这些文件不一定全都与,有那些就修改那些;这些文件的名字不一定都是这样,可以在.ovpn配置文件里搜索ca、cert、key、tls-auth看他们所对应的文件名)
修改完成后删除类似
tls-auth ta.key 1
ca ca.crt
cert client.crt
key client.key
的那几行,然后保.ovpn文件即可删除那些.crt和.key文件而正常使用了.)
-------

related post:
http://briteming.blogspot.com/2013/03/openvpn-for-android-android40openvpn.html

http://briteming.blogspot.com/2012/10/how-to-setup-openvpn-on-android.html

http://briteming.blogspot.com/2017/07/openvpn.html

http://briteming.blogspot.com/2012/09/how-to-set-up-openvpn-on-android.html
-------

Android上OpenVPN的设置与使用


我这里写一篇讲解一下。
想要阅读下文,请确保你知道什么是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。
以上如有疑问请回复提出。
from http://web.archive.org/web/20100612005545/http://yegle.net/2010/02/25/android-openvpn/