ios(iPhone,ipad,itouch)使用OpenVPN教程

作者:admin 发布时间:August 12, 2012

你正在查看的教程编写于12年8月19日前,最后编辑于11年3月23日前,部分内容可能已经过时且不再可用,请斟酌确认并查看最新的说明教程。

OpenVPN on iPhone 在iPhone上使用OpenVPN需要先越狱,纯果粉到这里可以不用往下看了。//个人感觉iPhone不越狱就是小资货,越狱后就是Unix!

  1. 在cydia里下载下载必要的软件包:

    `OpenSSL,OpenSSH,SBSettings,OpenVpn Toggle for SBSettings,Python` 
    
  2. 下载OpenVPN的配置文件,传进iPhone里,我放到了/var/mobile/Library/OpenVPN/conf.ovpn

由于本站OPENVPN使用的是user/pass的认证方式,而iphone openvpn又不支持从文件读取username/passwd,所以每次都要打开终端,从标准输入吧user/pass敲进去,相当麻烦。我们使用一个python脚本替代自己的工作。

  1. 安装python的pexpect模块。去http://sourceforge.net/projects/pexpect/files/下载pexpect-2.3.tar.gz至iPhone中,切换至root用户,执行

    `tar zxf pexpect-2.3.tar.gz
    cd pexpect-2.3
    python setup.py install`

  2. 建立文件/var/mobile/Library/OpenVpn/startopenvpn, 并将该文件权限设置为755

    `#!/usr/bin/pythonimport pexpect
    import syschild = pexpect.spawn('/usr/bin/openvpn-iphone --config /var/mobile/Library/OpenVpn/conf.ovpn')
    child.logfile = sys.stdout
    child.expect('Enter Auth Username:')
    child.sendline('你的用户名')
    child.expect('Enter Auth Password:')
    child.sendline('你的密码')
    child.expect(pexpect.EOF, timeout=None)`

  3. 修改/var/mobile/Library/SBSettings/Commands/com.offinf.openvpnup

    `#!/bin/sh
    [[ -f /var/mobile/Library/SBSettings/Toggles/OpenVpn/OFF ]] && /bin/rm /var/mobile/Library/SBSettings/Toggles/OpenVpn/OFF
    cd /var/mobile/Library/OpenVpn/
    /var/mobile/Library/OpenVpn/startopenvpn > /var/mobile/Library/OpenVpn/ovpn.log &`

  4. 修改/var/mobile/Library/SBSettings/Commands/com.offinf.openvpndown为如下内容:

    `#!/bin/sh
    /bin/touch /var/mobile/Library/SBSettings/Toggles/OpenVpn/OFF
    /usr/bin/killall openvpn-iphone`

  5. 在sbsetting中启用openvpn的管理,就可以通过sbsetting来启动和管理vpn了!

ios(iPhone,ipad,itouch)使用OpenVPN教程

DNS配置

连上OpenVPN之后我发现了一个严重的问题(不知道其他人是不是也这样),虽然我本身获得了自由,但DNS污染依然存在,各种网址不能被正确解析。我想到了改DNS,但iOS 只提供WiFi接入点的DNS配置,3G/EDGE的DNS是不让改的。

本着iOS也是Unix的思想,我天真的以为它会在/etc/resolv.conf中,事实证明我错了。其实要改也不难,Apple的一个系统配置工具叫scutil。//由于对Mac OS X系列不太了解,我也不知道它的机制,但用起来大概也挺方便

  1. 进入终端环境,SSH或者MobileTerminal都可以
  2. 取得root权限
  3. scutil 进入scutil环境,命令提示符是 >

  4. list 看一下大概都有那些选项,有数个类似于 State:/Network/Service/EBF2E739-C251-4B13-82AC-43187C1228A6/DNS 对应于当前的网络接入点,至少3G/EDGE一个,WiFi一个,Bluetooth一个

  5. show State:/Network/Service/EBF2E739-C251-4B13-82AC-43187C1228A6/DNS 对于以上几个接入点,看看DNS配置,凭自己的感觉(我承认我不了解iOS,不知道接入点命名规则)找到对应于3G/EDGE的那一条。

  6. d.init

  7. get State:/Network/Service/EBF2E739-C251-4B13-82AC-43187C1228A6/DNS

  8. d.add ServerAddresses * 208.67.222.222 208.67.220.220

  9. set State:/Network/Service/EBF2E739-C251-4B13-82AC-43187C1228A6/DNS

http://www.opendns.com/welcome/看看,看到以下画面,恭喜你,有干净的DNS了。

ios(iPhone,ipad,itouch)使用OpenVPN教程

现在去https://m.facebook.com/试试,我自由了~

ios(iPhone,ipad,itouch)使用OpenVPN教程

标签: 使用教程, iPhone, iPad, openvpn, ios, itouch

评论已关闭