如何穿透windows防火墙

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何穿透windows防火墙相关的知识,希望对你有一定的参考价值。

第一招:SOCKS代理
一般来讲,Boss为防止内部员工偷懒,常常会关闭常见娱乐工具的协议端口,如QQ使用的UDP4000端口,但常常不会关闭SOCKS的1080端口。这样如果你想用的东西本身支持SOCKS代理,那么就好办了,直接使用代理就OK。
SOCKS是个电路级网关,是DavidKoblas在1990年开发的,此后它就一直作为Internet RFC中的开放标准。SOCKS在协议栈的TCP层上运行,它的常用端口是1080。与Winsock不同的是,SOCKS不要求应用程序遵循特定的操作系统平台,比如像Winsock那样遵循Windows。SOCKS代理与应用层代理、HTTP层代理不同,SOCKS代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求),所以SOCKS代理服务器比应用层代理服务器要快得多,正因为SOCKS代理服务器有这样的功能我们才可以通过它来连接Internet。常用到有SOCKS代理有SOCKS4和SOCKS5两种版本,其中SOCKS4代理只支持TCP协议,SOCKS5代理支持TCP和UDP协议,还支持各种身份验证机制、服务器端域名解析等。简单点说,SOCKS4能干的SOCKS5都可以干,反过来就不行了,如QQ只能用SOCKS5代理,而FTP可以用SOCKS4和SOCKS5,因为QQ的数据传输机制是UDP,而FTP用的数据传输机制是TCP。
SOCKS协议就是一种几乎万能的代理协议,它虽然不能理解自己转发的数据内部结构,但它能够忠实地转发数据包,完成协议本来要完成的功能。它与你常见的HTTP代理的不同点在于,HTTP代理通过HTTP协议进行,HTTP代理服务器软件了解通讯包的内部结构,在转发过程中还要对通讯进行某种修改和转换。来看看我是怎么用SOCKS代理来穿透防火墙的吧。
先来看看QQ中我们怎么用SOCKS代理吧。首先在QQ的任务栏通知区的图标处点右键,然后选择系统参数,然后选择网络设置,选中使用“SOCKS5代理服务器”,填入你所用的SOCKS代理地址和端口号(如图1),还可以点测试看看这个SOCKS5代理可用否。确定后,你的QQ就是通过61.136.132.138:1080这个SOCKS5代理上线的,你所有的数据包现在都是发给这个代理服务器,然后再转发出去,这样就可以绕过UDP4000的端口,穿过了防火墙的牢笼。我们还可以用另外一个可以看IP的QQ看看现在你QQ所在的IP(如图2),显示的IP是61.136.132.138。这样还有一个附加功能,就是隐藏了你的真实IP,与陌生人聊天时不用隐身了,他看到的IP也是SOCKS代理服务器的IP地址。
再来看看如何穿透防火墙来使用FTP工具AbsoluteFTP(图3)来从网上下载东西。AbsoluteFTP是一款强大的FTP下载工具,支持SOCKS4和SOCKS5代理,而且全中文界面,如果你所在的局域网被封了21端口导致无法使用FTP下载时,可以用这款软件加SOCKS代理来绕过防火墙实现FTP功能。FTP既可以用SOCKS4,也可以用SOCKS5代理,而不像QQ只能使用SOCKS5代理。
在AbsoluteFTP的选项设置中选中全局配置中的防火墙(图4),然后就可以选择是采用SOCKS4还是SOCKS5代理、是否需要身份认证等,然后填入SOCKS代理服务器和端口以及身份认证所需要的用户名和口令,这样就能穿过防火墙使用FTP了。

第二招:Socks2HTTP配合SocksCap32
第一招中,如果网管只开放80端口,把SOCKS常用的端口关闭,或者你想用的软件本身并不支持SOCKS代理,如Foxmail,或者你就找不到可用的SOCKS代理(网上可用的SOCKS代理数量远远小于可用的HTTP代理数量),这时第一招就不灵了,怎么办?请看第二招:Socks2HTTP配合SocksCap32,二者加起来使用的结果就是只要你有一个可用的HTTP代理,就可使用各种各样的软件来直接绕过防火墙而不管它是否支持SOCKS代理,我们分两种情况来看。
1.防火墙关闭了SOCKS端口,但你要用的软件支持SOCKS代理
这种情形下可以直接用Socks2HTTP来搞定。Socks2HTTP(http://www.totalrc.net/)是一个代理协议转换软件,它能将SOCKS5的请求转化成HTTP请求,然后这种封装在HTTP数据包的SOCKS请求就可以像正常的HTTP请求一样通过防火墙,这样相当于利用远程HTTP代理在本地模拟出一个轻量级的SOCKS代理服务器,这样你就可以像远程SOCKS代理服务器一样使用这个本地代理服务器,比方说像第一招里那样在QQ里使用本地的这个SOCKS5代理。目前Socks2HTTP的最新版本是0.92版,而且网上已经有了汉化的版本,下载后直接运行即可完成安装。Socks2HTTP几乎没有什么用户界面,运行后只是在系统任务栏通知区显示一个图标(如图5所示)。在图标处右键单击,Socks2HTTP就会弹出一个Popup菜单,选中其中的“配置”就会调出Socks2HTTP的配置窗口(如图6),在其中选择使用HTTP代理服务,然后填入你找到的HTTP代理服务器IP地址和端口号,其他几项就用系统默认值即可,然
后点确定。我们用“netstat –a –n”命令来看看本机开放的端口(如图7),就会发现本机多出个1080端口,这个端口就是HTTP2socks模拟出来的在本机上运行的SOCKS代理服务器侦听端口,现在你就拥有一个本地的SOCKS5代理服务器了。
接下来我们看看在QQ等支持SOCKS接口的软件中该如何设置代理服务器。看下面图8,直接将SOCKS5服务器地址添为127.0.0.1,端口为1080,赶快测试一下吧。
2.防火墙关闭了SOCKS端口,并且你想用的软件不支持SOCKS代理
这就稍微麻烦一些,需要另外一个软件SocksCap32的配合支持来穿透防火墙。SocksCap32是NEC公司(http://www.socks.nec.com)开发的,它能使所有Winsock应用都可以SOCKS代理的工具,Cap这个英文的意思是帽子,顾名思义,SocksCap32就是给Winsock的系统调用库加上个“帽子”,这样所有在SocksCap环境下应用产生的Winsock调用都会被SocksCap截获,然后这些请求会自动转化为向特定SOCKS代理的请求,如此,你原先不支持SOCKS代理的应用也可以用了。SocksCap32支持SOCKS4和SOCKS5代理。简而言之,SocksCap的功能就是把Winsocks的调用转化成SOCKS调用,这样让那些不支持SOCKS接口的软件如Telnet工具Cterm(常在BBS上混的都知道,灌水利器,水枪必备!)、Outlook、FoxMail等也具备了SOCKS接口!所有这些软件在与网上的服务器建立连接时都需要调用Winsock接口,通过SocksCap它们都被转化成SOCKS调用,也就可以使用SOCKS代理了。很有意思的是,SocksCap能把SOCKS代理转换成HTTP代理,而Socks2HTTP又能把HTTP代理转换成SOCKS代理,有这这两个软件我们就可以畅游网络世界了。为什么要组合着用呢?因为SocksCap用的是SOCKS代理,而SOCKS代理太少了,而且还分SOCKS4和SOCKS5,而SOCKS4只能做TCP协议代理。那怎么解决呢?有办法,有了Socks2HTTP就解决了。HTTP Proxy网上有的是,只要有了HTTP代理就有了SOCKS代理。因为Socks2HTTP就是把HTTP代理模拟成SOCKS代理,如果再配合刚才提到的Socks2HTTP,就可以穿透防火墙来使用那些本身没有SOCKS接口的软件了,下面我们来解释这个过程!
现在网上已经有了SocksCap的汉化版本
(http://www.ttdown.com/softview.asp?softid=3021),按照提示安装完了即可使用,主界面(图
9)是SocksCap的控制台。
为了更好理解,我把这个过程分成几步:
第一步:首先按照第一部分那样配置好你的Socks2HTTP,填入可用的HTTP代理,启动,然后你就拥有一个本地的SOCKS代理服务器127.0.0.1,端口是1080,现在就可以用这个SOCKS代理来配置你的SocksCap。
第二步:运行SocksCap,如果是第一次运行,系统会自动提示你是否进入设置界面,如果不是第一次运行,可以选择SocksCap中的文件→设置进入设置界面,如图10。
第三步:在SocksCap的设置界面中填入Socks2HTTP模拟出来的本地SOCKS代理127.0.0.1,端口是1080,“协议”处选择“SOCKS版本5(5)”→“由远程决定所有名字”,其余部分,例如直接连接的设置是为了有些内部网址可以直接连接而不用SOCKS代理,日志部分可设置是否产生日志,日志功能能帮助诊断连接失败的原因,我们这里可以对其他部分直接采用默认设置。
第四步:建立“应用程序标识项”。应用程序标识项是在SocksCap中新建的一个快捷方式,这个快捷方式指向你所要用的工具,在SocksCap中启动这个工具就相当于“赋予”了这个工具的SOCKS接口能力。有两种方式来建立这种快捷方式:
1.用鼠标拖动桌面上的Cterm快捷键到SocksCap的空白处,松开鼠标即会弹出菜单,选择“应用程序标识项”系统会自动建立好标识项(见图11),点确定即可。
2.也可以点击“新建”,在弹出的对话框里填入相应内容,点击确定。
第五步:运行程序。在SocksCap控制台中双击刚才新建的Cterm快捷方式就可以直接使用了,比方说我现在想连接bbs.mit.edu(图12),以前因为我在教育网里无法访问国外网站,而且网管封了Telnet的23端口,我无法连上这个BBS,现在通过Socks2HTTP和SocksCap,不仅可以出国,而且可以使用Telnet服务连上MIT的BBS,穿透了防火墙!其他工具,比方说FTP、Outlook等,也一样使用。尤其值得一提的是可以用Outlook收Hotmail的信,如果没有这种办法,对于我们这些处在教育网里的穷人(无出国权限)来讲,只能乖乖用HTTP代理上Hotmail的网站,用WWW方式收信。现在有这个就好了,相当于给Outlook配备了SOCKS接口,直接就可以在Outlook里面收信了。

第三招:HTTPTunel
上面两招也许就够用了,但用上面两招的前提是你要有可用的HTTP代理,从你这里发送出的所有数据包都是经过包装后通过代理转一圈然后再到达它的目的地,这样会带来两个问题:
第一:速度问题,比方说从A发送数据经过代理B到达C,如果没有防火墙,数据是直接从A发到C;现在因为要绕过防火墙,首先必须要将从A发出的数据封装,使之能够绕过防火墙,然后发给代理B,B再将这些数据解封再传给C,从C回来的数据也要走一样的过程。这样一来,且先不考虑把这些数据封装、解封去需要耗费的时间,单是经过C绕这么大一个圈子,速度肯定要大打折扣,所以一般来讲肯定不如直接连接速度快。
第二:过度依赖于代理导致的稳定性问题,网上找到的代理肯定不是很稳定,很多时候容易产生丢包、服务中断的情况。其实我们并不是非要通过代理中转,比方说你哥们在宿舍开了FTP,然后他把精彩的电影放上去,你要看,可是你所在的局域网网管关闭了21的FTP端口,这样你就没法Down了,怎么办?用HTTPTunnel,Tunnel这个英文单词的意思是隧道,通常HTTPTunnel被称之为HTTP暗道,它的原理就是将数据伪装成HTTP的数据形式来穿过防火墙,实际上是在HTTP请求中创建了一个双向的虚拟数据连接来穿透防火墙。说得简单点,就是说在防火墙两边都设立一个转换程序,将原来需要发送或接受的数据包封装成HTTP请求的格式骗过防火墙,所以它不需要别的代理服务器而直接穿透防火墙。HTTPTunnel刚开始时只有Unix版本,现在已经有人把它移植到Window平台上了,它包括两个程序,htc和hts,其中htc是客户端,而hts是服务器端,我们现在来看看我是如何用它们的。比如开了FTP的机器的IP是192.168.1.231,我本地的机器的IP是192.168.1.226,现在我本地因为防火墙的原因无法连接到FTP上,现在用HTTPTunnel的过程如下:
第一步:在我的机器上(192.168.1.226)启动HTTPTunnel客户端。启动MS-DOS的命令行方式,然后执行如图13命令,其中htc是客户端程序,-f参数表示将来自192.168.1.231:80的数据全部转发到本机的8888端口,这个端口可以随便选,只要本机没有占用就可以。
然后我们用Netstat看一下本机现在开放的端口,发现8888端口已在侦听(如图14)。
第二步:在对方机器上启动HTTPTunnel的服务器端,并执行命令“hts -f localhost:21 80”,这个命令的意思是说把本机21端口发出去的数据全部通过80端口中转一下,并且开放80端口作为侦听端口,再用Neststat看一下他的机器,就会发现80端口现在也在侦听状态(如图15)。
第三步:在我的机器上用FTP连接本机的8888端口(图16),现在已经连上对方的机器了,看到Movie没有(图17),嘿嘿,快点去下载吧!
可是,人家看到的怎么是127.0.0.1而不是192.168.1.231的地址?因为我现在是连接本机的8888端口,防火墙肯定不会有反应,因为我没往外发包,当然局域网的防火墙不知道了。现在连接上本机的8888端口以后,FTP的数据包不管是控制信息还是数据信息,都被htc伪装成HTTP数据包然后发过去,在防火墙看来,这都是正常数据,相当于欺骗了防火墙。
需要说明的是,这一招的使用需要其他机器的配合,就是说要在他的机器上启动一个hts,把他所提供的服务,如FTP等重定向到防火墙所允许的80端口上,这样才可以成功绕过防火墙!肯定有人会问,如果对方的机器上本身就有WWW服务,也就是说他的80端口在侦听,这么做会不会冲突?HTTPTunnel的优点就在于,即使他的机器以前80端口开着,现在这么用也不会出现什么问题,正常的Web访问仍然走老路子,重定向的隧道服务也畅通无阻!而且这种方法有人用鼎鼎大名的入侵检测系统Snort来检测,居然没有发现,隐蔽性很强。

不过还有最后一点需要提醒,那就是所有这些招数实际上是利用防火墙配置和系统安全管理上的漏洞,如果碰到一个死心眼的网管,一天到晚在网关那里蹲着,看看有那些漏洞没有添好,或者更牛的用TCPDump来抓包分析,一个数据包一个数据包分析,那只能歇菜了。哎呀,累死了,下课下课……
参考技术A 是主动连接IP地址

TeamViewer是怎样做到穿透NAT和防火墙的

TeamViewer是一个在任何防火墙和NAT代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案。为了连接到另一台计算机,只需要在两台计算机上同时运行TeamViewer即可而不需要进行一个安装的过程。该软件第一次启动在两台计算机上自动生成伙伴ID。只需要输入你的伙伴的ID到TeamViewer,然后就会立即建立起连接。 参考技术A TeamViewer 是一个非常简单、好用的远程工具。是一个在任何防火墙和 NAT 代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案。为了连接到另一台计算机,只需要在两台计算机上同时运行 TeamViewer 即可而不需要进行一个安装的过程。该软件第一次启动在两台计算机上自动生成伙伴 ID。只需要输入你的伙伴的 ID 到 TeamViewer,然后就会立即建立起连接。
TeamViewer的原理其实很简单,假设A B两个站点要远程,B要登录到A,那么首先在A上的TeamViewer软件要先运行,根据自身主机情况生成一个唯一ID,然后向官方网站登录。官网根据这个ID记录A站点的信息,然后站点B上的TeamViewer软件运行,输入A站点的ID号,然后也向官网登录,官网根据这个ID与A站点匹配,于是就建立起一个B到A的直接通道。这样,A站点对于B站点来说就是可见的了。
作为企业信息网维护人员来说,Teamviewer虽然是一个好东西,但是也存在一定的安全隐患,很多木马其实就是远程操控个人PC,修改或窃取私人数据等。就这一点来说,除了隐蔽性之外,木马和Teamviewer没有什么区别;另外,既然要建立VPN通道是通过第三方(Teamviewer官网),这就必须完全信任这个官网才行,如果有人恶意攻击官网,也就可以获取到与之通信的企业内部PC的信息,并且可以利用这些信息来进行攻击。所以,对于成熟的企业来说,还是有必要对这类的小工具进行阻止。
方法很简单,因为Teamviewer登录时要和服务器(官网)通信,所以只要在出口处(代理或防火墙)将这个官网网址禁掉就可以了,TeamViewer登录的网址是master.dyngate.com,只要把这个网址禁掉,Teamviewer就不能用了。

以上是关于如何穿透windows防火墙的主要内容,如果未能解决你的问题,请参考以下文章

TeamViewer是怎样做到穿透NAT和防火墙的

TP-LINK如何设置VPN穿透?

什么样的服务可以穿透防火墙?其主要用途是什么?

openwrt内网穿透导致缓慢

Linux-SSH反向连接(内网穿透,打洞)

VPN在路由器里的穿透设置,路由器怎么设置允许VPN功能