《一种穿透内网远程连接大规模虚拟机的方法.pdf》由会员分享,可在线阅读,更多相关《一种穿透内网远程连接大规模虚拟机的方法.pdf(7页完整版)》请在专利查询网上搜索。
1、10申请公布号CN104125243A43申请公布日20141029CN104125243A21申请号201310142306622申请日20130423H04L29/08200601H04L29/12200601G06F9/45520060171申请人浙江大学地址310000浙江省杭州市西湖区浙大路38号72发明人姜晓红黄鹏严海明吴朝晖杨红星74专利代理机构杭州裕阳专利事务所普通合伙33221代理人应圣义54发明名称一种穿透内网远程连接大规模虚拟机的方法57摘要本发明公开了一种基于代理方法,使得远程控制工具(VNC4SERVER)可以穿透内网,连接局域网大规模机器集群中的任意虚拟机。本发明方。
2、法通过构造一个符合规则的URL,直接向代理服务器发送请求,代理服务器通过解析请求的URL,得到需要连接的内网虚拟机IP和端口号,向该虚拟机转发请求,并把虚拟机的响应转发给客户端。本发明不需要修改VNC4SERVER服务端的任何配置,只需要部署一台代理服务器,用指定规则的URL访问,就可以通过浏览器远程连接内网中的虚拟机(LINUX和WINDOWS)。本发明方法使用简单友好,部署简单易行,访问过程安全稳定可靠。51INTCL权利要求书1页说明书3页附图2页19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书3页附图2页10申请公布号CN104125243ACN104125243A。
3、1/1页21一种穿透内网远程连接大规模虚拟机的方法,步骤如下步骤A在内网中的各个虚拟机上安装VNC4SERVER开源软件,使用VNC4SERVER软件,在网络互通的情况下,可以使用浏览器以桌面的方式远程登入LINUX或WINDOW机器;步骤B选择一台具有外网IP和内网IP的双网卡服务器,这台服务器和其他物理机共同组成了一个集群;步骤C将代理软件部署在选定的双网卡服务器上;由于代理部署在LINUX服务器上,采用C语言,进程池SELECT模型的架构开发代理,该代理主要是处理HTTP协议和VNC协议;步骤D外网用户使用特定规则的URL向代理服务器发送请求,即可连接远程的虚拟机,通过身份认证后,登入系。
4、统。2根据权利要求1所述的穿透内网远程连接大规模虚拟机的方法,其特征在于所述的步骤C中,代理服务器的处理HTTP协议的流程如下(1)监听外网IP端口,得到来自外网的HTTP请求;(2)解析HTTP请求中的URL,得到需要连接的虚拟机IP和端口,并把源主机IP与目的虚拟机IP、端口映射起来,保存在一张表中;然后与目的虚拟机建立TCP连接,转发得到并经过重写的HTTP请求;(3)监听内网IP端口,得到目的虚拟机的HTTP响应,直接把该响应转发给对应的外网客户端。3根据权利要求1所述的穿透内网远程连接大规模虚拟机的方法,其特征在于所述的步骤C中,代理服务器的处理VNC协议的流程如下(1)监听外网IP。
5、端口,得到来自外网的请求;(2)得到外网请求的源主机IP,查询映射表,向对应的目的虚拟机转发该请求,并等待目的虚拟机的响应;(3)得到目的虚拟机的响应,直接向对应的源主机IP转发该响应即可;以上即为代理软件的处理流程。权利要求书CN104125243A1/3页3一种穿透内网远程连接大规模虚拟机的方法技术领域0001本发明涉及计算机网络领域,特别是涉及远程控制工具软件穿透内网的方法。背景技术0002本发明涉及远程控制协议,当前的主流有SSH协议、VNC协议等。0003SSH为SECURESHELL的缩写,是一种为建立在应用层和传输层基础上的安全协议,是专为远程登录会话和其他网络服务提供安全性的协。
6、议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH客户端适用于多种平台,几乎所有UNIX平台包括HPUX、LINUX、AIX、SOLARIS、DIGITALUNIX、IRIX,以及其他平台都可运行SSH。0004VNC(VIRTUALNETWORKCOMPUTING),为一种使用RFB协定的屏幕画面分享及远程操作软件。此软件借由网络,可传送键盘与鼠标的动作及实时的屏幕画面。VNC与操作系统无关,因此可跨平台使用,例如可用WINDOWS连接到某LINUX的电脑,反之亦同。甚至在没有安装客户端程序的电脑中,只要有支持JAVA的浏览器,也可使用。0005由于我们的平台中申请的虚拟机既。
7、有LINUX操作系统,也有WINDOWS操作系统,我们选择VNC4SERVER开源软件作为远程控制工具。0006对于外网访问内网中的机器,现有的技术就是使用NAT协议。0007网络地址转换(NETWORKADDRESSTRANSLATION或简称NAT)是一种在IP封包通过路由器或防火墙时重写源IP地址或/和目的IP地址的技术。NAT包括静态网络地址转换、动态网络地址转换、网络地址及端口转换、动态网络地址及端口转换、端口映射等。NAT的端口映射功能是将一台主机的假IP地址映射成一个真IP地址,当用户访问提供映射端口主机的某个端口时,服务器将请求转到内部一主机的提供这种特定服务的主机;利用端口映。
8、射功能还可以将一台真IP地址机器的多个端口映射成内部不同机器上的不同端口。端口映射功能还可以完成一些特定代理功能,比如代理POP,SMTP,TELNET等协议。0008利用端口映射,可以将集群内部的虚拟机映射到具有外网IP和内网IP的双网卡服务器上的端口,外网通过访问这台服务器上的某个端口就可以连接端口对应的虚拟机了。0009这种方法有很大的局限性,首先有用端口是受限的,而平台中的虚拟机资源是可以不断扩充的,很有可能没有足够的端口来映射虚拟机;其次,用一个数字(端口)来标明一台虚拟机,这种方法并不友好,难以记忆。0010发明内容针对当前的技术背景,本发明提出了一种基于代理的,能够使得VNC4S。
9、ERVER穿透内网,远程登入大规模集群平台中的任意虚拟机。这种方法使用简单友好,部署简单易行,扩展性高,访问过程安全稳定可靠。0011为了解决上述技术问题,本发明通过下述技术方案得以解决一种穿透内网远程连接大规模虚拟机的方法,方法如下步骤A在内网中的各个虚拟机上安装VNC4SERVER开源软件,使用VNC4SERVER软件,说明书CN104125243A2/3页4在网络互通的情况下,可以使用浏览器以桌面的方式远程登入LINUX或WINDOW机器步骤B选择一台具有外网IP和内网IP的双网卡服务器,这台服务器和其他物理机共同组成了一个集群;这样,外网可以连通这台服务器,它又可以连接集群内网中的虚拟。
10、机。0012步骤C将代理软件部署在选定的双网卡服务器上;由于代理部署在LINUX服务器上,采用C语言,进程池SELECT模型的架构开发代理,该代理主要是处理HTTP协议和VNC协议;首先是处理HTTP协议请求,流程如下(1)监听外网IP端口,得到来自外网的HTTP请求;(2)解析HTTP请求中的URL,得到需要连接的虚拟机IP和端口,并把源主机IP与目的虚拟机IP、端口映射起来,保存在一张表中;然后与目的虚拟机建立TCP连接,转发得到并经过重写的HTTP请求;(3)监听内网IP端口,得到目的虚拟机的HTTP响应,直接把该响应转发给对应的外网客户端;接下来,代理需要处理VNC协议。我们的代理软件。
11、不关心VNC协议的具体格式,只是简单的接收转发,具体流程如下(1)监听外网IP端口,得到来自外网的请求;(2)得到外网请求的源主机IP,查询映射表,向对应的目的虚拟机转发该请求,并等待目的虚拟机的响应;(3)得到目的虚拟机的响应,直接向对应的源主机IP转发该响应即可;以上即为代理软件的处理流程;步骤D外网用户使用特定规则的URL向代理服务器发送请求,即可连接远程的虚拟机,通过身份认证后,登入系统。0013我们规定的URL格式是HTTP/代理服务IPPORT/目的虚拟机IPPORT/实际部署时,我们使用VNC4SERVER默认的端口号5801,于是我们使用HTTP/102242895801/19。
12、2168110265801/就可以通过远程桌面的方式连接云平台中对应的虚拟机了。0014本发明由于采用了以上技术方案,具有显著的技术效果本发明是一种基于代理的,能够使得VNC4SERVER穿透内网,远程登入大规模集群平台中的任意虚拟机,本发明方法使用简单友好,部署简单易行,访问过程安全稳定可靠。附图说明0015图1是用来说明整个方法的流程;图2是用来说明子进程处理HTTP协议的工作流程;图3是用来说明子进程处理VNC协议的工作流程。具体实施方式0016下面结合附图1至附图3与实施例对本发明作进一步详细描述实施例1说明书CN104125243A3/3页51、进程池模型本发明的代理软件采用进程池模。
13、型,预先创建多个子进程,处理具体的代理工作,而主进程则维护进程池的大小。进程池的大小用配置文件的两个阈值MINSPARESERVERS和MAXSPARESERVERS维护。空闲进程个数的统计使用文件锁同步,当子进程进入任务处理流程时,空闲进程个数减一,当子进程退出任务处理流程时,空闲进程个数加一。当空闲进程个数小于MINSPARESERVERS时,主进程创建新的工作进程,等待任务的到来,当空闲进程个数大于MAXSPARESERVERS时,当前子进程退出。这样,就实现了进程池大小的维护。00172、主进程工作流程主进程预先创建指定个数的子进程,接着维护进程池的大小。主进程每隔5S钟醒来,如果空闲。
14、进程个数小于MINSPARESERVERS,则在子进程列表中寻找一个空槽位,创建一个新的子进程。至于空闲进程个数大于MAXSPARESERVERS,这种情况不会出现,因为子进程退出任务处理流程时,会进行一次判断,如果空闲进程个数大于MAXSPARESERVERS时,该子进程退出。00183、子进程工作流程子进程承担代理的实际工作,转发请求和响应。子进程监听服务器的5801和5901端口(VNC4SERVER默认配置使用这两个端口),如果是来自5801端口的连接请求,表明源主机发送的是HTTP协议,进入HTTP协议处理流程;如果来自5901端口的连接请求,表明源主机发送的是VNC协议,进入VNC。
15、协议处理流程。当流程结束时,空闲进程个数加一,如果空闲进程个数大于MAXSPARESERVERS,该子进程退出,否则继续等待IO事件。001931、处理HTTP协议子进程使用SELECT监听套接字的IO事件,对于IO事件,不同类型有不同的处理方法(A)如果是HTTP请求到达,解析URL得到对应的目的虚拟机IP和端口。如果这是第一个请求,保存虚拟机IP和端口,并使用TCP连接目的虚拟机,把套接字加入SELECT的监听队列中。查找映射表,得到对应的目的虚拟机的地址,向其发送经重写的HTTP请求。0020(B)如果是HTTP响应,查找映射表,得到源主机地址,向其转发该响应。0021(C)SELECT。
16、等待超时,子进程结束。002232、处理VNC协议子进程使用SELECT监听套接字的IO事件,对于IO事件,不同类型有不同的处理方法(A)如果是VNC请求到达,查找映射表,得到对应的目的虚拟机的地址,如果是第一个VNC请求,则与虚拟机建立TCP连接。接着向对应的套接字发送VNC请求。0023(B)如果是VNC响应,查找映射表,得到源主机地址,向其转发该响应。0024(C)SELECT等待超时,子进程结束。0025总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。说明书CN104125243A1/2页6图1图2说明书附图CN104125243A2/2页7图3说明书附图CN104125243A。