首先,我的wireless router的port forwarding竟然不能改端口,就是说,只能从对外接口的21转到内部某一IP的21,从外面接口的80转到内部某一IP的80。。。让我不得不修改内部多个服务的端口。

正文开始,SSH tunnel还是很有趣的,我的目标是从Office通过家里运行的CCProxy上网,以访问公司不让访问的网站…直接从Wireless Router做端口转发到CCProxy上当然可以,可惜公司的过滤比较强,通过http proxy转发的URL中含有不允许访问的URL的时候,照样被禁止。因此,现在的目标就改为:从Office与家里的另一个Linux box之间建立SSH tunnel,然后通过SSH tunnel去访问CCProxy。其实在Linux上配一个squid应该也可以的,只是我的Linux是mips的,apt-get装上的squid一运行就退出,还是不折腾了。

调通了以后,还是很简单的。首先从公司向外访问只有21和80是通的,因此要从wireless router转发21端口到192.168.1.3的ssh服务上,由于我的变态router,只能修改Linux上的ssh端口。

Linux上的OpenSSH是现成的,只需要把port从22改到21。从Office位置的电脑直接运行putty,在其中的tunnel中配置local port 80, remote address 192.168.1.2:80,然后用putty连接wireless router对外的ip的21端口,登录,tunnel就完成了。

设置Office位置的电脑的浏览器,proxy设成本地的80端口,这样,数据就从本地的80端口,通过ssh通道到达wireless router的外部接口,然后转发到linux上,linux再转发到ccproxy上……由于流经公司网络的数据都经过了ssh加密,这回它没办法了…