书签 分享 收藏 举报 版权申诉 / 7

一种穿透内网远程连接大规模虚拟机的方法.pdf

  • 上传人:1520****312
  • 文档编号:623302
  • 上传时间:2018-02-26
  • 格式:PDF
  • 页数:7
  • 大小:457.73KB
  • 摘要
    申请专利号:

    CN201310142306.6

    申请日:

    2013.04.23

    公开号:

    CN104125243A

    公开日:

    2014.10.29

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):H04L 29/08申请日:20130423|||公开

    IPC分类号:

    H04L29/08; H04L29/12; G06F9/455

    主分类号:

    H04L29/08

    申请人:

    浙江大学

    发明人:

    姜晓红; 黄鹏; 严海明; 吴朝晖; 杨红星

    地址:

    310000 浙江省杭州市西湖区浙大路38号

    优先权:

    专利代理机构:

    杭州裕阳专利事务所(普通合伙) 33221

    代理人:

    应圣义

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种基于代理方法,使得远程控制工具(vnc4server)可以穿透内网,连接局域网大规模机器集群中的任意虚拟机。本发明方法通过构造一个符合规则的url,直接向代理服务器发送请求,代理服务器通过解析请求的url,得到需要连接的内网虚拟机IP和端口号,向该虚拟机转发请求,并把虚拟机的响应转发给客户端。本发明不需要修改vnc4server服务端的任何配置,只需要部署一台代理服务器,用指定规则的url访问,就可以通过浏览器远程连接内网中的虚拟机(Linux和Windows)。本发明方法使用简单友好,部署简单易行,访问过程安全稳定可靠。

    权利要求书

    1.  一种穿透内网远程连接大规模虚拟机的方法,步骤如下:
    步骤a:在内网中的各个虚拟机上安装vnc4server开源软件,使用vnc4server软件,在网络互通的情况下,可以使用浏览器以桌面的方式远程登入Linux或Window机器;
    步骤b:选择一台具有外网IP和内网IP的双网卡服务器,这台服务器和其他物理机共同组成了一个集群;
    步骤c:将代理软件部署在选定的双网卡服务器上;由于代理部署在Linux服务器上,采用c语言,进程池+select模型的架构开发代理,该代理主要是处理http协议和vnc协议;
    步骤d:外网用户使用特定规则的url向代理服务器发送请求,即可连接远程的虚拟机,通过身份认证后,登入系统。

    2.
      根据权利要求1所述的穿透内网远程连接大规模虚拟机的方法,其特征在于:所述的步骤c中,代理服务器的处理http协议的流程如下:
    (1)监听外网IP端口,得到来自外网的http请求;
    (2)解析http请求中的url,得到需要连接的虚拟机IP和端口,并把源主机IP与目的虚拟机IP、端口映射起来,保存在一张表中;然后与目的虚拟机建立tcp连接,转发得到并经过重写的http请求;
    (3)监听内网IP端口,得到目的虚拟机的http响应,直接把该响应转发给对应的外网客户端。

    3.
      根据权利要求1所述的穿透内网远程连接大规模虚拟机的方法,其特征在于:所述的步骤c中,代理服务器的处理vnc协议的流程如下:
    (1)监听外网IP端口,得到来自外网的请求;
    (2)得到外网请求的源主机IP,查询映射表,向对应的目的虚拟机转发该请求,并等待目的虚拟机的响应;
    (3)得到目的虚拟机的响应,直接向对应的源主机IP转发该响应即可;
    以上即为代理软件的处理流程。

    说明书

    一种穿透内网远程连接大规模虚拟机的方法
    技术领域
    本发明涉及计算机网络领域,特别是涉及远程控制工具软件穿透内网的方法。
    背景技术
    本发明涉及远程控制协议,当前的主流有ssh协议、vnc协议等。
    SSH为Secure Shell的缩写,是一种为建立在应用层和传输层基础上的安全协议,是专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH客户端适用于多种平台,几乎所有Unix平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台—都可运行SSH。
    VNC(Virtual Network Computing),为一种使用RFB协定的屏幕画面分享及远程操作软件。此软件借由网络,可传送键盘与鼠标的动作及实时的屏幕画面。VNC与操作系统无关,因此可跨平台使用,例如可用Windows连接到某Linux的电脑,反之亦同。甚至在没有安装客户端程序的电脑中,只要有支持JAVA的浏览器,也可使用。
    由于我们的平台中申请的虚拟机既有Linux操作系统,也有Windows操作系统,我们选择vnc4server开源软件作为远程控制工具。
    对于外网访问内网中的机器,现有的技术就是使用NAT协议。
    网络地址转换(Network Address Translation或简称NAT)是一种在IP封包通过路由器或防火墙时重写源IP地址或/和目的IP地址的技术。NAT包括静态网络地址转换、动态网络地址转换、网络地址及端口转换、动态网络地址及端口转换、端口映射等。NAT的端口映射功能是将一台主机的假IP地址映射成一个真IP地址,当用户访问提供映射端口主机的某个端口时,服务器将请求转到内部一主机的提供这种特定服务的主机;利用端口映射功能还可以将一台真IP地址机器的多个端口映射成内部不同机器上的不同端口。端口映射功能还可以完成一些特定代理功能,比如代理POP,SMTP,TELNET等协议。
    利用端口映射,可以将集群内部的虚拟机映射到具有外网IP和内网IP的双网卡服务器上的端口,外网通过访问这台服务器上的某个端口就可以连接端口对应的虚拟机了。
     这种方法有很大的局限性,首先有用端口是受限的,而平台中的虚拟机资源是可以不断扩充的,很有可能没有足够的端口来映射虚拟机;其次,用一个数字(端口)来标明一台虚拟机,这种方法并不友好,难以记忆。
     发明内容
    针对当前的技术背景,本发明提出了一种基于代理的,能够使得vnc4server穿透内网,远程登入大规模集群平台中的任意虚拟机。这种方法使用简单友好,部署简单易行,扩展性高,访问过程安全稳定可靠。
    为了解决上述技术问题,本发明通过下述技术方案得以解决:
    一种穿透内网远程连接大规模虚拟机的方法,方法如下:
    步骤a:在内网中的各个虚拟机上安装vnc4server开源软件,使用vnc4server软件,在网络互通的情况下,可以使用浏览器以桌面的方式远程登入Linux或Window机器;
    步骤b:选择一台具有外网IP和内网IP的双网卡服务器,这台服务器和其他物理机共同组成了一个集群;这样,外网可以连通这台服务器,它又可以连接集群内网中的虚拟机。
    步骤c:将代理软件部署在选定的双网卡服务器上;由于代理部署在Linux服务器上,采用c语言,进程池+select模型的架构开发代理,该代理主要是处理http协议和vnc协议;
    首先是处理http协议请求,流程如下:
    (1)监听外网IP端口,得到来自外网的http请求;
    (2)解析http请求中的url,得到需要连接的虚拟机IP和端口,并把源主机IP与目的虚拟机IP、端口映射起来,保存在一张表中;然后与目的虚拟机建立tcp连接,转发得到并经过重写的http请求;
    (3)监听内网IP端口,得到目的虚拟机的http响应,直接把该响应转发给对应的外网客户端;
    接下来,代理需要处理vnc协议。我们的代理软件不关心vnc协议的具体格式,只是简单的接收转发,具体流程如下:
    (1)监听外网IP端口,得到来自外网的请求;
    (2)得到外网请求的源主机IP,查询映射表,向对应的目的虚拟机转发该
    请求,并等待目的虚拟机的响应;
    (3)得到目的虚拟机的响应,直接向对应的源主机IP转发该响应即可;
    以上即为代理软件的处理流程;
    步骤d:外网用户使用特定规则的url向代理服务器发送请求,即可连接远程的虚拟机,通过身份认证后,登入系统。
    我们规定的url格式是:
    http://代理服务IP:Port/目的虚拟机IP:Port/
    实际部署时,我们使用vnc4server默认的端口号5801,于是我们使用http://10.22.42.89:5801/192.168.110.26:5801/就可以通过远程桌面的方式连接云平台中对应的虚拟机了。
    本发明由于采用了以上技术方案,具有显著的技术效果:
    本发明是一种基于代理的,能够使得vnc4server穿透内网,远程登入大规模集群平台中的任意虚拟机,本发明方法使用简单友好,部署简单易行,访问过程安全稳定可靠。
    附图说明
    图1是用来说明整个方法的流程;
    图2是用来说明子进程处理http协议的工作流程;
    图3是用来说明子进程处理vnc协议的工作流程。
    具体实施方式
    下面结合附图1至附图3与实施例对本发明作进一步详细描述:
    实施例1
    1、进程池模型
    本发明的代理软件采用进程池模型,预先创建多个子进程,处理具体的代理工作,而主进程则维护进程池的大小。进程池的大小用配置文件的两个阈值MinSpareServers和MaxSpareServers维护。空闲进程个数的统计使用文件锁同步,当子进程进入任务处理流程时,空闲进程个数减一,当子进程退出任务处理流程时,空闲进程个数加一。当空闲进程个数小于MinSpareServers时,主进程创建新的工作进程,等待任务的到来,当空闲进程个数大于MaxSpareServers时,当前子进程退出。这样,就实现了进程池大小的维护。
         2、主进程工作流程
          主进程预先创建指定个数的子进程,接着维护进程池的大小。主进程每隔5s钟醒来,如果空闲进程个数小于MinSpareServers,则在子进程列表中寻找一个空槽位,创建一个新的子进程。至于空闲进程个数大于MaxSpareServers,这种情况不会出现,因为子进程退出任务处理流程时,会进行一次判断,如果空闲进程个数大于MaxSpareServers时,该子进程退出。
         3、子进程工作流程
          子进程承担代理的实际工作,转发请求和响应。子进程监听服务器的5801和5901端口(vnc4server默认配置使用这两个端口),如果是来自5801端口的连接请求,表明源主机发送的是http协议,进入http协议处理流程;如果来自5901端口的连接请求,表明源主机发送的是vnc协议,进入vnc协议处理流程。当流程结束时,空闲进程个数加一,如果空闲进程个数大于MaxSpareServers,该子进程退出,否则继续等待IO事件。
         3.1、处理http协议
          子进程使用select监听套接字的IO事件,对于IO事件,不同类型有不同的处理方法:
    (a)如果是http请求到达,解析url得到对应的目的虚拟机IP和端口。如果这是第一个请求,保存虚拟机IP和端口,并使用TCP连接目的虚拟机,把套接字加入select的监听队列中。查找映射表,得到对应的目的虚拟机的地址,向其发送经重写的http请求。
    (b)如果是http响应,查找映射表,得到源主机地址,向其转发该响应。
    (c)select等待超时,子进程结束。
         3.2、处理vnc协议
         子进程使用select监听套接字的IO事件,对于IO事件,不同类型有不同的处理方法:
    (a)如果是vnc请求到达,查找映射表,得到对应的目的虚拟机的地址,如果是第一个vnc请求,则与虚拟机建立TCP连接。接着向对应的套接字发送vnc请求。
    (b)如果是vnc响应,查找映射表,得到源主机地址,向其转发该响应。
    (c)select等待超时,子进程结束。
    总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。

    关 键  词:
    一种 穿透 远程 连接 大规模 虚拟机 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种穿透内网远程连接大规模虚拟机的方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-623302.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1