VPN技术在图书馆应用已久,但是面对数字资源种类繁多的授权访问方式,导致使用过程中出现了诸多问题,如:Web代理方式的VPN访问国外的部分数据库时,经常会出现浏览器无法自动跳转的情况;仅提供Web访问的VPN无法满足客户端和移动端的App的使用;需要安装浏览器插件的VPN无法在移动终端上使用。
鉴于此,笔者将图书馆数字资源的访问方式分为三类:第一类,Web页面访问的数字资源,如大多数电子数据库;第二类,客户端访问,如Endnote、NoteExpress等文献管理软件;第三类,移动终端访问,如书香中国、超星等需要在移动终端阅读的电子书。本文旨在选择一种VPN,可以满足数字资源的各类访问要求,提升用户体验。
01
VPN技术的选择
VPN技术对比
目前,VPN技术主要包括:PPTP、L2TP/IPSec、SSLVPN、OpenVPN和WebVPN几种,笔者通过表1对五种VPN进行对比。
表1 常见VPN技术比较
PPTP、L2TP/IPSec对网络要求很高,当运营商的网络存在地址转换设备时,将无法正常连接。目前,最常用的VPN技术主要为SSL VPN和WebVPN。
WebVPN提供基于Web的内网应用访问控制,允许授权用户访问只对内网开放的Web应用,实现类似VPN的功能。区别于传统VPN技术,WebVPN无需用户做任何配置或安装客户端软件及浏览器插件,直接在网页上通过身份验证即可进入内网应用,大大降低了使用门槛,提升了用户体验感。但是,WebVPN只适用于采用B/S架构的Web浏览器的应用,而对C/S架构的客户端和移动端的应用无法支持。
SSL VPN是以SSL协议为安全基础的VPN远程接入技术。远程用户使用SSLVPN可以安全方便地接入内网,访问内网资源;无需安装额外软件,直接使用浏览器访问内网Web资源,也可以通过安装浏览器插件,访问其他非Web资源;SSL VPN既支持全局流量,也支持局部流量,根据不同用户的身份,分配不同的访问权限,实现精细控制。
OpenVPN作为一个开源软件,就是一个典型的SSL VPN应用,使用的是工业标准的SSL/TLS协议。OpenVPN不是一个基于Web代理的应用,也不是基于浏览器访问,而是需要安装专门的客户端,其客户端可以支持当前所有主流终端类型。
OpenVPN技术
OpenVPN的技术核心是虚拟网卡,其次是SSL协议实现。虚拟网卡工作原理如图1所示。
图1 虚拟网卡工作原理
OpenVPN是一个基于SSL加密的纯应用层VPN协议,是SSL VPN的一种,支持UDP与TCP两种方式。UDP的效率会比较高,速度也相对较快。所以,尽量使用UDP连接方式,如果网络延迟高或者丢包严重,再使用TCP连接方式。
OpenVPN支持全局流量和局部流量两种方式,客户端软件可以很方便地配合路由表,实现不同线路的路由选择,实现一部分目标IP走VPN,另一部分目标IP走本地网络。
02
远程访问系统的功能设计与实现
OpenVPN功能设计
OpenVPN是一个强大、高度可配置的开源软件,可以根据场景和业务需求进行灵活部署。OpenVPN工作在OSI模型的第2层或第3层,使用SSL/TLS协议进行网络传输,支持多种认证方法,如证书、加上用户名密码的证书认证,还支持与LDAP等认证系统进行对接;支持多台部署以实现高可用与负载均衡;不但支持全流量的全路由模式,还支持指定流量的局部路由模式;具有完整的日志记录功能,支持通过自定义脚本实现用户访问资源的统计与监控。
本文根据图书馆的业务需求,主要在高可用性、局部路由推送、用户管理和日志监控等方面进行讨论,为其设计的系统结构如图2所示。
图2 OpenVPN系统架构
OpenVPN功能实现
1.多出口部署
很多高校的校园网采用多出口方案,校园网会根据校内用户所访问的外网资源所在ISP而自动选择相应的ISP出口。同理,外网用户访问校内资源最快的方式,也是选择相应的校园网ISP出口。
为了让用户在外网获得更快的访问速度,OpenVPN采用多出口部署,OpenVPN服务器分别在各ISP的出口做IP地址映射。其网络拓扑结构如图3所示。
图3 网络拓扑结构
在出口防火墙的in方向上,做出口IP到OpenVPN服务器的地址映射,其映射关系如表2所示。
表2 防火墙出口地址映射表
2.高可用负载均衡设计
OpenVPN采用两台部署,不仅实现VPN的高可用性,还可以进行流量的负载均衡。负载均衡采用DNS轮询方案,配合智能DNS的自动应答功能,实现不同ISP用户请求,返回对应的响应地址。
(1)利用DNS实现负载均衡。每次域名解析请求DNS会根据对应的负载均衡算法计算出一个不同的IP地址并返回,这样A记录中配置多个服务器就可以构成一个集群,并可以实现负载均衡。如用户请求openvpn.cpu.edu.cn,DNS根据A记录和负载均衡算法计算得到一个IP地址,并返回给用户,用户根据该IP地址,访问真实的物理服务器。所有这些操作对用户来说都是透明的,用户可能只知道openvpn.cpu.edu.cn这个域名即可。
(2)智能DNS根据来源IP实现智能应答。智能DNS技术能根据用户所在网络的不同,返回不同的解析结果。换言之,智能DNS技术可以智能地判断访问用户,然后根据不同的访问者把域名分别解析成不同的IP地址,从而达到让用户快速访问资源的目的。
当网络用户通过域名对openvpn.cpu.edu.cn进行访问时,DNS系统根据用户不同的源地址,分别做出不同地址的解析。教育网和三大运营商返回的IP地址为出口防火墙通过NAT功能将OpenVPN服务器的IP地址静态映射到一个公网的地址,这样外网用户便可高速访问OpenVPN服务。具体查询和解析过程如图4所示。
图4 智能DNS查询解析过程
DNS的View功能自动根据客户端IP来判断,然后把DNS请求指向分别相对应的区文件。这样,教育网用户解析出教育网的IP,联通用户解析出联通的IP,移动用户解析出移动的IP,其它用户解析出电信的IP,使用户避免跨网访问,从而提高访问速度。
3.用户端策略路由设计
默认情况下,VPN连接成功后会自动增加一些路由,并把VPN设置成默认网关,客户端所有的流量都会通过VPN来传送,这显然不是很合理。OpenVPN支持局部路由功能,可以指定哪些流量通过VPN,或者哪些流量不通过VPN,从而达到节省流量和提高访问速度的目的。
当校外用户访问图书馆的数字资源时,需要在OpenVPN服务器的配置文件中将数字资源对应的IP加入。OpenVPN服务器向客户端push路由,客户端通过pull指令获得服务器push的所有选项并应用。例如访问中国知网CNKI,需要访问,并加入到配置文件中。同理,其他数字资源也如此获得,其部分配置示例如下:
获取数字资源IP的方法可以有很多种,比如直接从数据商获得,或者通过工具查询获得。当然,OpenVPN也支持用户在客户端自己添加路由信息,格式为:route ip/域名,如route。
4.用户认证与管理
OpenVPN支持灵活的客户端授权方式,支持证书、智能卡、用户名和密码。图书馆拥有多种数字资源,并向师生提供VPN服务,最合适的认证方式就是用户名和密码认证,既简单安全又方便管理。用户名和密码认证既支持内建账号和密码,也支持与现有的LDAP或者radius服务器对接。本文采用与现有LDAP服务器进行对接,以实现用户的认证与管理。
LDAP的实现方式有很多方式,本文选用最简单的方式,即OpenVPN自带的LDAP插件实现。
(1)打开/etc/openvpn/server.conf文件,对部分内容进行修改,具体示例如下:
(2)打开/etc/openvpn/auth/ldap.conf文件,对部分内容进行修改,具体示例如下:
这样就完成了OpenVPN与负责用户管理的LDAP服务器对接,实现了VPN和用户管理两个功能的相互独立。独立的模块化部署,既稳定又安全,用户新建、删除,修改密码、更新属性等用户管理操作,在LDAP服务器上操作即可,避免每一次用户修改都会修改OpenVPN服务器,减少对VPN服务稳定性的影响。
03
客户端配置
客户端设置
客户端配置文件中的remote选项使用域名,即使多条运营商线路,也可以通过域名实现自动选路,而不必针对不同的运营商维护多个配置文件。
客户端配置使用用户名密码认证,用户名使用ldap认证,具体示例如下:
多客户端的支持
OpenVPN最大的优点就在于客户端操作系统支持比较广泛,通过安装OpenVPN-Client实现VPN访问,客户端支持的操作系统几乎涵盖了所有的主流系统,包括:Windows、Linux、Mac OS X、Android、IOS和DD-WRT等。
用户安装客户端,需要导入配置文件证书,涉及3个文件:ca.crt、ta.key(如果不开启tls-auth,则无需该文件)、client.ovpn。为了使移动端(安卓和苹果)顺利导入配置文件,需要将ca.crt和ta.key合并到client.ovpn中,具体示例如下:
04
日志与用户访问监控
用户访问监控
OpenVPN为校外师生访问图书馆数字资源提供稳定的VPN服务的同时,用户访问监控功能同样重要。管理员利用该功能,可以更详细地了解用户的登录与退出时间,登录IP和访问URL等信息。这样一旦出现恶意下载事件,管理员可以利用日志进行高效的事件追踪。本文根据OpenVPN的日志,利用自定义脚本统计用户的登录与退出等信息。
1.记录用户拨入脚本
建立/etc/openvpn/connect文件,具体示例如下:
2.记录用户退出脚本
建立/etc/openvpn/disconnect文件,具体示例如下:
3.修改OpenVPN服务器配置文件,启用脚本
打开/etc/openvpn/server.conf文件,对部分内容进行修改,具体示例如下:
这样每天就会在/var/log/openvpn下面建立文件名为2020-12-27这样的文件,该文件记录了当天登录OpenVPN的用户名和时间,输出如下:
定时报表
通过邮件将用户访问日志定时发送给管理员,可以让管理员详细了解每天用户的访问情况。
1.创建发信脚本
新建/etc/openvpn/mail2admin文件,编辑内容,具体示例如下:
2.定时发信
建立cron工作表,每天定时23:55发送当天的日志给管理员,具体示例如下:
笔者借鉴OpenVPN在其他行业的应用经验,构建低成本、易实施、高效率的数字资源远程访问系统。由于OpenVPN是开源的,并且在设计之初就充分考虑了系统的扩展性,所以在VPN的基础上可以很方便地扩展。
例如:用户连接数、日志审计等方面。高校图书馆可以进一步探索OpenVPN的功能,尤其是在数字资源访问量统计上做深入的开发,可以通过程序监控用户访问特定资源的时间和数量,对特定数字资源进行监控,对有可能被资源提供商视为“违规”下载的用户行为给予提醒和及时制止,避免因惩罚影响广大用户的合理使用。同时,也为图书馆数字资源建设、评估、采购等提供有力依据。
基金项目:江苏省工程技术文献信息资源及共享服务平台共享共建项目(7422000027/018)
作者:申继年1、刘新霞2(1为中国药科大学图书与信息中心,2为南京财经大学图书馆)
责编:陈永杰
投稿或合作,请联系:eduinfo@cernet.com
往期推荐
● 校园网 VPN 服务面临的安全挑战
● 案例分享丨高校图书馆数字资源远程服务
点击观看↓如何推进职业教育信息化
欢迎分享、点赞、在看
积极留言还会有惊喜好礼哦~
有话要说...