基于HTTPS的大规模公共计算机管理系统的设计与开发
2013-09-27何鸣皋
◆何鸣皋
1 公共计算机管理系统的分析
在传统的高校教学环境中,公共计算机主要部署在公共计算机机房内,机房内部要么是每台计算机均直接连接至校园网,要么属于一个独立的局域网。如图1所示,在这种环境下,公共计算机管理软件通常用广播和点对点连接等方式实现管理服务器对机房计算机的控制,这种实现方式存在固有的局限性。
图1 传统的公共计算机管理系统结构图
首先,基于广播的管理系统,管理系统服务器通过局域网广播向客户端传输数据,只能在同一个局域网网段或是广播域中使用,从而使管理系统的应用局限在一个机房之中。
其次,点对点的连接方式要求服务器和客户端能够直接互相访问,不适合有NAT(网络地址转换)的网络环境,即客户端只能访问服务器,而服务器不能直接连接到客户端。
针对校园网内IPV4资源不足的问题,校园网常采用NAT将不同的教学环境分为多个子网。NAT虽然解决了IP资源不足的问题,也缩小了网络范围,一定程度上增强了网络的安全性和可控性,但也破坏了校园网内的连通性。NAT外的地址不能直接访问NAT内的内网地址,从而使基于局域网广播或点对点连接的网络应用不再有效。而传统的公共计算机管理系统大多都基于局域网广播或者服务器与客户端的点对点互连,因此无法再在复杂的校园网环境中使用。
另外,近年来很多高校都在进行校园网的实名制认证技术改造,常见的技术方案是采用RADIUS(远程用户拨号认证系统)来进行校园网管理[1],不但实现了校园网的实名制接入认证和上网计费,也通过PPPOE、L2TP VPN等协议解决了局域网广播和ARP欺骗的问题。PPPOE和L2TP协议工作在网卡设备之上,不依赖于本地网络设备的TCP/IP协议,拨号认证后由PPPOE服务器分配IP地址,计算机的本地网络设备不用设置IP地址,与相邻的计算机之间不构成局域网,从而很大程度上阻止了网络病毒的传播。但是通过PPPOE、L2TP等协议接入校园网的方式也打破了传统机房局域网的结构,因此,新型的公共计算机管理系统必须能够适应新的校园网环境。
传统的公共计算机管理系统,不适合在大范围的网络环境中应用,从而造成了目前拥有多校区、多机房的高校不易实现集中统一管理,多采用各校区、各机房独立管理的局面。因此,高校校园网环境的不断发展变化使传统的公共计算机管理系统不能适应需要,从而迫切需要重新设计管理系统的架构,适应新型的校园网结构,满足跨校区、大规模的统一管理需求。
2 新型公共计算机管理系统的设计
综上所述,基于局域网环境的传统公共计算机管理系统已经不能满足高校办学规模和校园网络的发展需要,所以必须设计并开发新型的大规模分布式公共计算机管理系统。在新型的管理系统中,首先要解决的是系统的性能问题。本文之前提到,在高校校区规模不断扩大,公共计算机数量不断增多的背景下,管理系统必须能够管理更多的计算机设备,能够负载更多的客户端并发访问。然而,在传统的管理系统中,往往采用基于局域网TCP/UDP的CS结构,有些甚至是由客户端直接访问数据库服务器,这种二层体系结构决定了管理软件不能够负载大量的客户端访问,并且使用范围也局限在局域网之中。
因此,在新型的公共计算机管理系统中,采用客户端—应用服务端—数据库的三层体系结构,如图2所示,其中应用服务端采用Apache HTTPD服务程序,在系统的数据传输中采用加密的HTTPS协议。由于高性能HTTP服务程序能够满足海量用户的并发访问需求,因此就解决了公共计算机管理系统在向多校区、多机房统一管理方向发展过程中出现的性能瓶颈问题。另外,采用HTTPS服务端还解决了公共计算机管理系统的数据传输安全性问题,在公共计算机管理系统的数据传输过程中,无论是客户端与服务器的连接,还是管理端对服务器的操作,如果采用明文传递信息的话,信息很容易在局域网中被监听或窃取,特别是在公共计算机管理系统涉及到上机金额的数据传输中,数据安全性显得尤为重要。而通过HTTPS的SSL数据加密,则能够在保证系统性能的基础上确保数据安全[2]。
图2 新型公共计算机管理系统体系结构图
采用HTTPS的服务端机制,还能够统一公共计算机管理系统的数据传递机制。在传统的公共计算机管理系统中,除了客户端与服务端的CS结构外,还要为对公共计算机管理系统进行管理操作,这样一般是通过建立管理端与服务端的CS结构来实现,或是在管理系统中单独采用BS结构,通过浏览器进行系统管理。而采用HTTPS的服务端的结构,无论公共计算机管理系统的客户端还是管理端,都通过HTTPS端口访问服务器,这样就统一了数据传递接口,系统客户端就是一个HTTPS客户端,而管理端可以直接通过浏览器访问HTTPS服务器。
2010年春,王述金被评为“全县宣传文化思想工作先进个人”。我高兴极了,立即拿着证书和奖金,搭车前往王述金家,却没有看到他的影子。他的弟弟王述银告诉我,哥哥已于去年10月份就不在了。我大为震惊,猛然想到,他不是快过年时,还送给我一包茶叶吗?
在新型公共计算机管理系统采用的三层体系结构中,应用层使用Apache或nginx等HTTPD服务结合PHP编程语言进行实现,PHP不但对HTTPD接收的客户端请求进行业务计算,还连接后台数据库进行数据存储。由于PHP能够采用封装的数据库接口对多种数据库软件进行操作,这样就实现了公共计算机管理系统的数据库无关性,可以灵活采用多种数据库软件作为系统的后台数据库。而本文采用MySQL数据库为例来进行系统的设计与分析,由于MySQL广泛应用于负载较大、对访问速度要求较高的Web应用后台数据库中,所以能够进一步提升公共计算机管理系统的性能。
新型公共计算机管理系统需要解决的另一方面的重要问题是,在校园网络新的结构条件下,实现对公共计算机设备的大规模和分布式管理。由于采用NAT或RADIUS技术的校园网的终端节点之间不再一定能相互直接连通,大量的节点被NAT或RADIUS隐藏在了网关之后,网关外的节点不再能够直接访问网关内的节点。在这种新的网络结构条件下,新型公共计算机管理系统采取客户端定时访问服务端的方式与服务端进行通讯,而服务端不主动访问客户端,如图3所示。
图3 新型公共计算机管理系统消息传递机制
在公共计算机管理系统中,除了之前提到过的服务端和管理端外,还有接受用户刷卡的刷卡端和安装在机房内PC机上的客户端。其中刷卡端在用户刷卡后将用户信息传递到服务器,改变用户状态数据为“刷卡上机”,使用户账号能够登录PC机;而客户端则接受用户的账号和密码输入,传递到服务器进行验证,通过后则允许用户使用PC机系统。最后,当用户关闭PC机并返回刷卡端刷卡时,将用户状态改为“刷卡”下机,统计用户的上机时间,计算上机金额,并进行扣费和储存到数据库中,从而完成整个上机过程。在上机过程中可以看出,用户在刷卡端刷卡上机、刷卡下机,以及在PC机客户端进行登录操作时,刷卡端和客户端都即时连接服务器,将数据传递到服务器并接收反馈数据。因此,这几个操作都是由用户主动发起,与服务端属于实时操作,在新型公共计算机管理系统的网络模式中都可以用客户端访问服务端完成。而在用户登录PC机后,客户端的主要作用是向服务端报告PC机的运行状态和接收服务端的指令,因此在这些环节中对实时操作的要求不高,完全可以通过客户端定时自动访问服务端来完成,这就解决了在服务端不能直接访问客户端的网络条件下,客户端与服务端进行消息传递的问题。
在本文实现的新型公共计算机管理系统中,客户端自动与服务端进行数据同步的频率(即客户端定时访问服务端的间隔时间)是可配置的,可以根据服务器的硬件性能、客户端的数量以及HTTPD服务的运行情况进行调整。
由客户端定时主动发起的访问请求机制虽然解决了服务器无法直接访问客户端的问题,可以满足公共计算机管理系统绝大多数的应用需求,但定时循环访问也降低了系统消息传递的实时性,与基于局域网广播的管理系统相比,向大量客户端统一发送指令的延迟较大。因此可以在客户端定时循环访问服务器的机制基础上,根据需要再采用HTTP长连接(HTTP persistent connections)技术实现服务器向客户端实时发送消息,从而结合两种机制的优点,在网络节点不能直接互连的复杂网络环境下也实现类似局域网广播的实时消息传递效果[3]。HTTP长连接技术通过服务器端在接受客服端请求后保持TCP连接不断开,从而用一个TCP连接处理多个HTTP请求和响应,实现了TCP连接的复用,与每次客户端请求都建立新的TCP连接相比,有效降低了系统负载。更重要的是由于TCP连接没有断开,服务器端可以实时向客户端发送消息,应用在公共计算机管理系统中可以通过控制服务器端向所有计算机发送重启和关机等系统命令。
在具体的系统开发中,可以用nginx的nginx_http_push_module模块来实现服务器端的HTTP长连接[4],而在客户端实现上,由于在HTTP/1.1中,默认使用的就是长连接方式,因此只要在客户端中不明确断开连接,就可以保持与服务器端的长连接。
3 新型公共计算机管理系统的开发
以Windows XP的GINA为例,可以设计一个GINA的登录对话框,包括用户名和密码输入框,以及登录确认按钮等,在点击确认按钮的函数中可以加入自定义的认证机制,即通过HTTPS协议向服务器发送HTTP POST请求,并接收服务器端的反馈,以确定是否允许用户登录。如果用户名和密码验证通过,则调用以下代码允许登录:
PostQuitMessage(0);
最终将自定义的GINA工程编译为一个DLL文件,如MyGina.dll,并且导入注册表替换系统自身的登录框:
REG ADD “HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon” /V GinaDLL /T REG_SZ /D MyGina.dll /F
在Windows Vista之后的Windows系统中,采用了新的登录认证接口:Credential Provider API。微软提供了进行Credential Provider二次开发的示例代码:Credential Provider Samples[7]。在SampleAllControlsCredentialPro vider.vcproj工程的CSampleCredential.cpp程序中也可以加入自定义的登录认证代码,并最终编译为SampleAllCont rolsCredentialProvider.dll,将以下注册表内容导入注册表以启用自定义的登录机制:
在实现了公共计算机管理系统的客户端和登录框之后,系统的用户数据、设备数据、计费、管理、报表等功能都集中在服务器端数据库中实现,各个学校可以根据自身需求设计和开发数据库,而系统的管理界面完全采用通过HTTPS协议Web方式访问和操作服务器端的数据库来实现。如在一个基本的公共计算机管理系统数据库中至少应该包括以下一些数据表:
1)机房,包含所有机房的位置、设备数量、编号等字段;
2)设备,包含所有计算机的编号、IP地址、MAC地址、所在机房等字段;
3)用户,包含用户姓名、卡号、余额等字段,在采用智能一卡通刷卡的环境中,可以在用户通过POS机刷卡时直接读取一卡通中信息并插入用户表;
4)账单,包含记录用户每次使用的刷卡上机时间、刷卡下机时间、使用时长、登录设备、计费金额等字段;
5)命令,定义服务器端向每个客户端发送的系统指令和执行状态,从而实现控制计算机关机、重启和执行系统命令等远程操作。
4 结束语
本文分析并设计的新型公共计算机管理系统,满足了在新的高校办学环境和校园网络环境下公共计算机机房的管理需求,在系统的核心结构上较传统的公共计算机管理系统更为精简可靠,可灵活选择多种实现技术,从而简化公共计算机管理系统的开发过程,使系统开发更加关注设备管理、课程管理、上机计费等实际应用功能,并且保障了公共计算机机房运行过程中的网络安全和信息安全。
[1]梁根.基于RADIUS的校园网认证管理系统的研究与实现[J].计算机技术与发展,2006(6):43-46.
[2]肖曦.基于HTTPS的统一通信系统安全设计[J].物联网技术,2011(5):67.
[3]姜毅.基于HTTP的实时信息传输方法[J].计算机工程与设计,2008(10):2451-2453.
[4]Nginx & Comet: Low Latency Server Push[EB/OL].[2013-05-04].http://www.igvita.com/2009/10/21/nginxcomet-low-latency-server-push/.
[5]Winlogon and GINA[EB/OL].[2013-07-04].http://msdn.microsoft.com/en-us/library/aa380543%28v=vs.85%29.aspx.
[6]Windows Interactive Logon Architecture[EB/OL].[2013-07-04].http://technet.microsoft.com/en-us/library/ff404303%28v=ws.10%29.aspx.
[7]Create Custom Login Experiences With Credential Providers For Windows Vista[EB/OL].[2013-07-04].http://msdn.microsoft.com/en-us/magazine/cc163489.aspx.