Internet上点对点通讯和穿越各类防火墙及网关实现的几点可行性分析

转自:http://hi.baidu.com/helinzi/blog/item/d889650642db267b020881b4.html

 

目 录
1、 需求 3
2、 目前INTERNET网络状况分析 4
3、 针对各种接入方式实现点对点通信的可行性分析 8
4、 平滑地穿越防火墙和NAT还有代理模式的可行性分析 16
5、 总结 18


1、 需求
目前随着计算机和网络的普及,人与人之间的联系变得更加便捷,但是由于Internet一些先天性的不足,比如说IP地址的缺乏,导致了很多本不必要的问 题,虽然IPv6可以很好的解决这一系列问题,但是在目前整个Internet架构是基于IPv4的形势下,要想彻底短期内一下子就摒弃IPv4直接全部 采用IPv6那无疑是天方夜谭,虽然IPv6相比IPv4 有很多先天性的优势,但是实际情况是IPv6已经提出了好多年,但是却一直迟迟没有实际采用,相信短期内也不会采用,可能5-10年或者更多时间内这种情 况不会改变,所以必须针对目前的实际情况对各种问题考虑其他的实现方式,来弥补这些不足,针对IP地址短缺的问题先后出现了相应的解决方案,比如说 NAT,代理等等,但是这同时增加了Internet的复杂性,是的很多问题开始暴露出来。
P2P作为一种新兴的趋势将越来越得到广泛的应用,在此我们不讨论P2P中的P2P运算和网格运算,我们只讨论一个简单点对点的访问的问 题,Internet的复杂性也增加了这个问题的复杂性,如何才能提供一种方案即不会对现有的Internet造成任何影响,不会增加Internet的 复杂性,不用改动任何现有的设施和企业所采用的Internet访问方式,又能够实现我们需要的功能就成为很多公司关注的焦点,本文讨论的范围涵盖了公网 IP对公网IP,公网IP对私网IP, 私网IP对公网IP,私网IP对私网IP,所有的实现均基于Internet,均力求在不改变现有任何配置和状况的前提下平滑地穿越防火墙和NAT还有代 理模式,本文针对这个问题提出一些建设性的建议方向,如有任何异议欢迎来信指正、讨论。

2、 目前Internet网络状况分析
目前企业和个人用户或者运营商接入Internet的方式主要有以下几种:
1、 直接接入Internet骨干网
此种接入主要见于Internet服务提供商和网络运营商,基本全部采用公网IP的方式,通过路由器接入Internet,是最简单的一种方式
2、 frame relay和DDN方式接入
此种方式主要见于一些大中型企业或者政府部门等,实际内部接入Internet的方式等同于下面将要讨论的几种情形
3、MODEM拨号、ISDN、ADSL,CABLE MODEM、公网IP的宽带接入
这些上网方式都能够获得自己的独立的公网地址,该类用户比较多见,多用于个人用户,家庭用户或者企业用户
4、通过NAT方式上网
NAT全称“network address transition”,它是一种局域网地址转换上网方式,它的最大的特点就是对于被代理端是透明,被代理端上的任何网络软件都不用进行额外的设置及工 作。只要能在前一种上网方式上使用的网络软件都能在这种方式上使用。没有互联网IP地址的ADSL用户也属于此类。例如,在使用IE的时候就不用在软件里 设置代理,只需在Windows系统中设置好网关及DNS服务器就可以浏览网页了。

NAT主要分为三类:
a.) 静态NAT
此种类型的NAT的方式是一个公网地址转换成一个局域网地址,是一对一的转换,该局域网地址和公网地址均固定,等同于该机直接拥有一个公网地址,多用于防 火墙后的DMZ区或其他需要对外提供服务的场合,NAT实现中的端口映射属于该类,只不过将某一固定公网地址的某一个端口映射到某一局域网地址的某个端 口,对于针对该固定公网地址的该端口的访问请求均转发到固定的局域网地址的某端口,除此之外任何对该固定公网地址的任何其他端口的访问请求不会到达该固定 的局域网地址
b.) 动态NAT
该种类型的NAT实现有点类似于静态的NAT,也是一个公网地址对应一个局域网地址,也就是说也是一对一的关系,但是静态NAT和动态NAT最大的区别就 在于动态NAT的一对一实现中跟某一个局域网地址对应的公网地址并不是固定的,在该类NAT中NAT转换器内有一个公网地址池,而该类NAT要做的就是从 该地址池中随便取出一个公网地址来跟某一个局域网地址对应,这种对应并非固定,而是动态变化的,所以命名为动态NAT,而且动态NAT中不否认也存在可能 同时有很多局域网地址跟一个公网地址相对应的可能,公网地址的地址池内公网地址的数量相对于局域网地址来说越少,这种可能出现的机率越大,公网地址的地址 池内公网地址的数量相对局域网来说如果大致相当或者要多,这种可能出现的机率就越小,虽然这种可能不会对局域网内的机器访问Internet带来任何问 题,但是不可否认这给从Internet上访问该局域网的机器带来了困难,这种NAT方式主要运用于网络运营商,例如长城宽带等,也有的企业通过该方式让 局域网内的很多机器共享少数的几个公网地址来访问Internet.
c.) NAT实现中的NAPT模式
这种类型的NAT比较多见,NAPT的实现模式是多对一的模式,多个局域网地址同时都对应到一个公网地址,NAPT的实现是一种多对一的实现,它的主要实 现机理就是通过将每个不同的局域网地址分别对应到该公网地址的不同的端口来实现多个局域网地址共享一个公网地址访问Internet的目的,很多的企业内 部网络访问Internet便是采用的这种模式,这种模式很好的解决了IP地址短缺的问题
以上三种NAT针对不同的用户和不同的业务需求分别有不同的应用。
5、HTTP代理上网(应用层代理)
被代理端与代理服务器通过“HTTP代理协议”进行通迅(具体协议内容可查看相关RFC文档),代理服务器只对HTTP协议进行代理,其它非HTTP协议 的对外连接都会因为代理服务器无法解析数据内容而失败。此种代理方式的安全性最高,对于被代理端来说,几乎不可能受到来自互联网的攻击。但也有很大限制, 被代理端只能浏览网页,象收发邮件,主页上传等要用到其它协议而不能实现。(例如:***TP、POP3、FTP等协议)它是“应用层代理”,即只对特定 的协议进行代理,你要使用非特定的协议它根本无法识别。当然还有:***TP代理、FTP代理等也都属于应用层代理。

6、SOCK4/5代理上网(非协议代理)
被代理端与代理服务器通过“SOCK4/5代理协议”进行通迅(具体协议内容可查看相关RFC文档)。主要的机理为被代理端通过代理端访问外部网络时,代 理端接受到被代理端的对外部的访问请求后将以自己的身份对外部网络发起被代理端的这个请求,请求的结果返回给代理端,然后代理端再把这个结果回传给被代理 端,至此一个被代理端对外部的访问过程完毕。SOCK4代理协议可以说是对HTTP代理协议的加强,它不仅是对HTTP协议进行代理,而是对所有向外的连 接进行代理,是没有协议限制的。也就是说,只要你向外连接,它就给你代理,并不管你用的是什么协议,极大的弥补了HTTP代理协议的不足,使得很多在 HTTP代理情况下无法使用的网络软件都可以使用了。(例如:OICQ、MSN等软件 )SOCK5代理协议又对前一版进行了修改,增加了支持UDP代理及身份验证的功能。它不是“协议代理”,所以它会对所有的连接进行代理,而不管用的是什 么协议。

3、 针对各种接入方式实现点对点通信的可行性分析

针对以上各种Internet的接入方式,实现点对点通信主要可以归结为四类方式: 公网IP对公网IP,公网IP对私网IP, 私网IP对公网IP,私网IP对私网IP,下面针对各种情况进行分析.
1. 公网IP对公网IP
这种方式下实现点对点通信很容易,就不再展开讨论
2.私网IP对公网IP
该种方式下要实现点对点通信相对来说也比较容易,因为鉴于socket连接的特性,只要socket连接一点建立,那么数据的返回和通信将不再是问题,此 类方式唯一涉及到的就是网关或者防火墙的穿越问题,主要针对穿越NAT和代理的问题,这个问题将在下一部分专门进行详细的分析。
3.公网IP对私网IP
该种情况下实现起来有些难度,想从Internet上访问一个局域网的机器,不可否认难度比以上两种情况都要复杂一些,但是并非实现起来就没有可能,以下就针对几种解决方案进行可行性分析:
a.) 如果局域网一端网关或防火墙采用VPN模式,那么经过VPN隧道的封装之后,用户毫无疑问可以访问该局域网内的局域网地址,但是该类方式必须要求用户的局 域网一端网关或防火墙采用VPN模式,Internet用户进行VPN网关的拨接建立议后才能够使用,当然也可以将VPN网关的拨接自动化,在软件的初始 化过程中自动建立VPN连接,但此类应用范围太窄,在此不做进一步的详细讨论
b.) 通过端口反弹和隧道封装,前面已经知道通过Internet访问局域网虽然不太容易但是从局域网经过网关访问Internet却很方便,那么我们为什么不逆转一下我们的思路?设计的思路如下:
首先这种情形之下我们必须有一台第三方的服务器这台服务器不管是从Internet上还是从局域网内通过网关均可以很容易地直接访问到,然后连接的双方就 基于这个第三方的服务器交换一些必要的信息,例如每个端点的名称、公网IP地址、局域网内一方局域网的地址和网关的公网地址、上线时间、在线时长,用户所 在地、通话状态、等,连接请求也要递交到这个第三方的服务器,这个第三方服务器就可以维护一份当前在线的用户的信息列表,不管是通过局域网连过来的还是从 Internet上直接连过来的,都会有相应的信息,对于要通信的双方的客户端的功能除了应该能够向第三方服务器提供必需的信息之外还要有一个检测机制, 检测自己的地址是不是公网IP如果是则向服务器发送了必需的信息之后就在给定的端口如80端口监听进入的连接,如果发现自己是一个局域网的地址则程序在向 第三方服务器递交了必须的信息之后通过UDP通告的形式向第三方的服务器通告自己的状态,并察看有没有相关的连接请求,若有则主动连接要求建立点对点通信 的有公网地址的一方,服务器接到要求连接方的连接请求之后就将数据库中连接标志置1,被连接方在通过UDP通告发现有对自己的连接请求则会主动取得要求连 接方的IP等相关信息,并发起对要求连接方的连接,于是从公网地址要求连接私网地址的请求变相转化为没有问题的从私网地址通过网关连接公网地址,而从上面 的分析这种点对点通信是没有问题的。HTTP封装是为了穿透防火墙的需要,将在下面讨论

c.) 通过代理实现两端都跟第三方的代理服务器建立连接,然后由于socket的特性,连接建立以后两边跟这个代理服务器的数据通信均能够流畅的进行,然后两端 的通信通过服务器从中间进行中转,这种方式的缺点就是所有的数据流量都通过第三方服务器中转,虽然点对点的通信没有问题,但是服务器的系统资源开销比较 大,如果点对点通信的用户过多则但服务器很难承受,必须增加代理服务器的台数,可以通过一台中央管理的服务器进行资源调度和分配,采用分布式的服务器集群 来解决
d.) 局域网一边的网关上安装专用的特制软件也可以通过Internet直接访问到局域网内的机器,例如隧道技术或开发自己专用的协议栈,其实VPN的隧道模式 或者传输模式均是该方式的一个特例。这种方式需要改动局域网一方现有的网关,或者是在改网关上加装软件,这样公网地址的一方把数据封装好(封装的数据中有 足够多的信息,比如数据本来的端口呀,局域网的一些信息等,这些需要认真考虑),可能会有几层封装,进行压栈操作,在局域网网关接受到数据后收到标识为公 网一方发的数据包就剥去TCP层,然后一层层地解开,执行出栈操作,然后转发到相应的局域网目标地址,协议栈是网关之上的。有公网地址一方只要通过第三方 服务器得到局域网一方想关必要信息就能够连接到网关之后的局域网机器。这种方式是真正意义上的从公网地址访问局域网地址,但是实现起来代价比较大。
e.) 局域网一方如果是用Liunx或BSD做的网关,则该网关若配制成PPTP或者其他的VPN或者同类模式,则也可以由有公网地址一方直接连接,当然这也需 要通过第三方服务器来得知这边网关和局域网的地址等信息,有公网地址的一端经过接通VPN模式后可以直接访问这一方的局域网地址。
f.) 若局域网这一端网关采用了路由模式,还可以考虑另一种方式,就是修改通讯数据包的源路由,通过指定路由寻址的源路由,在路由寻址的路由信息最后加上一条就 可以让数据通过规定的路由路径到达局域网的机器,不过采用标准的路由上网的网关不是很多。这种方式通过启用IP数据包的源路由选择选项,启用源路由选项 后,源路由信息指定的路由使数据流能够越过默认的路由,IP数据包能够选择它所希望的到达最终目标的路径,并且能够把这种消息公布给没一个路由器。
g.) 如局域网一方采用NAT透明代理方式上网则可以通过另一种方式实现这个点对点的通信,局域网一端先对第三方服务器发起一个socket连接,这个第三方服 务器就得到并收集这局域网一边的socket连接信息,例如socket号,有公网地址的一方通过这个第三方服务器得到局域网一方的socket信息后直 接向局域网一方的网关的该socket发起socket连接,则点对点的通信就可以建立,不过此种方式仅限NAT透明代理模式,而且由于该类连接是非安全 连接,所以不是特别稳定,通过UDP协议往往成功率能够高一些。
h.)
STUN方式的穿越
STUN的全称是Simple Traversalof UDP Through Network Address translators,即UDP对NAT的简单穿越方式。应用程序(即STUN CLIENT)向NAT外的STUN SERVER通过UDP发送请求STUN 消息询问自身的转换后地址,STUN SERVER收到请求消息,产生响应消息,响应消息中携带请求消息的源端口,即STUN CLIENT在NAT上对应的外部端口。然后响应消息通过NAT发送给STUN CLIENT,STUN CLIENT通过响应消息体中的内容得知其在NAT上对应的外部地址,并且将其填入以后呼叫协议的UDP负载中,告知对端,同时还可以在终端注册时直接注 册这个转换后的公有IP地址,这样就解决了H.323/MGCP/SIP穿越NAT的通信建立问题以及作为被叫时的问题。本端的接收地址和端口号为NAT 外的地址和端口号。由于通过STUN协议已在NAT上预先建立媒体流的NAT映射表项,故媒体流可顺利穿越NAT。
需要注意的是,NAT/PAT对于地址转换关系是有一定生命期的,某个地址转换后在一段时间内没有被使用将会被清除,当这个业务流再次出现时,将会建立一 个新的地址转换关系,这就意味着STUN的询问过程以及终端的注册过程都需要再执行一遍才能保证通信的正确。解决这个问题一个比较通行的方案是采用某种方 式保持NAT/PAT的转换关系,例如在NAT/PAT生命期内重复注册一次,比如NAT/PAT的生命期是3分钟,那么就将注册重复周期设置为2分钟。
另外STUN server并非指一个专用的服务器,而是指一种功能、一个协议,我们可以在softswitch或者任何一个需要此功能的服务器上内置此协议。
NAT可以细分为几种操作模式,其中有一种称为symmetric NAT(对称NAT)。所谓对称NAT是指当私网内的用户A访问公网用户B时,NAT为A到B的访问
所形成的地址对应关系只能服务于A与B之间的通信。虽然A已经拥有了公有地址A',但A'并不能为其它用户使用以达到与A通信的目的。这是出于安全性考虑的一种设计。一些功能较强的NAT提供这种可选工作模式。
当NAT采用这种对称模式工作时,STUN的方案就会出现问题。
假 如我们在softswitch上提供STUN server功能,终端A通过STUN可以获得NAT为终端A与softswitch之间通信分配的地址A',并将这个地址注册在softswitch 上,当一个公网上的终端B呼叫终端A时,A'和B通过softswitch完成呼叫建立过程。当B试图向A'发送媒体流时,问题就出现了。因为对称NAT 只允许从softswitch发送数据给地址A',从B发送的媒体流将被丢弃。所以STUN无法应用于工作在对称模式的NAT
STUN协议最大的优点是无需现有NAT/FW设备做任何改动,同时STUN方式可在多个NAT串联的网络环境中使用
STUN的局限性在于STUN并不适合支持TCP连接的穿越,同时STUN方式不支持对对称NAT(Symmetric NAT)
i.)
TURN又称SPAN(Simple Protocol for Augmenting NATs)方式

TURN方式解决NAT问题的思路与STUN相似,也是基于私网接入用户通过某种机制预先得到其私有地址对应在公网的地址(STUN方式得到的地址为出口 NAT上的地址,TURN方式得到地址为TURNServer上的地址),然后在报文负载中所描述的地址信息直接填写该公网地址的方式,实际应用原理也是 一样的。
TURN的全称为Traversal Using RelayNAT,即通过Relay方式穿越NAT,TURN应用模型通过分配TURNServer的地址和端口作为客户端对外的接受地址和端口,即私网 用户发出的报文都要经过TURNServer进行Relay转发,这种方式应用模型除了具有STUN方式的优点外,还解决了STUN应用无法穿透对称 NAT(Symmetric NAT)以及类似的Firewall设备的缺陷,即无论企业网/驻地网出口为哪种类型的NAT/FW,都可以实现NAT的穿透,同时TURN支持基于 TCP的应用,如H323协议。此外TURN Server控制分配地址和端口,能分配RTP/RTCP地址对(RTCP端口号为RTP端口号加1)作为本端客户的接受地址,避免了STUN应用模型下 出口NAT对RTP/RTCP地址端口号的任意分配,使得客户端无法收到对端发过来的RTCP报文(对端发RTCP报文时,目的端口号缺省按RTP端口号 加1发送)
TURN的局限性在于所有报文都必须经过TURNServer转发,增大了包的延迟和丢包的可能性。
j.)
UPnP(Universal Plug and Play)
UPnP技术对即插即用进行了扩展,简化了家庭或企业中智能设备的联网过程。结合了UPnP技术的设备以物理形式连接到网络中之后,它们可以通过网络自动彼此连接在一起,而且连接过程无需用户的参与和使用中央服务器。
UPnP规范基于TCP/IP协议和针对设备彼此间通讯而制订的其它Internet协议。这就是它之所以被称作“通用”的原因所在——UPnP技术不依 赖于特定的设备驱动程序,而是使用标准的协议。UPnP设备可以自动配置网络地址,宣布它们在某个网络子网的存在以及互相交换对设备和服务的描述。基于 Windows XP的计算机可以充当一个UPnP控制点,通过程序界面对设备进行发现和控制。 NAT穿越技术允许网络应用程序对它们是否位于一个具有UPnP能力的NAT设备之后进行检测。然后,这些程序将获得共享的公有IP地址,并且配置端口映 射将来自NAT外部端口的数据包转发到应用程序使用的内部端口上——所有这一切都是自动完成的,用户无需手动映射端口或者进行其它工作。NAT穿越技术允 许网络设备或者点对点应用程序通过动态开启和闭合与外部服务之间的通信端口穿过NAT网关与外界通信
4. 私网地址对私网地址
这种情况下是最复杂的情况,两个异地的局域网地址直接通过Internet建立连接,这个问题确实有相当的困难,大概有以下几种解决思路:
a.) 如果两端局域网网关或防火墙都采用了VPN,这种VPN网关对VPN网关的最大优势就是经过VPN隧道的封装之后,两端局域网虚拟成为一个局域网,用户毫 无疑问可以访问到对方,但是该类方式必须要求用户的局域网网关或防火墙采用VPN网关对VPN网关模式,此类应用范围比较窄,在此不做进一步的详细讨论。
b.) 通过代理实现两端都跟第三方的代理服务器建立连接,然后由于socket的特性,连接建立以后两边跟这个代理服务器的数据通信均能够流畅的进行,然后两端 的通信通过服务器从中间进行中转,这种方式的缺点就是所有的数据流量都通过第三方服务器中转,虽然点对点的通信没有问题,但是服务器的系统资源开销比较 大,如果点对点通信的用户过多则但服务器很难承受,必须增加代理服务器的台数,可以通过一台中央管理的服务器进行资源调度和分配,采用分布式的服务器集群 来解决
c.) 两端局域网的网关上安装专用的特制软件也可以实现异地局域网之间的通信,例如隧道技术或开发自己专用的协议栈,其实VPN的隧道模式或者传输模式均是该方 式的一个特例。这种方式需要改造局域网现有的网关,或者是在该网关上加装软件,这样连接请求一方把数据发出,数据到达网关时由网关进行封装(封装的数据中 有足够多的信息,比如数据本来的端口呀,局域网的一些信息等,这些需要认真考虑),可能会有几层封装,进行压栈操作,在另一方局域网网关接受到数据后收到 标识为另外一方发的数据包就剥去TCP层,然后一层层地解开,执行出栈操作,然后转发到相应的局域网目标地址,协议栈是网关之上的。发出连接请求的一方只 要通过第三方服务器得到另一方相关必要信息就能够连接到网关之后的局域网机器。这种方式需要改动目前网关的配置,或者是说在目前网关上加装自己的软件。
d.) 两方如果是用Liunx或BSD做的网关,则两个网关若配制成GRE或IptoIP等隧道模式,则也可以直接相互访问,异地互连的任务由两个网关来完成 了。这种隧道方式通过使用互联网的基础设施(这里的两个网关)在网络终端之间传递数据,该数据可以为不同协议的数据帧或包,隧道协议将其重新封装然后通过 隧道发送,新的帧头提供了路由信息。
e.) 若两个局域网网关均采用了路由模式,还可以考虑另一种方式,就是修改通讯数据包的源路由,通过指定路由寻址的源路由,在路由寻址的路由信息最后和最初加上 两条就可以让数据通过规定的路由路径到达局域网的机器,不过两端网关均采用标准的路由上网的情况不是很多。这种方式通过启用IP数据包的源路由选择选项, 启用源路由选项后,源路由信息指定的路由使数据流能够越过默认的路由,IP数据包能够选择它所希望的到达最终目标的路径,并且能够把这种消息公布给没一个 路由器。
f.) 如果两方均采用NAT透明代理方式上网则可以通过另一种方式实现这个点对点的通信,两端先对第三方服务器发起一个socket连接,这个第三方服务器就得 到并收集这所有的socket连接信息,例如socket号等,然后若要有两方要建立连接,怎这个第三方服务器就把发起连接方对方的socket信息给 它,由要求连接方用原来的socket信息重新建立socket连接,则点对点的通信就可以建立,不过此种方式仅限NAT透明代理模式,而且由于该类连接 是非安全连接,所以不是特别稳定,通过UDP协议往往成功率能够高一些。
g.)其他方式同公网对私网的h.),i.),j.),通过STUN,TURN和Upnp技术进行穿越
4、 平滑地穿越防火墙和NAT还有代理模式的可行性分析
由于IP地址的严重不足和安全问题的日益突出,越来越多的企业采用了防火墙或者NAT和代理模式来访问Internet,这为很多基于网络的应用带来了困 难,如何平滑的穿越现在现有的各类防火墙和NAT成为很多人关心的问题。下面就穿越防火墙的问题题出一些建设性的建议,并就其可行性进行分析:
1.) 采用“端口反弹”与“HTTP 隧道技术”:
端口反弹就是由防火墙或网关内一端主动连接外面的一端,这种方式可以从互联网上访问到局域网里通过 NAT 代理(透明代理)上网的电脑,并且可以穿过防火墙(包括:包过滤型及代理型防火墙)。
HTTP隧道技术就是把所有要传送的数据全部封装到 HTTP 协议里进行传送,因此从互联网上可以访问到局域网里通过 HTTP、SOCKS4/5 代理上网的电脑,而且也不会有什么防火墙会拦截,因为所有的防火墙和网关都会认为对外界80端口的访问是合法请求。
所以采用这两种方式结合后只要能浏览网页的电脑,都能通过Internet访问。包括拨号上网、ISDN、ADSL、DDN、Cable Modem、NAT 透明代理、HTTP 的 GET 型代理、HTTP 的 CONNECT 型代理、SOCKS4 代理、SOCKS4A 代理、SOCKS5 代理。

2.)通过隧道模式传输,隧道方式在网络终端之间传递数据,该数据可以为不同协议的数据帧或包,隧道协议将其重新封装然后通过隧道发送,新的帧头提供路由信息,常见的如VPN网关对VPN网关等方式。
3.) 通过第三方的socket5代理服务器穿透防火墙

4.) 通过某一固定端口传输,某些应用,例如H.323的应用会通过动态分配的端口来进行数据的传输,这无疑给穿越防火墙和网关带来了麻烦,但是又不能能够在防火墙上打开所有的高端端口,此时将所有的通信都封装到一个固定的端口然后再进行传输就非常有必要。

5.) 通过http协议进行封装,并采用80端口进行传输,这种方式是最有效的,这种http隧道的封装方式跟普通的上网请求没有什么不同,但是不管那种类型的 防火墙或网关都会允许对外界80端口的访问,而且通信内容还是通过http协议封装的,到了另一端后再进行剥离,恢复出原来的数据。
6.) 在防火墙没有阻塞的高位TCP端口或者防火墙开放的端口建立连接.例如可以放在***TP端口, 大多数防火墙允许e-mail流量通行,利用这种特性可以通过***TP之类的端口穿透防火墙。
7.) 大多防火墙设置成允许类似DNS的UDP报文的通行. 可以利用这个弱点通过DNS的UDP端口封装和传输报文,穿透防火墙。
8.) Ping是通过发送和接受ICMP包检测机器活动状态的通用办法之一. 许多防火墙允许外界ping它内部的机器. 可以将数据封装进Ping的ICMP包, 在ping的机器间形成一个通道.通过这种方式也可以穿透防火墙。
9.)通过启用IP数据包的源路由选择选项,启用源路由选项后,源路由信息指定的路由使数据流能够越过默认的路由,IP数据包能够选择它所希望的到达最终目标的路径,并且能够把这种消息公布给没一个路由器,这种包就可能绕过防火墙。
10.) 通过将通信数据分割成小的TCP碎片,绕过防火墙的封杀,穿透防火墙。
5、 总结
以上仅对点对点通讯的实现和穿越网关和防火墙的一些想法进行分析,不足和遗漏之处请指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章