用SSH tunnel,通过iphone的EDGE让PC上网

  修改掉OpenSSH对DNS CNAME的解析Bug了,现在很爽了!
修改后的sshd放在附件里头

注意: 用iphone的EDGE上网前,请仔细斟酌EDGE带来的费用!
[ 声明 ] 您阅读此文章,及按此文章进行任何操作所带来的任何结果,与本人无关,继续阅读说明您已明确了解
并同意此项声明。


iphone的EDGE速度尚可,有些时候,我们可能需要通过iphone的EDGE,将我们的 笔记本接入Internet

已知的办法有3个
1) SSH Tunneling
2) Tiny Proxy
3) Srelay( Socket Server)

其中,TinyProxy仅能提供HTTP/HTTPS代理服务,有些应用 程序你是无法使用此代理的,而且其表现有时显得相当诡异
Srelay尚可一用,就是相当于在iPhone上开了一个SOCK5的代理,不过个人不太喜欢Srelay
使用SSH Tunneling,如果你的iphone已经安装了OpenSSH,则不需要在iPhone上安装额外的软件,而且,OpenSSH
的开关就是代理的开关,你用Services也好,iToggle也好,不用再去考虑开关代理。OpenSSH的稳定性也是经过
Unix界多年的运行认可的。
当然你从installer或者其他什么地方搞到的OpenSSH,都是 含有一个DNS CNAME解析BUG的,我们稍后说明并解决
这个问题

使用SSH Tunneling:
适用条件,已安装SSH的iphone
适用人群,对技术有一定了解的用户,不太适合普通用户
已知问题,如果目标地址的DNS属于CNAME别名,则必须首先在iPhone上访问此地址,或者在PC上先访问
该地址的实际域名。( 该问题已经解决)

原理
PC软件 <=> PC SSH本地代理,相当于Sock5 服务器 <=> WIFI <=> Iphone SSH服务 <=> EDGE <=> internet

防止锁屏网络中断
运行之前,为了防止iphone关屏幕的时候 自动关闭网络连接,你可以用两种方式来做
A. iphone不在充电/外接 电源状态,请关闭屏幕自动锁定
B. 如果iphone在充电/外接电源状态,那么,如果你接通了SSH Tunneling,基本上iphone的网络连接不会
   因为屏幕锁定而中断
   前提条件是:
   B.1. 没有安装SummerBoard
   B.2. 已经安装了SummerBoard,也安装了JohnTool
如果还是出现Wifi中断,请在SSH Tunneling的同时,保持一个SSH Shell登录到iphone
btw, 痛恨SummerBoard,早就手工删掉它了,哈哈

安装使用方法:
1. PC端需要有个能进行SSH Tunneling的软件,可以选择 Putty, 或者命令行版本的 plink,我用的是
    plink, http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

2. 在PC设置一个Ad hoc的无线网络,即计算机到计算机的无线网络
    强烈建议设置固定的IP,否则你需要配置PC为DHCP服务器

3. 在iphone上打开无线,与PC建立无线连接,设置iphone的无线IP,不要设置网关
    如果发现EDGE图标变成了WIFI图标,那么说明操作失败,iphone错误的认为该无线连接可以用于
    Internet,如果出现此问题,请从iphone上断开连接,重复连接一次,此时,iphone显示E不显示wifi
    图标但是依然可以连接wifi

4. 现在我们建立了PC<->iphone的无线连接,确认可以在PC上ping通iphone

5. 打开iphone的SSH服务

6. 更换/usr/sbin/sshd为没有CNAME BUG的版本,见附件

   首先复制备份 /usr/sbin/sshd 为 /usr/sbin/sshd.old,这样即使有问题我们还可以在iphone上命令行修复
   把新的 sshd 上传到 /usr/sbin/,修改其属性为755

6. 在PC上运行plink,命令行为
    plink -N -D 9999 root@youriphoneIP
    其中 -N 表示不要打开一个SSH Shell,-D表示打开PC本机9999端口,youriphoneIP是你的iphone的IP

7. 现在可以设置firefox浏览器走 SOCK5 代理,代理地址 127.0.0.1,端口9999
    如果其他程序需要上网,一样要设置SOCK5代理,不支持使用SOCK5代理的程序可以使用SocksCap软件


这种方式我用了好几天了,原有的OpenSSH DNS CNAME问题比较讨厌,今天重新编译了一个没有这个问题的OpenSSH
现在很爽了,20元全包不限流量的动感地带就是好,哈哈
注意: 用iphone的EDGE上网前,请仔细斟酌EDGE带来的费用!

附:自行编译OpenSSH的一点Tips,非专业人员请直接无视
我用的是Cygwin的arm-apple-darwin ToolChain,
./configure --host=arm-apple-darwin CC=/usr/local/bin/arm-apple-darwin-gcc --prefix=/usr --sysconfdir=/etc
修改 channels.c 的 connect_to() 函数,并且把 openbds-compact 下面的 fake-rfc2553.c 里头的freeaddrinfo()
malloc_ai() getaddrinfo() 函数扔到这个connect_to()函数前,修改他们的名字为myXXX并去掉#ifndef
然后再 connect_to() 里头引用 myXXXXX
最后编译完成后,运行这个
/usr/local/bin/arm-apple-darwin-gcc -o sshd sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o /
auth-rh-rsa.o sshpty.o sshlogin.o servconf.o serverloop.o auth.o auth1.o auth2.o auth-options.o /
session.o auth-chall.o auth2-chall.o groupaccess.o auth-skey.o auth-bsdauth.o auth2-hostbased.o /
auth2-kbdint.o auth2-none.o auth2-passwd.o auth2-pubkey.o monitor_mm.o monitor.o monitor_wrap.o /
kexdhs.o kexgexs.o auth-krb5.o auth2-gss.o gss-serv.o gss-serv-krb5.o loginrec.o auth-pam.o /
auth-shadow.o auth-sia.o md5crypt.o audit.o audit-bsm.o platform.o /
-L. -Lopenbsd-compat/ -lresolv -lssh -lopenbsd-compat  -lcrypto -lz
用libresolv.a里头没有问题的gethostbyname()强行链接进去
这个没有问题的libresolv.a可以从 http://wickedpsyched.net/iphone/dns获得
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值