【IT168 专稿】在之前的文章中笔者依次为各位介绍了如何通过免费VPN以及协议转换等方式解决企业内网中存在的速度瓶颈以及应用限制,今天我们再为各位IT168网络频道的读者介绍一种方法,三顾茅庐用DD-WRT突破网络限制。
一,DD-WRT固件的传统应用:
一般来说DD-WRT固件都是针对无线路由器进行刷新的,很多家庭用户和中小企业都将购买来的无线路由器进行了刷新DD-WRT固件的操作,通过刷新DD-WRT固件可以让我们更加淋漓尽致的发挥无线路由器自身性能,在一些额外功能方面DD-WRT固件比无线设备自身携带的固件表现更好,而且在诸如QOS以及路由策略等方面的设置可以更好的为网络和无线应用服务。
二,用DD-WRT突破网络限制:
然而今天笔者为各位介绍的则不是针对DD-WRT的强大功能来说的,我们要利用刷新了DD-WRT固件的无线路由器来建立一个传输通道,从而让我们的内网应用可以有效的突破网络限制。
(1)用DD-WRT突破网络限制的用武之地:
首先我们要确实了解什么情况下我们能够通过DD-WRT固件来突破内网网络限制,大多数情况下企业内网为了限制员工网络应用会在防火墙上封锁非正常端口,例如只保留80端口作为网页浏览,而诸如3389,21等端口都进行了封杀。另外公司为了提高安全性会在防火墙上通过关键字进行过滤,诸如BBS论坛字眼以及GAME游戏字样的字符串网络地址都禁止访问。
如果我们遇到的问题正是由以上种种设置造成的话,那么我们就可以通过DD-WRT来突破网络限制,通过DD-WRT建立一个代理,突破公司网络封锁。而传统的解决方式是利用一台电脑作代理,性能占用比较大而且单独设备做代理比较费电。
(2)用DD-WRT突破网络限制的原理:
我们通过DD-WRT突破网络应用,端口封锁以及关键字过滤等网络限制的原理是利用SSH的tunnel功能,将本机的数据通过ssh转发到远程主机,并接收ssh转发的远程主机回应的数据,这种通过ssh加密并且做代理的方法在实际使用中效果很好,本文针对特殊端口(80)的ssh作一个说明。毕竟80端口在很多防火墙上都是容许访问的,不会出现封锁的麻烦。(如图1)
(3)用DD-WRT突破网络限制的步骤:
下面我们就来看看如何通过DD-WRT突破网络限制。首先我们需要在家中具备一台运行了DD-WRT固件的无线路由器,如果没有可以参考我们之前介绍的刷新DD-WRT固件的文章来实现。笔者以DD-WRT v24版本为例进行介绍。
第一步:首先打开DD-WRT的ssh功能(DD-WRT是用dropbear这个ssh服务端作为ssh daemon服务),方法是登陆路由web管理界面->服务(Services)->找到Secure Shell(安全外壳)->选择启用->密码登录也选择启用->端口填入80。
第二步:通过管理->找到“远程管理”->启用ssh管理->ssh端口填入80来允许从Internet进行ssh登录(第一步只是开启了内网的ssh登录)。(如图2)
第三步:如果你不是使用80作为ssh端口,那么可以跳过此步设置。由于web管理界面是要用到80端口作为http服务的,所以刚才设置好ssh端口,重启后端口冲突,会导致ssh服务(dropbear进程)启动失败,因此我们必须把web管理界面的http服务端口改到其它端口。具体命令为通过管理->选择下面一排的"诊断"(Diagnose)标签,在"命令"中粘贴以下命令。之后点击"保存启动命令",再重启就可以了。
killall httpd
cd /www
httpd -p 81 -h /www
dropbear -b /tmp/loginprompt -r /tmp/root/.ssh/ssh_host_rsa_key -d /tmp/root/.ssh/ssh_host_dss_key -p 80
小提示:
以上代码实现的原理就是让路由在启动后自动先杀掉httpd服务,再把该服务重新启动到81端口,最后再启动ssh服务(dropbear)到80端口。当然我们还可以telnet到路由,用nvram命令更改httpd以及ssh服务的端口,然后输入以下指令来实现。
# telnet 192.168.1.1
# nvram set rc_startup="
> killall httpd
> cd /www
> httpd -p 81 -h /www
> dropbear -b /tmp/loginprompt -r /tmp/root/.ssh/ssh_host_rsa_key -d /tmp/root/.ssh/ssh_host_dss_key -p 80
> "
# nvram commit
输入第二行(nvram set rc_startup=")后,提示符会从#变成>,这时候再输入需要自动执行的命令,最后输入双引号回车结束,而nvram commit是把刚才需要执行的命令保存到路由的flash,这样掉电重启才有用另外可以用nvram get rc_startup查看输入的命令是否正确)
第四步:设置一个动态域名,DD-WRT支持3322的动态域名,方法是设置->DDNS(动态DNS)->DDNS服务中选择3322.org,用户名密码和主机名可以到www.3322.org免费注册->类型选择动态(主机名填你申请好的完整域名:xxxx.3322.org)。
第五步:路由设置已经完成,下面在你公司的电脑上,需要用ssh登录你的路由,然后在本机开一个代理供你自己使用(以翻越公司的防火墙)。我们可以通过两个软件来实现连接功能。一个是MyEntunnel(http://nemesis2.qx.net/software-myentunnel.php),另一个就是putty了。由于篇幅关系我们主要讲解putty的使用。填入路由动态域名和端口,设置本地代理的端口,注意要选择Dynamic,端口一样随便自己喜欢,上两步设置好后选择open,填入用户名密码登录后即可。(如图3)
小提示:
putty不可以最小化到托盘,可以用"Minimize To Tray"这个软件将窗口最小化到右下角任务托盘。
第六步:设置IE或者其它浏览器的代理,该代理为socks5代理,以IE6为例打开IE浏览器找到菜单中的“Internet选项->连接->局域网设置->勾上为LAN使用代理服务器->高级”。在IE设置好后,MyIE,GreenBrowser可以选择使用IE代理,或者直接添加一个socks5代理。这样不管公司封锁端口,如何封锁关键字,只要开放80端口,我们都能像在家里上网一样,访问互联网了。有机会你可以把路由放到国外,这样就能突破更多的网络限制了。
(4)其他方法来实现突破网络限制:
通过DD-WRT突破网络限制的方法还很多,我们完全可以将dd-wrt中的jfs去掉,利用空出来的空间放一个tinyproxy,浏览器上就可以直接设置代理,不用再装其它软件了。不过这样的方法建立的代理只是普通代理,没有加密,如果碰到上文说到的第三种情况,公司封了关键字,这种代理就没办法了。
(5)触类旁通TOMATO固件也能行:
当然不光是DD-WRT固件有此突破限制功能,我们如果刷新的固件是tomato也能实现,在TOMATO固件中也有SSH Daemon服务,我们可以通过管理界面的administration>admin access找到。
三,总结:
实际上本文介绍的方法是在家中建立一个代理,然后在单位连接此代理,让单位的网络应用可以和家中一样没有限制没有封锁,毕竟传统意义上单位防火墙上进行了限制我们的员工计算机网络访问只能够浏览80端口的网站了,而通过此方法我们可以化繁为简让80端口也可以更好的为我们服务,在单位与家中建立一条网络应用网络传输的城际列车。