具体实施方式:
为了使本领域的技术人员更好的理解本发明内容,以下结合附图以及具体实施例对本发明内容作具体说明。
本发明实施例提供的私网穿越的基本流程可参考图1,主要包括步骤:
A1、接收数据发送请求,所述数据发送请求中包含标志位、业务服务器IP地址和端口以及用户终端的IP地址的端口。
在执行此步骤之前,用户终端需要与SOCK5代理服务器建立TCP连接后向代理服务器发送认证请求,并在认证请求通过后,向代理服务器发送协商请求,并收到代理服务器发送的协商请求响应。
此外,在本步骤中用户终端通过防火墙向SOCK5代理服务器发送携带SIP数据包的数据发送请求时,所述数据包中包括SOCK5数据头。该SIP数据头中包含业务服务器IP地址和端口以及标志位为1的保留字段RSV。在数据发送请求经过防火墙时,防火墙将防火墙的出口IP地址和端口携带于该数据发送请求中。
A2、根据所述标志位和所述用户终端的IP地址和端口获取与所述用户终端的IP地址和端口相对应的连接表,利用连接表中的SOCK5代理服务器分配的端口将数据发送请求发送给业务服务器。
连接表定义如下,包括用户终端的IP地址和端口,SOCK5代理服务器的IP地址和SOCK5代理服务器分配的端口,如下表所示:
SOCK5代理服务器收到防火墙发送的数据发送请求后,从数据发送请求中取出用户终端的IP地址和端口,并根据取出的用户终端的IP地址和端口在SOCK5代理服务器存储中查找是否存在其用户终端的IP地址和端口与取出的用户终端的IP地址和端口相同的连接表,若没有则建立新的连接表。在新的连接表中将取出的用户终端的IP地址和端口写入用户终端的IP地址和端口栏内将SOCK5代理服务器为发送数据发送请求的用户分配的端口及SOCKET5代理服务器的IP地址写入SOCK5代理服务器的IP地址和SOCK5代理服务器分配的端口栏内。由于SOCK5代理服务器为不同的用户终端分配不同的端口,因此,连接表中用户终端的IP地址和端口与SOCK5代理服务器的IP地址和SOCK5代理服务器分配的端口的对应关系是唯一的,并存储新建的连接表。
当然,如果SOCK5代理服务器并根据取出的用户终端的IP地址和端口在SOCK5代理服务器中查找已经存在其用户终端的IP地址和端口与取出的用户终端的IP地址和端口相同的连接表,则在后续的步骤中根据该连接表中记录的SOCK5代理服务器的IP地址和SOCK5代理服务器分配的端口将数据发送请求发送给业务服务器。
隧道表定义如下:包括防火墙源IP地址和端口,目的IP地址和端口,如下表所示:
SOCK5代理服务器从数据发送请求中取出业务服务器的IP地址和端口并根据取出的业务服务器的IP地址和端口在SOCK5代理服务器存储的隧道表中查找是否存在目的IP地址和端口分别为业务服务器IP地址和端口的隧道表,若没有则建立新的隧道表。在新的隧道表中将取出的业务服务器的IP地址和端口写入目的地址和端口栏内,将从数据发送请求中取出的防火墙的出口IP地址和端口写入防火墙源IP地址和端口栏内。并存储该新建的隧道表。
SOCK5代理服务器与业务服务器建立连接,并将SOCK5代理服务器的IP地址和SOCK5代理服务器分配的端口携带在SOCK5代理服务器接收到的数据发送请求中发送给业务服务器。
业务服务器在收到SOCK5代理服务器发送的数据发送请求后,将根据接收到的数据发送请求作出的处理结果向SOCK5代理服务器返回数据发送请求响应。代理服务器收到业务服务器发送的数据发送请求响应,根据接收的数据发送请求响应的端口以及存储的连接表确定用户终端的IP地址和端口,以及根据发送数据发送请求响应的业务服务器的IP地址和端口以及存储的遂道表确定防火墙连接SOCK5代理服务器的入口IP地址和端口。存储存储并根据防火墙连接SOCK5代理服务器的入口IP地址和端口将携带用户终端的IP地址和端口的数据发送请求响应发送给发防火墙防火墙在收到数据发送请求响应后,根据终端用户的IP地址和端口,将数据发送请求响应发送给用户终端。当然,在本发明实施例中,连接表和遂道表只是存储的一种形式,本领域的技术人员还可以想到以其它形式存储包含用户终端的IP地址和端口、SOCK5代理服务器的IP地址和SOCK5代理服务器分配的端口、防火墙连接SOCK5代理服务器的入口IP地址和端口、业务服务器IP地址和端口,如通过一个表单存储的形式等。
本发明实施例提供一种私网穿越的方法,如图2所示,包括,
B1、向代理服务器发送数据发送请求,所述数据发送请求中包含标志位、业务服务器IP地址和端口以及用户终端的IP地址的端口,以便于所述代理服务器根据所述标志位和所述用户终端的IP地址和端口获取与所述用户终端的IP地址和端口相对应的连接表,并利用连接表中的SOCK5代理服务器分配的端口将所述数据发送请求发送给业务服务器。
在执行此步骤之前,用户终端需要与SOCK5代理服务器建立TCP连接后向代理服务器发送认证请求,并在认证请求通过后,向代理服务器发送协商请求,并收到代理服务器发送的协商请求响应。
此外,在本步骤中用户终端通过防火墙向SOCK5代理服务器发送携带SIP数据包的数据发送请求时,所述数据包中包括SOCK5数据头。该SIP数据头中包含业务服务器IP地址和端口以及标志位为1的保留字段RSV。在数据发送请求经过防火墙时,防火墙将防火墙的出口IP地址和端口携带于该数据发送请求中
本发明实施例提供一种私网穿越的系统,如图3所示,包括,
代理服务器301,用于接收数据发送请求,所述数据发送请求中包含标志位、业务服务器302IP地址和端口以及用户终端的IP地址的端口;根据所述标志位和所述用户终端的IP地址和端口获取与所述用户终端的IP地址和端口相对应的连接表,利用连接表中的SOCK5代理服务器301分配的端口将数据发送请求发送给业务服务器302;
业务服务器302,用于接收所述代理服务器301发送的数据;
所述代理服务器301进一步用于,根据所述业务服务器302IP地址和端口确定没有存储与所述业务服务器302IP地址和端口相对应的遂道表,并存储包含所述业务服务器302IP地址和端口和所述防火墙连接SOCK5代理服务器的入口地址和端口的遂道表。
所述代理服务器301进一步用于,接收业务服务器302返回的数据发送请求响应,根据发送所述数据发送请求响应的业务服务器302的IP地址和端口获取与所述业务服务器302的IP地址和端口对应的遂道表,根据所述遂道表中的防火墙连接SOCK5代理服务器301的入口IP地址和端口将数据发送请求响应发送给防火墙。
所述代理服务器301进一步用于,根据接收所述数据发送请求响应的SOCK5代理服务器302的端口以及所述连接表获取用户终端的IP地址和端口,并将所述用户终端的IP地址和端口携带于发送给防火墙的数据发送请求响应,以便防火墙根据所述用户终端的IP地址和端口将接收到的数据发送请求响应发送给终端。
本发明实施例提供一种代理服务器,包括,
接收模块401,用于接收数据发送请求,所述数据发送请求中包含标志位、业务服务器IP地址和端口以及用户终端的IP地址的端口;
获取模块402,用于根据所述标志位和所述用户终端的IP地址和端口获取与所述用户终端的IP地址和端口相对应的连接表;
第一发送模块403,用于利用连接表中的代理服务器分配的端口将数据发送请求发送给业务服务器。
所述代理服务器进一步包括,存储模块404,用于根据所述业务服务器IP地址和端口确定没有存储与所述业务服务器IP地址和端口相对应的遂道表,并存储包含所述业务服务器IP地址和端口和所述防火墙连接SOCK5代理服务器的入口地址和端口的遂道表。
所述代理服务器进一步包括,第二发送模块405,用于接收业务服务器返回的数据发送请求响应,根据发送所述数据发送请求响应的业务服务器的IP地址和端口获取与所述业务服务器的IP地址和端口对应的遂道表,根据所述遂道表中的防火墙连接代理服务器的入口IP地址和端口将数据发送请求响应发送给防火墙。
所述代理服务器进一步包括,第三发送模块406,用于根据接收所述数据发送请求响应的SOCK5代理服务器的端口以及所述连接表获取用户终端的IP地址和端口,并将所述用户终端的IP地址和端口携带于发送给防火墙的数据发送请求响应,以便防火墙根据所述用户终端的IP地址和端口将接收到的数据发送请求响应发送给终端。
所述获取模块包括,查询子模块402a,用于根据所述用户终端的IP地址和端口查询是否存储有与所述用户终端的IP地址和端口相对应的连接表;
获取子模块402b,用于所述查询子模块查询存储有与所述用户终端的IP地址和端口相对应的连接表,则获取已存储的与所述用户终端的IP地址和端口相对应的连接表;
存储子模块402c,用于所述查询子模块查询没有存储与所述用户终端的IP地址和端口相对应的连接表,则分配与所述用户终端的IP地址和端口相对应的SOCK5代理服务器的端口,并存储包含所述用户终端的IP地址和端口及所述SOCK5代理服务器的端口的连接表。
为更好的理解上述实施例,下面结合私网穿越的方法的一个具体执行过程为例进行说明,流程示意图如图5所示,包括用户终端A,防火墙,SOCK5代理服务器,业务服务器,具体流程如下:
1、用户终端A向SOCK5代理服务器发送代理认证请求。
用户终端A与SOCK5代理服务器建立TCP连接,用户终端A向SOCK5代理服务器发送代理认证请求,该代理认证请求中包含用户名、密码等信息。
2、SOCK5代理服务器向用户终端A返回代理认证响应,表示认证通过;
3、用户终端A向SOCK5代理服务器发送用户数据报文协议协商请求(udpAssocute)。
4、SOCK5代理服务器向用户终端A返回用户数据报文协议协商请求响应(udpAssocute Reck)。
5、用户终端A将Socket会话层请求报文中的SRV设置为01,并将携带SOCK5数据头的数据发送请求经过防火墙发送给SOCKET5代理服务器。
用户终端A发送的数据发送请求的报文格式如下表所示:
VER |
CMD |
RSV |
ATYP |
DST.ADDR |
DST.PORT |
1 |
1 |
00 |
1 |
Variable |
2 |
其中RSV为保留字段,将RSV设为01,表示需要经过防火墙。
SOCKS5数据头如下所示:
在应用层,remote_address和remote_port为业务服务器的IP地址211.10.2.6和端口号9000。
在网络层,源IP地址和端口为用户终端A的IP地址和端口192.168.30.10:5000,目的IP地址和端口为SOCKET5代理服务器的IP地址和端口:202.10.2.5:1080。
6、防火墙将经过修改后的数据发送请求发送给代理服务器。
由于防火墙对数据发送请求进行了修改,将防火墙出口地址192.168.30.10:5000和防火墙连接SOCK5代理服务器的入口IP地址和端口202.102.3:6000携带于所述数据发送请求中,并将修改后的数据发送请求根据网络配置的SOCK5代理服务器的地址和端口发送给SOCKET5代理服务器,标志位RSV为01。
7、代理服务器存储隧道表和连接表。
SOCKET5代理服务器在收到防火墙发送的数据后,根据标志位RSV为01,判断需要建立连接表和隧道表,从数据发送请求中取出用户终端A的IP地址和端口192.168.30.10:5000,同时在SOCKET5代理服务器存储的连接表中查找是否存在终端的IP地址和端口为192.168.30.10:5000的连接表,若没有,则创建新的连接表,见下表:
终端的IP地址和端口 |
代理服务器的IP地址及分配的端口 |
192.168.30.10:5000 |
202.10.2.5:6000 |
这里,代理服务器在建立连接表时,为不同终端用户分配不同的端口,且同一用户的不同数据包经过相同的端口,在本实施例中SOCKET5代理服务器为本次业务分配的对口为6000。
接下来,从数据发送请求中取出业务服务器的IP地址和端口211.10.2.6:9000,同时查找是否存在业务服务器IP地址和端口为211.10.2.6:9000的隧道表,若没有,则创建新的隧道表,如下表:
防火墙连接SOCK5代理服务器的入口IP地址和端口,表示防火墙接收代理服务器发送数据的IP地址和端口
8、代理服务器根据业务服务器的IP地址和端口将数据发送请求发送给业务服务器。
SOCKET5代理服务器与业务服务器建立连接,并将数据包发送给业务服务器,业务服务器收到SOCKE5代理服务器发送的数据的同时,也会收到SOCKET5代理服务器的IP地址和SOCKET5代理服务器分配的端口211.10.2.6:9000。
9、业务服务器返回数据发送请求响应。
业务服务器在收到代理服务器的数据包后,进行处理,并根据SOCKET5代理服务器的IP地址和SOCKET5代理服务器分配的端口211.10.2.6:9000向代理服务器返回数据发送请求响应。
10、代理服务器根据存储好的连接表和隧道表确定用户终端A的IP地址和端口和防火墙连接SOCK5代理服务器的入口IP地址和端口。
代理服务器在收到业务服务器发送的处理结果后,根据存储的连接表的终端的IP和端口确定用户终端A的IP地址和端口为192.168.30.10:5000,根据隧道表中确定防火墙连接SOCK5代理服务器的入口IP地址和端口:202.102.3:6000。
11、代理服务器根据防火墙的入口IP地址和端口202.102.3:6000将数据发送请求响应发送给防火墙。
所述数据发送请求响应中携带用户终端A的IP地址和端口192.168.30.10:5000。
12、防火墙根据用户终端A的IP地址和端口将数据发送请求响应发送给用户终端A。
防火墙在收到处理结果后,根据用户终端A的IP地址和端口,将数据发送请求响应发送给用户终端。
本发明实施例采用接收用户终端用户A发起的数据发送请求,数据发送请求中包含标志位SRV和业务服务器IP地址和端口,并根据标志位和业务IP地址和端口存储连接表和隧道表,与业务服务器建立连接,将数据发送给所述业务服务器,同时,根据连接表和隧道表,将业务服务器返回的处理结果发送给所述用户终端,使得在私网穿越时实现双向通信时,不必为每次数据发送都分配一个端口,减少了工作量,提高了安全性,且无需在应用层做业务逻辑处理,就能支持双向通讯。
需要说明的是,通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。