(计算机软件与理论专业论文)利用虚拟网卡实现voip应用的防火墙穿越.pdf_第1页
(计算机软件与理论专业论文)利用虚拟网卡实现voip应用的防火墙穿越.pdf_第2页
(计算机软件与理论专业论文)利用虚拟网卡实现voip应用的防火墙穿越.pdf_第3页
(计算机软件与理论专业论文)利用虚拟网卡实现voip应用的防火墙穿越.pdf_第4页
(计算机软件与理论专业论文)利用虚拟网卡实现voip应用的防火墙穿越.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

(计算机软件与理论专业论文)利用虚拟网卡实现voip应用的防火墙穿越.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 n a t 和防火墙问题是s i p 应用中需要解决的问题,n a t 和防火墙会造成s i p 寻址不成功或者通信不顺畅,解决这个问题的办法是n a t 和防火墙穿越。 目前n a t 穿越的方法主要有两种:一种是通过升级n a t 服务器实现n a t 穿 越,另外一种是修改客户端实现n a t 穿越。现有的防火墙穿越的方法实质只有一 种:通过包伪装的欺骗方式实现防火墙穿越。 现有的n a t 和防火墙穿越方案的主要特点是:它需要修改n a t 服务器,或者 需要修改客户端,这种方式称为不透明的n a t 和防火墙穿越方式。本文提出的n a t 和防火墙穿越方案:利用虚拟网卡实现防火墙和n a t 的穿越,是一种透明的n a t 和防火墙穿越方案,这种方案不需要修改n a t 服务器和通信的客户端。 利用虚拟网卡实现n a t 和防火墙的穿越的技术核心有两点:虚拟网卡,虚拟 网卡通信协议。通过虚拟网卡来实现透明性,通过虚拟网卡通信协议来构建整个 虚拟网络,通过这个网络来实现n a t 和防火墙的穿越。 文章主要从以下几个方面来阐述这个方案: 第一章防火墙和n a t 问题的提出,论述了问题的产生背景- - s i p 应用中的防 火墙和n a t ,并引出防火墙和n a t 穿越问题,并且研究了防火墙和n a t 的分类和现 有的防火墙和n a t 解决方案。 第二章虚拟网卡穿越防火墙方案的设计,分析了原型系统0 p e n v p n ,并且给出 了网络环境的量化指标和通信信道的概念,并在这些理论的基础上提出和详细论 述了虚拟网卡私有协议。 第三章虚拟网卡穿越防火墙的实现,主要包括三部分内容:虚拟网卡的实现, 客户端的实现,服务器端的实现。 【关键字】n a t 穿越防火墙穿越虚拟网卡s i p 利j | j 虚拟网卡实现v o l p 应用的防火墙穿越 a b s t r a c t u s i n g v i r t u a ln e t w o r kc a r dt oi m p l e m e n tf i r e w a l la n dn a tt r a v e r s a l o fv o l p a p p l i c a t i o n s h iw e i x i n g d i r e c t e db yl i nh ul e iw e i m i n g t h en a ta n df i r e w a l la r et h ep r o b l e m st h a tm u s tb es o l v e di nt h es i pa p p l i c a t i o n n a ta n df i r e w a l lw o u l dc a u s es i pa d d r e s sf a i l u r eo rb a dq u a l i t yo fc o m m u n i c a t i o n ,t h e s o l u t i o ni sn a tt r a v e r s a la n df i r e w a l lt r a v e r s a l t h e r ea r et w om a i nw a y st os o l v en a tt r a v e r s a lp r o b l e m :t h eo n ei st ou p d a t en a t s e r v e r , t h eo t h e ri st om o d i f yt h ec l i e n t t h es o l u t i o n st of i r e w a l lt r a v e r s a lh a v es a m e p o i n t :p a c k e t sd e c e p t i o nt of i r e w a l lt r a v e r s a l e x i s t i n gs o l u t i o n st on a ta n df i r e w a l lt r a v e r s a lh a v et h es a m ed r a w b a c k :t h e y h a v et om o d i f ys e r v e ro rc l i e n t ,s ot h e ya r en a m e dn o t - t r a n s p a r e n t - t r a v e r s a l t h et h e s i s a d d r e s s e san e wt r a v e r s a ls o l u t i o n :n a ta n df i r e w a l lt r a v e r s a lb yv i r t u a ln e t w o r kc a r d , a n di ti st r a n s p a r e n t - t r a v e r s a lb e c a u s ey o un e e dn o tc h a n g ea n y t h i n g t h e r ea r et w oc o r et e c h n o l o g i e so fn a ta n df i r e w a l lt r a v e r s a lb yv i r t u a ln e t w o r k c a r d :t h ev i r t u a ln e t w o r kc a r da n dt h ev i r t u a ln e t w o r kc a r dp r o t o c 0 1 t oa c h i e v e t r a n s p a r e n t - t r a v e r s a li sb yt h ev i r t u a ln e t w o r ka n dt oa c h i e v en a t a n df i r e w a l lt r a v e r s a l i sb yt h ev i r t u a ln e t w o r kp r o t o c 0 1 t h et h e s i sd i s c u s s e st h es o l u t i o nf r o mf o l l o w i n ga s p e c t s : c h a p t e ri i sa b o u tt h ef i r e w a l la n dn a ti s s u e s :d i s c u s s e dt h eb a c k g r o u n d :t h e f i r o w a l la n dn a t , t h e ns t u d i e st h ec l a s s i f i c a t i o no ft h ef i r e w a l la n dn a t c h a p t e ri i i sa b o u tt h ed e s i g no ft h ef i r e w a l la n dn a tt r a v e r s a l :a n a l y z e st h e p r o t o t y p es y s t e m :o p e n v p n ,a n dg i v e st h ed e f i n i t i o no fn e t w o r ke n v i r o n m e n tv a l u e a n dc o n c e p t i o no ft h ec o m m u n i c a t i o nc h a n n e l s ,a l s od i s c u s s e st h ev i r t u a ln e t w o r k p r o t o c 0 1 c h a p t e ri i ii s a b o u tt h ei m p l e m e n to ft h ef i r e w a l la n dn a tt r a v e r s a l :m a i n l y d i s c u s s e st h ei m p l e m e n to ft h ev i r t u a ln e t w o r kc a r d , c l i e n ts o f t w a r ea n ds e r v e rs o f t w a r e k e y w o r d s n a t t r a v e r s a lf i r e w a l lt r a v e r s a lv i r t u a ln e t w o r kc a r ds i p 引言 v o l p 应用最初的意思是v o i c eo v e ri p ,即在i p 网上传输语音数据,现在随着 应用的不断扩展,v o l p 已经不仅仅是在i p 上传输语音数据,而是包括语音、视频、 文字一体的数据传输方式。 v o i p 从提出以来就得到了学术界和工业界的关注,因为它有很大的应用价值: 1 可以大大降低通信的费用 2 可以提供更加广泛的应用,并由此产生更多的增值业务 但是在v o l p 应用中也碰到了一些问题,其中典型的问题就是n a t m 2 1 3 1 和防火墙巧1 问题。 目前防火墙和n a t 应用往往是结合在一起的6 1 ,因此不能孤立的看待防火墙 和n a t 穿越问题,而应该在一个方案中同时解决防火墙和n a t 问题。 现有的防火墙和n a t 穿越方案巧1 大致上可以分为:服务器解决方案和客户端 解决方案。服务器解决方案的思路是:通过对防火墙和n a t 的控制来实现防火墙 和n a t 穿越,这种方案需要服务器特殊的支持,而现有的n a t 服务器和防火墙产 品很多,并不是所有的产品都支持,而且还有一个标准化的问题;客户端解决方 案的思路是:客户端通过某种侦测方式获取自身的网络环境,然后选取适当的方 案穿越防火墙和n a t 。 从适应性来讲,客户端解决方案要大大优于服务器端解决方案,客户端软件 很容易做到智能化,但是对于服务器而言,同时兼顾智能化和高效率是很难的。 从现有的防火墙和n a t 穿越的研究热点也可以看出,人们更加关注客户端解决方 案。 现有的客户端解决方案,如:s t u n 咖7 1 和t u r n 嘲8 1 等,都是应用相关的, 它们是某个应用的一个模块,而我们的设想是提供一个虚拟化的网络,在这个网 络环境中的所有应用都不需要考虑防火墙和n a t ,它们对于应用而言是透明的。 在这个设想的基础上我们提出了虚拟网卡9 穿越防火墙和n a t 的方案。 虚拟网卡穿越防火墙和n a t 方案的核心有两个:虚拟网卡,虚拟网卡通信协 议。我们通过虚拟网卡实现应用透明,而通过虚拟网卡通信协议来实现这个虚拟 化的网络环境。 类似的方案已经有人提出并已实现,比较成熟的系统有:o p e n v p n1 1 0 1 , 我们 的原型系统就是o p e n v p n 系统,这个系统实现了虚拟网卡,但是它缺乏通信协议, 通过o p e n v p n 构建的虚拟网络环境不能实现跨服务器的通信,因此只能够构建比 利用虚拟网卡实现v o l p 应用的防火墙穿越 较小的应用,我们的设计目的是克服o p e n v p n 的这个缺点。 本文涉及到w i n d o w s 下和l i n u x 下的驱动程序技术,而且涉及到了协议栈的 设计和实现,因此技术难度很大。本课题来源于我们网络与通信实验室承担的辽 宁省科技攻关项目“s i p 技术研究 。 2 堡二望堕丛堡! l 蔓! ! 塑丝丝堡出 第一章防火墙和n a t 问题的提出 1 1s i p 应用中的n a t 从铷议本身米说,s i p ”川m 是一个端到端的在i p 网络上进行多媒体通信 的应用层控制协议。从原理上来看,仅仅使用s i p 就可以完全支持西个s i p 终端之 间通过软交换网络进行直接的通信,也就是说,整个系统从媒体接八到应用控制 的各层都可以通过s i p 的控制来完成。如图l _ 1 所示: 圈l 1 基于s i p 构端划端呼叫 这是一个比较简单的s i p 端到端口f 叫实现,整个系统都由统一的s i p 信令来控 制大部分解决方案或者设备提供商在具体基于s i p 的v o i p 实现中都采用这种方 法。这里需要注意的是s i p 终端的接入:s i p 终端是一个相对智能的终端能够和 s i p 服务器之间直接交互。并且能根掘不同的s i p 消息采取不同的动作。每个s i p 终端都需要有自己的s i p 地址对于l p 网络上的s i p 终端来说,这意味彗需要一 个全局有效的能被软交换系统唯一谀剐的i p 地址,这个地址被放入s i p 消息中传 递。因为i p 地址紧缺,很多企业南署自己的私网并通过n a t ( 网络地址转换) 转 换为合法的公网i p 地址接入i n t e r a c t 。n a t 在i p 层工作,只能转换消息中i p 、t c p 、 u d p 报文中的地址和端口,而s i p 是应用层控制协议,协议本身对私网的处理考 虑不是很周到。当s i p 终端不是通过公网i p 而是通过n a t 网关连接到公网上时, s i p 信令可能无法自由穿越n a t ,如幽l - 2 所示: 型出堡塑堕三墨塑堡壁出曲堕丛堡茎垫 ,竺二二二7 :_ 兰l 。糙一一j 磊、。, 醪囊:翰 12n a t 的分类 图i - 2n a t 情况下的s i p 会话 n a t 根据映射方式可以划分为以下几种典型类型1 7 j i l 3 : 1 f u l lc o n e n a t f u l l c o n e n a t ”“1 首先把所有来自相同内部i p 地址和端口的请求映射到相 同的外部i p 地址和端口,其次,任何一个外部主机通过把一个i p 包发送给已得到 映射的外部i p 地址的方式都能够把该包发送给该内部主机。 2 r e s t t i c t e dc o n en a t r e s t r i c t e d c o n e n a t ”m 把所有来自相同内部i p 地址和端口号的请求映射到 相同的外部i p 地址和端口。与f u l lc o n en a t 方式不同,只有当内部主机以前曾 经给i p 地址为x 的外部主机发送过一个包时i p 地址为x 的该外部主机才能够 把一个i p 包发送给该内部主机。 3 p o r tr e s t r i c t e dc o n en a t p o r l r e s t r i c t e d c o n e n a t l 7 | 1 1 3 1 与r e m f i c t e dc o n e n a t 类似t 只是限制中多了 端口号。特别是,一个外部主机可以发送一个源l p 地址和源端口号分别为( x ,p ) 的i p 包给外部主机只有当内部主机以前曾经给i p 地址为x ,端口号为p 的外部 主机发送过一个包时,l p 地址为x 的该外部主机才能够把一个源端口号为p 的i p 包发送给该内部主机。 4 s y m m e t r i cn a t s y m m e t r i c n a t ”m 是指把所有来自相同内部i p 地址和端口号到特定目的 i p 地址和端口号的请求映射到相同的外部i p 地址和端口。如果同一主机使用不同 的源地址和端口对,发送的日的地址不同则使用不同的映射。只有收到了一个 第一章防火墙和n a t 问题的提出 i p 包的外部主机才能够向该内部主机发送回一个u d p 包。对称式的n a t 不保证 所有会话中的( 私有地址,私有端口) 和( 公开i p ,公开端口) 之间绑定的一致 性,相反,它为每个新的会话分配一个新的端口号。 1 3 现有s i p n a t 解决方案综述 1 a l g 方式 a l g 巧1 方式的解决思路是应用程序在负载中填写其自身地址,此地址信息在 通过n a t 时被修改为n a t 上对外的地址。a l g 需要支持对i p 语音和视频协议 ( h 3 2 3 ,s i p , h 2 4 8 m g c p ) 的识别和对n a t f w 的控制,以便使n g n 业务顺利穿 越n 朋r f w 。a l g 方式的应用组网的关键为:企业网驻地网内部终端设备能穿 透n a t a l g 注册到公网软交换上,通过软交换进行协议解析和呼叫处理。公网软 交换和企业网终端通过h 3 2 3 ,s i p , h 2 4 8 m g c p 协议互通,n a t a l g 需要识别 h 3 2 3 ,s i p , h 2 4 8 m g c p 协议信令并建立媒体流通道,以支持媒体流顺利穿越 n a t a l g 。a l g ( 应用层网关协议) 实现简单但需要对现有n a t 设备进行升级同 时需要n a t 设备对所有数据包进行监控和解析,性能、可扩展性和可实施性较差。 2 m i m c o m 方式 与a l g 不同的是,m i d c o m 咖1 的框架结构采用可信的第三方( m i d c o m a g e n t ) 对m i d d l eb o x ( n a t f w ) 进行控制的机制,应用业务识别智能也由m i d d l e b o x 转移到外部的m i d c o m a g e n t 上,因此应用协议对m i d d l eb o x 是透明的。根 据m i d c o m 的架构,在不需要更改m i d d l e b o x 基本特性的基础上,通过对m i d d l e b o x 的升级就可以支持更多的新业务,这是m i d c o m 相对a l g 方式的一个很大 的优势。 m i d c o m 协议性能较好但实现复杂,需要对现有n a t 设备进行升级,投入较 大? 实现周期较长。 3 s t u n 方式 解决n a t 问题的另一种思路是:私网接入用户通过某种机制预先得到其地址 对应在出口n a t 上的对外地址,然后直接填写出口n a t 上的对外地址,而不是私 网内用户的私有i p 地址,这样报文负载中的内容在经过n a t 时就无需被修改了, 只需按普通n a t 流程转换报文头的i p 地址即可,而此时负载中的i p 地址信息和 报文头地址信息是一致的。s t u n 协议就是基于此思路来解决应用层地址转换问题 的。 s t u n 的优点是实现简单,支持多级n a t ,不增加服务器任何负担,性能好, 但是不支持t c p ,无法在对称n a t 下工作,不支持不同地址域之间( 如i p v 4 与 利用虚拟网卡实现v o l p 应用的防火墙穿越 i p v 6 之间) 的通信: 4 t u r n 方式 t u r n 方式解决n a t 问题的思路与s t u n 相似,实际应用原理也基本相同。 t u r n 应用方式采用t u r ns e r v e r 的地址和端口作为客户端对外的接收地址 和端口,即私网用户发出的报文都要经过t u r ns e r v e r 进行r e l a y 转发。 t u r n 协议作为s t u n 协议的补充,可以解决所有n a t 问题,可扩展性好但 是t u r n 服务器负载较重,容易出现丢包或延迟。 5 f u l lp r o x y 方式 f u l lp r o x y 巧1 方式通过对私网内用户呼叫的信令和媒体同时做r e l a y 来实现出 口n a t f w 的穿越。 当私网终端呼叫信令到达f u l lp r o x y 时f u l lp r o x y 将对呼叫信令协议中携带的 r t p r t c p 信息进行解析与处理,在记录用户私网内r t p r t c p 地址和端口号的同 时,修改r t p r t c p 私网地址信息为m lp r o x y 本身对外的公网i p 地址,并修改 媒体流端口为f u l lp r o x y 上分配的外部端1 2 1 ,然后将呼叫信令发送到软交换或对 端。这样呼叫信令以及媒体流就可以通过f u l lp r o x y 在主被叫之间进行中转了。 在f u l lp r o x y 方式下,无需对现有的n a t 设备做任何改动,采用普通的设备 即可,同时私网内的终端也无需支持s t u n 和t u r n 协议,这是其较大的一个优 势。它的局限性周t u r n 一样,增加了包的延时和丢包的可能性。 f u l lp r o x y 方式组网的关键是:同时完成对终端呼叫信令的代理转发和媒体 r e l a y 。同时,f u l lp r o x y 还可借鉴t u r n 的应用组网方式,拓展应用范围。 1 4s i p 应用中的防火墙 防火墙也会对s i p 信令包或者媒体流包产生影响,它们会丢弃这些包或者是 阻止这些包的通过,造成这种情况的原因是由于防火墙封了一些端1 2 3 ,使得通过 这些端口的d 包被防火墙丢弃;防火墙也可以对通过它的包进行重组,使得p 包 的顺序改变,尤其在i p 电话的通话中,语音包的顺序被防火墙墙改变,那么通话 质量就会非常显著的下降。 1 5 防火墙的分类 防火墙分为包过滤防火墙1 1 6 1 1 1 8 1 ,状态动态检测防火墙t l s 应用程序代理防 火墙m 1 8 1 等。 1 包过滤防火墙 这种防火墙通过一套规则来决定对通过它的包是否丢弃,或者放行。它会检 6 第一章防火墙和n a t 问题的提出 测每一个通过它的包,查看包中可用的基本信息( 源地址和目的地址,端口号,协 议等) ,然后将这些信息和设立的规则相比较,决定对包的处理策略,是否放行或 者是丢弃。包过滤防火墙对网络包是低水平的控制,每个i p 包的字段都被检查, 例如源地址、目的地址、协议、端口等。防火墙将基于这些信息应用过滤规则。 它可以识别和丢弃带欺骗性源i p 地址的包,包过滤防火墙是两个网络之间访问的 唯一来源。因为所有的通信必须通过防火墙,绕过是困难的,包过滤通常被包含 在路由器数据包中,所以不必额外的系统来处理这个特征。 2 状态j 动态检测防火墙 包过滤防火墙不会记录包的历史信息,而状态动态检测防火墙会记录这些信 息,并根据这些信息来跟踪网络连接包,因此相比包过滤防火墙,它可以增加新 的功能,比如它可以截断所有传入的通信而允许所有传出的通信。状态动态检测 防火墙有检查婵包的每个字段的能力,并遵从基于包中信息的过滤规则,识别带 有欺骗性源p 地址包。它基于应用程序信息验证一个包的状态,记录有关通过的 每个包的详细信息,基本上,防火墙用来确定包状态的所有信息都可以被记录, 包括应用程序对包的请求,连接的持续时间,内部和外部系统所做的连接请求等。 3 应用程序代理防火墙 应用程序代理防火墙实际上不允许在它的连接的网络之间直接通信,相反, 它是接受内部特定网络用户的应用程序的通信,然后建立基于公共网络服务器的 单独连接,网络内部的用户部直接于外部的服务器通信,所以服务器不能直接访 问内部网络的任何部分。这种防火墙担当一个桥梁的作用,它接受内部应用程序 的请求,然后转发给服务器,服务器的反馈消息也是经过它转发给网络内部的应 用程序。它可以指定对连接的控制,例如允许或拒绝基于服务器i p 地址的访问, 或者是允许或拒绝基于用户所请求连接的i p 地址的访问,通过限制某些协议的传 出请求,来减少网络中不必要的服务,能够记录所有的连接,包括地址和持续时 间等。 1 6 现有的防火墙解决方案综述 1 隧道穿透方案 即在防火墙和n a t 设备的内外架设专门的隧道来传送数据隧道穿透解决方案 由两个组件构成:s e r v e r 端和c l i e n t 端,分别放在防火墙和n a t 的外面和里 面,c l i e n t 端具有网守和代理功能,内部终端注册至u c l i e n t 上,它和外部的s e r v e r 创建一个信令和控制通道,可以把所有的注册、呼叫控制信令以及媒体数据转发到 s e r v e r ,转发时进行端口映射。这种解决方案的缺点是所有经过防火墙的通信都必 7 利用虚拟网卡实现v o l p 应用的防火墙穿越 须经由s e r v e r 来进行中转,这会引起潜在的性能瓶颈。 2 虚拟专用网( v p n ) v p n 技术是当前在i p 网络上提供安全通信的方法之一,在同一个v p n 网内可以解 决防火墙穿越问题。在v p n 技术中,在u d p 和t c p 层下的i p s e c 层被用来提供安全的i p 通信,但由于基于v p n 技术的i p s e c 层使用它自己的连接标识符而不是u d p 或t c p 端 口,而且i p s e c 上面的层要被加密,这种解决方案无法处理对n a t 尤其是n a p t 问题, 可以考虑实现防火墙、n a p t 、v p n 功能三者结合进行解决这种方案的缺点就是它 仅仅允许位于同一个v p n 内的设备进行通信,而无法与位于公众网的终端用户进行 通信。 8 第二章虚拟网卡穿越防火墙的设计 第二章虚拟网卡穿越防火墙的设计 2 1 原型系统:o p e n v p n o p e n v p n 是一个开源软件,它提供了在数据链路层和网络层的基于s s l 的安 全的连接方式。 o p e n v p n 通过虚拟网卡获得i p 数据包,建立和服务器的t c p 或者u d p 的通 道。o p e n v p n 采用了数据加密技术,通过o p e n s s l 库对数据加密。o p e n v p n 同时 实现了部分n a t 和防火墙的穿越。一 o p e n v p n 也有不足之处,由于采用了双向加密方式,o p e n v p n 必须通过服务 器中转。o p e n v p n 通信没有信令控制,所以当两个用户使用不同的o p e n v p n 服 务器的时候不能实现互通,所以不能够大范围应用。 基于以上分析,我们的设计思路是:在o p e n v p n 的基础上,支持通信双方直 接传输方式;增加信令控制,实现大范围应用。 2 2 网络环境的量化 为了更精确的评价一个客户端所处的网络环境,我们引入了网络环境的量化 指标:网络环境值。通过网络环境值,我们可以清晰的描述客户端的网络环境。 表2 - 1 网络环境值 o p e n f u l ic o n er e s t r i c t e d p o r t oi n t e r n e t 23 r e s t r i c t e d s y m m e t r i c l 4 5 u d pl 1 11 21 31 4 1 5 t c p2 2 0x t c p 8 0 33 0 在上表中,横行表示n a t 的情况,竖列表示防火墙的情况。 对n a t 的量化,我们采用了5 个值0 ,l ,2 ,3 ,4 ,5 。其中2 ,3 ,4 ,5 四 个值对应n a t 的四种类型tf u l lc o n e ,r e s t r i c t e dc o n e ,p o r tr e s t r i c t e dc o n e , s y m m e t r i c 。对于t c p 连接,是不需要考虑n a t 的,因为t c p 是k e e p a l i v e 的, 值为0 。 对防火墙的量化,我们采用了三个值:l ,2 ,3 。它们分别表示防火墙允许 通过的数据包类型:允许u d p 通过,允许所有t c p 通过,只允许h t t p 通过。 这样以“竖列1 0 + 横行 得出得数值就是网络环境值。在这个表中得“x 9 利用虚拟网卡实现v o i p 应用的防火墙穿越 表示该数值无效。 网络环境数值有:ll ,1 2 ,1 3 ,1 4 ,1 5 ,2 0 ,3 0 共七种,所有客户端得网络 环境都可以量化为这七个数值。 2 3 通信方式 通信双方通信时,有两种方式:直传方式和通过服务器中转方式,这两种方 式的选取是由通信双方的网络环境数值确定的。 下图清晰的显示了通信双方在不同网络环境数值下采用的通信方式。 表2 2 不同网络环境下的通信方式 n1 21 3 1 4 1 52 03 0 ( o p e ni n t e n( f n uc o n e ) ( r e s t r )( p o r t )( s y m e )( t o p ) ( h u p ) l l 嫠,:。、j :一: 1 j “+ ! 、,2 - 。f 、,- j4 :一弗 。:,毒7 一缨 、 , 。* 赳糍女镐缸壤臻:,m 螗i 瓤,i 1 2 箩一。 、 1 3 琶 、j i 。 。蝣擀蔗矗锄哜i 耄l 1 4 参。 :7 、 - v 盔;妇 确: 1 5 鑫 蠢 ,t 。;i 赢:i a 酸 。ho 蔓:怠聋嚣;猫 2 0 ;, 3 0 氍瞄“由t 巍确趣t 籀 在这个图中,横行是通信的接受方的网络环境数值,竖行是通信的发起方的 网络环境数值。 其中着色部分表示通信双方的网络环境允许通信双方直接通信,不着色部分 表示通信双方的网络环境不允许通信双方直接通信,通信双方必须通过服务器中 转来实现通信。 对于通过服务器中转的通信方式,可以分为两类:通过同一个服务器中转;通 过两个服务器中转,这两种通信方式也有很大的不同。 通过一个服务器实现中转,是一种比较简单的方式,因为整个控制都集中在 个服务器,所以控制相对简单。 通过多个服务器实现中转,这是比较复杂的,通信双方往往不在一个通信域 中,因此需要跨域操作,这样整个信令交互和媒体交互就非常复杂,但是这种应 用又是必须的,大范围的应用中必须解决这个问题。 2 4 通信信道 通信信道是指通信双方通过虚拟网卡截获数据后,对数据采用什么封装方式 发送出去,通过u d p 还是t c p ,普通t c p 还是h 丁r p ,加密还是非加密。根据这 i 0 第二二章虚拟网卡穿越防火墙的设计 些不同的情况,通信信道可以分为:u d p 通信信道,u d p 加密通信信道,普通t c p 通信信道,普通t c p 加密通信信道,h t t p 通信信道,h t r p 加密通信信道。 1 u d p 通信信道 在u d p 通信信道中,数据被虚拟网卡截获后,通过u d p 协议发送到网络上。 这种通信方式是效率最高的通信方式。由于没有加密,接收方也就不需要解密, 因此可以节省很多对数据的处理时间。 u d p 通信信道一般用于直通方式,所以效率很高。u d p 通信信道如果是通过 服务器进行中转,由于它不需要和服务器保持长连接,所以而且不需要服务器对 数据解密,所以它的效率在通过服务器中转的信道中,效率也是最高的。 u d p 通信信道对于一些特殊的网络环境是不适合的,由于防火墙和n a t 的阻 隔,u d p 通信信道往往不能够通过防火墙和n a t ,因此在这些网络环境下u d p 通信信道是不适合的。 2 u d p 加密通信信道 t u d p 加密通信信道相对于u d p 通信信道而言,它多了一些操作,那就是对数 据包的加密和解密的操作。在这种通信方式中,虚拟网卡截获数据包后,首先对 数据包加密,然后再通过u d p 发送到网络上去。接收方收到该数据包后,还要对 数据包解密才能获得相关数据。在这个过程中加密解密是需要时间的,所以相对 来说效率比较差,但是安全性有了提高。 u d p 加密通信信道一般只能通过服务器中转,这是因为它所采用的加密是双 向加密,那么就有一个密钥生成和密钥传输的问题,一般一种比较安全和有效的 方式是通过服务器生成密钥,密钥有两部分组成,一部分服务器保存,一部分发 送给客户端。客户端a 和客户端b 通信时,a 通过a 的密钥加密,发送给服务器 端,服务器通过服务器的a 解密密钥机密,然后再将数据通过服务器的b 的密钥 加密,通过u d p 发送给b ,b 再通过自己的密钥解密,获得信息。如果a 要和b 直接通信,那么就有一个很重要的问题:a 怎么将自己的另一个密钥交给b ,b 怎 么将自己的另一个密钥交给a 。而且,更重要的是a 和b 的密钥是服务器生成的, 如果要交换的话,只能是由服务器去做的,客户端怎么告诉服务器去交换密钥, 这需要客户端和服务器端的信令支持,这就是为什么o p c n v p n 只能通过服务器做 中转的原因:没有信令支持的加密传输。 同时这种通信信道也是不能跨域的,问题的根源也是密钥的交换,在跨域通 信中,生成密钥的服务器都不同,这也是为什么o p e n v p n 不能跨域操作:因为生 成密钥的服务器不同。 3 t c p 通信信道 t c p 通信信道是一种比较低效的信道,这是由t c p 的特性决定的。在我们的 l l 利用虚拟网夤实现v o l p 应用的防火墙穿越 设计中,t c p 通信信道必须通过服务器中转实现通信。t c p 通信信道是比较消耗 服务器资源的,因为t c p 和服务器之间是保持长连接的。 t c p 通信信道用于防火墙不允许u d p 通过的网络环境下的通信。 4 t c p 加密通信信道 t c p 加密通信信道是一种更加低效的信道,相对与t c p 通信信道而言,它需 要加密和解密过程,因此会浪费很大的资源。 t c p 加密通信信道也是通过服务器中转的信道。 5 i t t t p 通信信道 h 下r p 通信信道用于最严苛的网络环境中,在这种网络环境中只允许h t t p 通 过,所以截获的数据包客户端都以h t t pp o s t 的方式发送到网络中,服务器端再 通过h t t pr e s p o n s e 的方式发送给服务器端,这种通信方式同样需要服务器做中 转。 6 h t t p 加密通信信道 同h t t p 通信信道相比,需要加密和解密过程,因此效率最低。这种通信方 式同样需要服务器中转。 2 5 方案设计 2 5 1 体系结构 借鉴0 p e n v p n 的设计,虚拟网卡穿越防火墙的设计采用c s 结构,主要包含 两个部分,客户端软件v c l l e n t 和服务器端软件v s e r v e r 。 v c l i e n tt 作在w i n d o w s 下,v s e r v e r 工作在l i n u x 下,这样做是考虑到实际 应用的要求:客户端软件的易用性和服务器端软件的高效性。 v c l i e n t 负责客户端网络环境的探测,虚拟网卡初始化和i p 配置,和其它通 信方的交互,和信令服务器以及媒体服务器的交互的工作。 v s e r v e r 根据所承担的任务不同,分为多种服务器。有为客户端选择工作域的 分发服务器v d j s p a t c h ,有负责信令交互和媒体服务器控制的信令服务器v m e s s a g e 服务器,有进行媒体转发的v m e d i a 服务器。这些服务器构成了一个塔式结构,如 图2 1 所示。 在这个体系结构中,v d i s p a t c h 服务器位于塔尖,所有的客户端必须首先通过 它才能够获得信令服务器的信息,同样的,客户端也必须通过信令服务器才能够 获得媒体服务器的信息,这样就构成了分层控制关系,有利于通信和管理。 1 2 第二章虚拟网卡穿越防火墙的设计 2 5 2 通信域 图2 - 1 体系结构图 通信域是由信令服务器v m e s s a g e 唯一标识的,属于某个信令服务器v m e s s a g e 的所有用户,称它们属于一个域,而属于不同信令服务器v m e s s a g e 的客户端,称 它们是不属于一个域的。 在同一个通信域中的客户端,可以直接通过信令服务器交互,而属于不同域 的客户端,交互的时候是跨域的,那么需要信令服务器和信令服务器之间的通信 协议交互。 2 5 3 协议设计 虚拟网卡的协议主要有六个,它们分别是:客户端网络环境检测协议,客户 端信令服务器通信协议9 x 信令服务器间通信协议,信令服务器媒体服务器协议, 客户端分发服务器协议,分发服务器媒体服务器协议。 客户端网络环境检测协议,简称v s t u n 协议,是对客户端网络环境进行检测 的,客户端通过客户端网络环境检测协议和v s t u n 服务器通信,能够检测出客户 端的网络环境数值,为以后的通信做准备。 客户端信令服务器通信协议,简称v c m 协议,通过这个协议客户端可以和 v m e s s a g e 服务器交互,获得认证,获得虚拟网卡的i p ,获得媒体服务器使用的权 限等。 信令服务器间通信协议,简称v m m 协议,通过这个协议可以实现跨域的通 型蟹虐塑旦圭塞堡堡瘗旦的堕丛揸窒垫 信,这个协议是唯一的可以跨域的协议。 信令服务器媒体服务器协议,简称v m c m 协议,这个协议是信令服务器和媒 体服务器交互的协议,通过这个协议,信令服务器可以控制媒体服务器的行为, 也可以知道媒体服务器的状态。 客户端分发服务器协议,简称v c d 协议,客户端可以通过这个协议获得信令 服务器的相关信息。 分发服务器信令服务器协议,简称v d m 协议,信令服务器可以通过这个协议 将自己的信息告诉分发服务器,分发服务器通过这个协议来监测信令服务器。 客户端网络环境检测协议s t u n ) 客户端网络环境检测协议是对s t u n 协议的扩展,它主要包含三个部分: s t u n 协议,普通t c p 检测,h r r p 检测。 1 s t u n 协议 s t u n 协议主要是用来做n a t 检测的,通过s t u n 协议,我们可以知道客户 端是否允许u d p 数据包通过,客户端是哪种n a t 类型。 对s t u n 协议我们不作太多的介绍,主要介绍一下s t u n 协议的检测流程。 图2 - 2s t u n 的检测流程 1 4 堡= 至堡型旦e 至蕉堕丛堕盟壁! ! : 这个圈描述了s t u n 协议的检测流程,从这个圈中,我们可以看出s t u n 协 议的检测主要分四步完成:t e s t l ,t e s t 2 ,t e s t 3 ,t e 鲋。 这四步每一步的特点可以通过表2 - 3 和图2 - 3 描述。 袅2 - 3s t u n 检测的过程 t e s ld e s t t in c h a n g e i p c h a n z ep o r t t c s t l ii p i :p o r t i n nl p i :p o r t l t e m 2y t c s l 3l p 2 :p o r t i t e s l 4 图2 - 3s t u n 检测的实现 - 眵t e s t 1 卜t e s t2 一- t e s t3 = m j 跏- e s t4 通过s t u n 检测客户端可以得到自己的n a t 类型。对于f u l lc o n cn a t 和 o p e ni n t e m e t ( 公网i p 的客户端) 而言,它们在通信的时候,从他们的通信方来讲 是没有差别的,f u c , o n c n a t 对于发送到它的数据包都接受,所以通信方发给如l l c o n e n a t 的数据包和发给o p e n i n t e m e t 数据包都可以到达客户端,所以没有差别- 我们在考察网络环境时认为两者是相同的。 通过s t u n 协议的检测流程,我们也可咀看出s t u n 协议对于t c p 协议是无 能为力的,也就是说它可以检测出网络能否允许u d p 通信,如果不允许u d p 通 信,那么是否允许t c p 通信,它是无法检测的。所以我们对s t u n 协议进行了扩 展。 厶普通t c p 检测 在s t u n 检测流程执行玩t e s t l 之后发现客户端网络环境不允许u d p 数据 利用虚拟网卡实现v o i p 应用的防火墙穿越 包通过,那么开始进行普通t c p 检测。 客户端会随机选取一个大于1 0 2 4 的t c p 端口,通过这个端口和v s t u n 服务 器的4 3 2 1 端口建立连接,并且发送一个“c h e c k ”字符串到服务器端,服务器端的 回应是“c h e c ko k 字符串。 客户端保持这个连接,从接收到“c h e c ko k ”字符串开始计时,2 分钟后发送 字符串“c h e c ka g a i n ”,客户端的回应是字符串“c h e c ka g a i no k 。 如果在这两步检测中服务器端返回正确信息,表示客户端允许普通t c p 通过, 否则不允许普通t c p 通过。 检测完成后,断开和服务器的连接。 3 h t t p 检测 普通t c p 检测如果显示客户端网络环境不允许普通t c p 通过,那么就要进行 h t t p 检测,看客户端网络环境是否允许h 1 四通过。 客户端建立到v s t u n 服务器t c p8 0 端口的连接,并且向客户端发送h t t p 数据包,数据包格式如下: p o s th t t p :h t t l ) 1 1h ! l a a c c e p t :幸幸n a c c e p t - l a n g u a g e :z h - c n 、n u s e r - a g e n t :v s t u n n h o s t :g a t e w a y m e s s e n g e r h o t m a i l c o m r n p r o x y - c o n n e e t i o n :k e 印一a l i v e k r k n c o n n e c t i o n :k e e p - a l i v e 舳 p r a g m a :n o c a c h d n c o n t e n t - l e n g t h :

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论