专利名称:在网络中实现透明网关或代理服务器的方法
技术领域:
本发明涉及一种在网络中实现透明网关或代理服务器的方法,特别是在路由器,网关或开关装置使用修正网络地址变换(以下称“NAT”)实现透明网关或透明代理服务器的方法。
通常,一个闯入中断系统的代理服务器或网关通常作为一个网关使用。在代理服务器中,用户通常设置或进入一个代理服务器,然后,再进入一个所需的服务器。但是,在透明网关中,由于透明网关在完成确认程序后与真实服务器建立一个连接,用户直接进入一个所需的系统而不知道网关或代理服务器的存在,因此用户和服务器可以相信他们没有通过网关与伙伴直接联系。
现有技术存在网络代理服务器的透明网关系统的构造。
这里,如果一个网络服务端口将一个指定的TCP数据包重新定位到网络设备上的代理服务器,代理服务器取得所有数据包并通过自己的Internet协议(以下称“IP”)再连接到服务器与其通信。由于网络上使用包含主机名称和被连接的伙伴网络服务器的URL的HTTP协议,上述过程才可能。
尽管该方法对于允许用户直接连接到服务器不用指定的代理服务器是有作用的,这里产生了一个问题,服务器承认的不是原始客户而是代理服务器为其客户。这一结构的问题不仅在于服务器确认正确客户有困难,而且在基于IP认证系统的适应上存在致命缺点。另外,由于服务器几乎不确认正确用户,服务可能不能提供给那些通过网关的用户,除非相应的问题得到解决。因此,出于安全和其他目的应用网关的企业或机构可能面对在网关的运作上的问题。
首先,需要改变用户环境的额外工作。第二,必须承担教育用户正确使用网关的沉重过程。第三,用于操作帮助-平台的由用户在使用实际中可能产生的那部分的额外花费。第四,尽管运行上述透明网络代理服务器,互联网上基于IP的大量系统的控制服务器不能收到适当的服务。第五,由于透明网络代理服务器只是对于可以确认在存在应用协议例如HTTP的目标服务器可使用,如果网关是由如Telnet或FTP的网关构成,用户必须首先进入一个网关,然后,为了建立一个连接服务器的网关的IP。因此实现一个透明代理服务器或透明网关不仅对于透明代理服务器,而且对于基于TCP的所有服务的应用程序是必要的。
在近些年经历快速增长的Internet的结构,是首先产生在几十年前,它提供的大量连接现在是不可预见的。作为解决可行的IP的方式,NAT概念被引入。NAT是一个概念,基于重新使用个人网络地址,通常应用到一个路由器或相似方式,路由器从每个端口接收数据,根据NAT规则(Mapping Rule变址规则)将一个IP数据包的源IP地址字段变换为一个授权IP地址然后传输。
如果个人网络请求进入扩展网络,应用上述NAT的网络设备在分离的地址工具中储存一个适当数量的IP地址,并在没有使用的授权地址中分配那些地址给个人网络。这里,授权IP地址的变换是由一个NAT表完成的。
图1为通常描述的基本NAT概念图。如图1所示,在基本NAT中输出数据流的情况,一个全球IP地址被分配给原始本地IP地址然后记录在NAT表,本地IP地址变换为全球IP地址然后传输。当输入数据流的情况,使用目标的全球IP地址,也就是上述输出数据流的情况的变换源搜索一个本地IP地址,然后全球IP地址变换为本地IP地址。由于在该基本NAT中数据流通过目标IP地址单独分离,并由多个主机同时共享一个IP地址是不可能的,当一个IP地址的使用率急剧减少时,地址的变换减轻。下面给出了参考图1的一个详细介绍。
例如,假设本地网络的主机A与全球网络的主机X通讯,而本地网络主机B与全球网络主机Y通讯,源A的地址以及在那里分配的全球IP地址G记录在从A到X数据流的NAT表中。另外,如果分配从A到X(G)数据流的同样IP地址也如图1所示分配从B到Y的数据流,在基本NAT输入时,当只根据从Y到目标地址G的传输数据检索NAT表时,A和B的本地地址被检索,这样对于传输数据产生混淆。因此,在本地网络中具有分别的IP地址的多个主机不能被变换为一个,并且在基本NAT中同样全球同步IP也是这样。为了解决这一问题,在服务站通常使用NAT表保持IP记录,端口等等。
还有在图1中,对于从A到X的数据流,源A的地址和端口号100以及分配的全球IP地址G和端口号1000记录在NAT表中。从B到Y的数据流,具有可变的端口号2000的全球地址G可被分配到源B的地址和端口号100。在输入数据流时,为了传输从Y到B的传输数据,如果NAT表用目的地址G和端口号2000检索,只有B的本地地址和端口号100被搜索到,因此,从A到X的数据流可以与从B到Y的数据流分离。
为了实现上述目的,本发明提供了一种通过使用包括一个NAT表的网络设备在包括网关或代理服务器的网络中实现透明网关或透明代理服务器的方法。另外,本发明包括,第一步,确认一个收到的数据包的源端口或目标端口是否在NAT表中;第二步,如果上述源端口或目标端口在第一步中存在确认于上述NAT表中,记录对话信息表中的对话;第三步,在上述第二步之后变换上述数据包中的IP地址。
图2为一个IP头的组成图。
图3为一个TCP头的组成图。
图4为根据本发明使用透明网关的网络组成图。
图5为变化NAT技术的概念图。
图6为根据本发明一个连接通常网关的TCP对话连接程序例子的流程图。
图7为根据本发明由透明代理服务器设置的网关的TCP对话连接程序例子的流程图。
图8为根据本发明的变化的NAT方法的流程图。
图9和图10为根据本发明的NAT方法的其他实施例流程图。
发明的较佳实施例下面详述本发明的较佳实施例,图2是一IP报头的结构,图3是一显示了一TCP报头的结构的图,图4是根据本发明的应用,透明网关的网络结构。
图4中,一顾客10可以直接与服务器70通信。然而,出于安全或者其他目的通常在网络间设置网关。这种网关的典型例子是闯入者切断系统。其它的网关例如网络代理服务器,SMTP网关,FTP网关,Telnet网关等等也可以考虑。当在网络的交通路径上安装了网关,顾客通常不得不通过改变环境来进入网关。当顾客通过一IP数据程序与服务器通讯时,网关再次进入服务器。从而,包含NAT的网络设备30中的IP数据程序的IP报头可被更改。如果流出数据包是需要网关的数据包,数据包的目标IP改变以使网关可以收到该数据包。然后该数据报流向网关G140或者网关G250以被阅读并被后者处理。处理结束后,数据包传送回网络设备30,因此网络设备30将数据包的源IP从网关IP改为顾客IP。然后,将其传送给服务器70。
现在,解释随后的服务器70的引入数据包。接收到引入数据包后,网络设备30将目标IP从顾客IP改为网关40,50的IP。由网关40,50处理后,该数据包传送回网络设备30,然后,数据包的源IP改变为服务器70的IP后,将数据包传送给顾客10。这样,在网关IP隐藏的情况下,完成了顾客10与服务器70的通信。
参考图5和图6,依照本发明的实现透明网关或者透明代理服务器的的方法的例子在下面给出。
图5显示了根据本发明使用各种NAT技术实现透明网关或者透明代理服务器的方法的实施例的结构描述,图6是根据本发明普通网关TCP对话连接的例子的流程图。
图5中,主机C100是IP地址是C的顾客,主机S110是IP地址是S的服务器。现在,网络设备130的NAT表定义了附图中所描述的,也就是,使用端口号23的Telnet的目标端口是23,使用网关G,使用端口号是80的网的目标端口是80,使用网关G。
如图5和图6所示,主机C100试图与主机S110建立通信连接。在这个程序过程中,TCP数据包中设置SYN标记(CG,23SYN)。TCP报头包括源端口和目标端口。网络设备的NAT130认可目标端口是23或者80的数据包可被传送。这里,在其目标IP改为G后,数据包发送到网关120。网络设备130在对话信息表中的注册有以下结构,发送数据包括在表中。
收到该数据包后,网关120以其设置的SYN标记和ACK标记从顾客100传送到网络设备130(G,23C SYN+ACK)。网络设备130,于是,决定如何参考对话信息表处理该数据包。由于源端口是23,可以知道该数据包是顾客的相应数据包。因而,该数据包的源IP改为服务器IP后传送给顾客。
然后,顾客100发送包含ACK标记(CG,23ACK)的数据包。因此,顾客和网关间的TCP连接建立。上述程序的问题在于,网关并不知道实际的目标IP。这样,网络设备130的NAT只好将上表的值传送回网关120。如图6所示,包括NAT的网络设备130将对话信息传送给网关120。现在,网关120知道了实际服务器IP,可以建立连接。
然后,网关120传送包括SYN标记(GS,23SYN)的数据包以通过TCP连接到服务器。数据包的源IP改为网关IP C(G;S,23SYN),作为顾客IP根据网络设备130的上述表格传送给网关。服务器110传送响应数据包(S,23C SYN+ACK)至顾客100。这里,由于网络设备130首先阅读并处理该数据包,可知网关120使用了上述对话信息的值。从而,该数据包的目标IP从顾客C改为网关(G S,23G SYN+ACK)后,传送到网关120。
如果网关120将按照ACK标记(GS,23ACK)设置的数据包传送回服务器110,网络设备130将由对话信息表(CS,23ACK)获得的顾客信息修改过的数据包传送给服务器120。因此在网关100和服务器110之间建立起TCP连接。通过这种方法,真实顾客100通过网关120与服务器110使用TCP连接。
图7是根据本发明由透明代理服务器设置的TCP对话连接过程实例的流程图。
一些通用商业网关或代理服务器可以通过其应用程序识别目标的地址,典型的例子是信件传递系统和网络代理服务器HTTP。在这种情况下,目标IP在应用程序的数据中搜索。然而,在这种情况下,由于当对话信息如图6所示传送给网关时,应用程序的协议已经更改,产生了商业程序不能如它所能提供的功能使用。为解决该问题,在图5中的NAT表中提供了模式栏。这里模式值G,意味着这是一通用网关,模式值T意味着这是一可识别目标IP的透明网关。
如果目标端口设置为80且网络代理服务器设置为网关,模式则设为T,如图7所示的TCP连接可以建立。然而,图7和图6的不同之处在于对话信息没有传送给网关。
图8是根据本发明不同NAT方法的流程图。
在接收数据包时,确认数据包是否是TCP或者不是S800。当其不是TCP时,数据包直接传送。当数据包是TCP时,确认目标端口是否是在NAT表S810中。如果目标端口不在NAT表中,进一步确认源端口是否在NAT表S820中。如果源端口不在NAT表中,意味着数据包与网关无关,直接由数据包传送模块传送。
当源端口或目标端口在NAT表中存在时,确定源IP是否是网关IPS830。作为参考,这里没有目标IP是网关IP的情况,因为将目标IP改变为网关IP是NAT的功能。
当目标IP不是网关IP时,意味着该数据包是顾客数据包或服务器数据包,这需要相对更多的处理。如果数据包由SYN标记S840设置,意味着该数据包是对话初始化数据包,该对话在对话信息表S850中注册。
之后,确认网关模式是否是G S860。如果网关模式不是G而是T,数据包不改变IP地址直接传送到数据包传送模块。如果数据包是G,进行对话信息表中的对话搜索870。搜索方法由使用唯一记录包括源IP信息,源端口,目标IP,目标端口S880搜索是否有结果决定。
当该表产生任何结果后,目标IP改变为网关IPS900,数据包传送给模块。当该表没有产生结果时,数据包被丢弃S890。上述描述涉及到当从顾客或者服务器收到数据包的情况。
然而,网关处理并传送数据包S830,对话信息表中的记录用目标IP,目标端口,网关IP和源端口S910搜索。搜索后,确定表是否产生了任何结果S920。表产生了任何结果时,如果数据包由FIN标记设置了两次或者该数据包由RST标记设置S940,则对话从对话表S950中删除,在表S960中源IP由网关IP改为真实IP,数据包传送到数据包传送模块。
在以上步骤S940中,如果由FIN标记设置的数据包没有发生两次或者该数据包由RST标记没有处理,则忽略删除对话950的步骤,该数据包在表中源IP由网关IP改为真实IP后,传送给数据包传输模块。
另一方面,如果对话信息表不包括上述步骤S920的记录,数据包被丢弃S930。
然后,根据图9和其他
本发明的另一实现透明网关或透明代理服务器的方法的实施例。上述实施例实现透明网关或透明代理服务器的问题部分是将对话信息传送回网关。可以选择的是,本系统可删除传送对话信息至网关的部分并如图9所示使用TCP/IP的特性使得源端口不能使用和顾客对话连接相同的端口号,除非目标IP独自在网关处理。换句话说,对话表如图9改变,加入了网关对话表。
图9中每个表生成每个条款的过程在下面解释。当接收到有SYN标记的数据包时,将对话加到对话表中,除非源IP是网关IPS1000。然后,将网关对话表加入到S1100。这之后,对话表连接到网关对话表S1200。然后,为了从网关对话表S1300中检索到对话表,网关对话表也连接到对话表。数据包在网关对话表信息的基础上被修正,也就是目标IP从D1到G1修正,然后,将数据包传输到传输模块。
由于网关不能识别目标IP,则尝试与源IP连接,来替代与目标IP的连接。目标端口连接到源端口使得原始对话被NAT确认。这里,叙述的重点是虽然源IP是连接的,目标IP实际上是连接的。这种情况下,虽然收到了带SYN标记的数据包,源IP变为网关IP。这里,一域加入到网关对话表S1400且在增加的域中该部分将目标IP变为网关IP。为了在网关对话表S1500中搜索对话表,对话表被连接。这里,对话表由目标对话表和源端口搜索。最后,网关对话表连接到对话表S1600的网关对话。
现在,下面解释传送真实数据的过程中地址变换的方法。当源IP为网关IP时,网关对话表被搜索。如果NAT表中存在目标端口,该IP依照由网关对话表的对话指定的对话表的信息进行变换。如果相反,目标端口不存在于NAT表中,端口的IP变为由网关对话表的对话指定的对话表的相反值,也就是对话表中的源IP改为目标IP,对话表中的目标IP改为源IP。
当源IP不是网关IP时,首先搜索对话表。如果搜索得到任何结果,IP改为CPTR指定的网关对话表中具有一表格。如果搜索没有获得结果,用相反的IP和端口进行新的搜索,其中源地址和目标地址翻转。如果搜索获得结果,IP获得由SPTR指定的网关对话表的一个表格。
然后,解释在对话表中删除一个条目的过程。如果收到的是一个遇到两个FIN标记的数据包,或者被RST标记设置的数据包,对话完全终止。如果源IP是网关IP,数据包在被按照真实数据传输过程修正后被传输,然后,网关对话表中的相应的条目被删除。如果源IP不是网关IP,数据包在依照真实数据传输过程修正后被传输,然后,对话表中的相应的条目删除。
图10是如图9描述的本发明的方法的另一实施例的流程图。
这里,在接收数据包S2000时,确认在NAT表S2010中是否存在目标端口。
如果在NAT表中存在目标端口,需要额外确认是否设置SYN标记S2020。如果SYN标记已经设置,确认源IP是否是网关IP。
如果源IP不是网关IP,数据包在对话表S2040和网关对话表S2050中注册。然后,数据包连接到对话表S2060的Cptr,IP变为与对话表S2070相同的ST.Cptr。
如果在以上步骤S2030中源IP是网关IP,数据包在网关对话表S2080中注册,并连接到对话表S2090的Sptr。然后,该IP和端口变为与网关对话表S2100相同的对话。
如果在上述步骤S2020中没有SYN标记,则确认源IP是否是网关IP S2110,当源IP不是网关IP时,在对话表中搜索对话。当源IP是网关IP时,步骤S2200在下面描述。
下面,确认源IP和目标IP是否翻转S2130,然后,当源和目标翻转S2140时,IP和端口变为相同的ST.Sptr。当目标和端口没有翻转时,IP和端口改为相同的ST.Cptr。
然后,确认是否设置了FIN或者RST标记S2160,对话表被删除S2170,当设置了FIN或者RST标记时,数据包传输到数据包传输模块。
如果在上述步骤S2010中NAT表中不存在目标端口,还要确认在NAT表中是否存在源端口S2180,当在NAT表中存在源端口,上述S2020步骤重复,当NAT表中不存在源端口,确认源IP和网关IP是否相同S2190。
当源IP与网关IP相同时,在网关对话表中搜索该对话S2200,并确认在表中是否存在对话S2210。
当在网关对话表中不存在对话时,数据包立即传输到传输模块,当网关对话表S2220中存在对话,IP和端口变为网关对话表相同的对话。
然后,确认是否设置了FIN或RST标记S2230,数据包立即传输到数据报传输模块,当该标记已经设置时,网关对话被删除S2240后数据包传输到数据包传输模块。
虽然依照本发明的实施例,以上已经描述了本发明的结构和效果,本发明的权利不局限在这里,而是决定于权利要求,本领域技术人员做出的允许的变化、改变和修改将不超出本发明的范围和精神。
工业实用性如上所述,本发明允许使用者通过一透明网关或者透明代理服务器与通讯伙伴通讯而不注意到其存在,并不需要在用户环境中做任何变化。
而且,本发明可使在构造和维持网络的时间和费用上有实质性的减少,并且不需要培训使用者如何使用网关。
另外,本发明允许一种基于IP的控制服务器提供普通服务,即使是需要协议的代理服务器或网关,保证其透明,即不能从如Telnet或者FTP的目录知道其目标IP。
权利要求
1.一种在包括网关或代理服务器的网络中执行透明网关或透明代理服务器的方法,通过使用包括一个NAT表的网络设备,包括第一步,确认在上述NAT表中是否存在一个收到的数据包的源端口或目标端口;第二步,如果在上述第一步中确认上述NAT表中存在上述源端口或目标端口,在对话信息表中记录该对话;并第三步,在上述第二步之后变换上述数据包中的IP地址。
2.根据权利要求1所述的实现透明网关或透明代理服务器的方法,其中所述的第三步包括当源IP不是目标IP的情况,设置一个SYN标记时,注册一个对话的步骤;当预置网关模式是通常网关模式情况,在对话信息中搜索上述对话的步骤;当上述对话搜索得到任何结果时,目标IP改变网关IP的步骤;和如果预置网关模式是透明网关模式,直接传输上述数据包的步骤。
3.根据权利要求2所述的执行透明网关或透明代理服务器的方法,其中所述的对话使用源IP,源端口,目标IP和目标端口搜索。
4.根据权利要求1所述的执行透明网关或透明代理服务器的方法,其中所述的上述第三步包括当源IP是目标IP时,在对话信息表中搜索上述对话的步骤;和当上述对话搜索得到任何结果时,当设置一个FIN或RST标记时,从数据包中删除所述对话后,源IP从网关IP改变为真实源IP的步骤。
5.根据权利要求4所述的实现透明网关或透明代理服务器的方法,其中所述的对话是用目标IP,目标端口,网关IP和源端口搜索。
6.一种在包括网关或代理服务器的网络中执行透明网关或透明代理服务器的方法,通过使用装有一个NAT表的网络设备,包括第一步,确认收到的数据包的源端口或目标端口是否在于上述NAT表中;第二步,其中,如果上述源或目标端口在上述第一步中不存在于上述NAT表中,当源IP是网关IP时,对话在网关对话表中搜索;如果源或目标端口存在于上述NAT表中,IP端口按照网关对话表的对话改变;和第三步,在设置FIN或RST标记时,删除网关对话。
7.一种在包括网关或代理服务器的网络中执行透明网关或透明代理服务器的方法,通过使用装有一个NAT表的网络设备,包括第一步,确认收到的数据包的源端口或目标端口是否在上述NAT表中;第二步,如果上述源或目标端口在上述第一步中存在于上述NAT表中,确认是否设置了一个SYN标记;和第三步,在上述第二步中设置SYN标记时,改变IP和端口。
8.根据权利要求7所述的执行透明网关或透明代理服务器的方法,其中所述的第三步包括如果源IP是一个网关IP,在网关对话表中注册的步骤;连接对话表的Sptr的步骤;和改变IP和端口与网关对话表相同的步骤。
9.根据权利要求7所述的执行透明网关或透明代理服务器的方法,其中所述的第三步包括如果源IP不是网关IP,在对话表以及网关对话表中注册的步骤;连接到对话表的Cptr的步骤;和改变IP和端口与ST.Cptr相同的步骤。
10.一种在包括网关或代理服务器的网络中执行透明网关或透明代理服务器的方法,通过使用装有一个NAT表的网络设备,包括第一步,确认收到的数据包的源端口或目标端口是否在上述NAT表中;第二步,其中,如果上述第一步中的上述NAT表中存在上述源端口或目标端口,确认是否设置了SYN标记;和第三步,在上述第二步中没有设置SYN标记时,改变IP和端口。
11.根据权利要求10所述的执行透明网关或透明代理服务器的方法,其中所述的第三步包括如果源IP是网关IP,在网关对话表中搜索对话,并当对话表存在时,将网关对话表和对话表的IP和端口变换为相同的步骤,和在设置了FIN或RST标记时删除网关对话的步骤。
12.根据权利要求10所述的执行透明网关或透明代理服务器的方法,其中所述的第三步包括如果源IP不是网关IP,在网关对话表中搜索对话,并确认当对话存在时是否源IP和目标IP被调换的步骤;当源IP和目标IP被调换时改变IP和端口与ST.Sptr相同,和在设置FIN或RST标记后删除对话表的步骤;和当源IP和目标IP没有被调换时改变IP和端口与ST.Cptr相同,和在设置FIN或RST标记后删除对话表的步骤。
全文摘要
本发明涉及一种在网络中执行透明网关或代理服务器的方法,特别的特征在于,使用NAT传输方法特别是在应用例如路由器,网关和/或开关装置的地址转化方法的网络设备中使用NAT转换方法。根据本发明,客户和服务器可以通过在网络路径中提供的但不用识别的网关相互通讯。
文档编号H04L29/06GK1460347SQ02800801
公开日2003年12月3日 申请日期2002年4月4日 优先权日2001年6月22日
发明者李在亨 申请人:埃克斯克网络有限公司