鉴于此,笔者将图书馆数字资源的访问方式分为三类:第一类,Web页面访问的数字资源,如大多数电子数据库;第二类,客户端访问,如Endnote、NoteExpress等文献管理软件;第三类,移动终端访问,如书香中国、超星等需要在移动终端阅读的电子书。本文旨在选择一种VPN,可以满足数字资源的各类访问要求,提升用户体验。
01
VPN技术的选择
VPN技术对比
目前,VPN技术主要包括:PPTP、L2TP/IPSec、SSLVPN、OpenVPN和WebVPN几种,笔者通过表1对五种VPN进行对比。
表1常见VPN技术比较
PPTP、L2TP/IPSec对网络要求很高,当运营商的网络存在地址转换设备时,将无法正常连接。目前,最常用的VPN技术主要为SSLVPN和WebVPN。
SSLVPN是以SSL协议为安全基础的VPN远程接入技术。远程用户使用SSLVPN可以安全方便地接入内网,访问内网资源;无需安装额外软件,直接使用浏览器访问内网Web资源,也可以通过安装浏览器插件,访问其他非Web资源;SSLVPN既支持全局流量,也支持局部流量,根据不同用户的身份,分配不同的访问权限,实现精细控制。
OpenVPN作为一个开源软件,就是一个典型的SSLVPN应用,使用的是工业标准的SSL/TLS协议。OpenVPN不是一个基于Web代理的应用,也不是基于浏览器访问,而是需要安装专门的客户端,其客户端可以支持当前所有主流终端类型。
OpenVPN技术
OpenVPN的技术核心是虚拟网卡,其次是SSL协议实现。虚拟网卡工作原理如图1所示。
图1虚拟网卡工作原理
OpenVPN是一个基于SSL加密的纯应用层VPN协议,是SSLVPN的一种,支持UDP与TCP两种方式。UDP的效率会比较高,速度也相对较快。所以,尽量使用UDP连接方式,如果网络延迟高或者丢包严重,再使用TCP连接方式。
OpenVPN支持全局流量和局部流量两种方式,客户端软件可以很方便地配合路由表,实现不同线路的路由选择,实现一部分目标IP走VPN,另一部分目标IP走本地网络。
02
远程访问系统的功能设计与实现
OpenVPN功能设计
OpenVPN是一个强大、高度可配置的开源软件,可以根据场景和业务需求进行灵活部署。OpenVPN工作在OSI模型的第2层或第3层,使用SSL/TLS协议进行网络传输,支持多种认证方法,如证书、加上用户名密码的证书认证,还支持与LDAP等认证系统进行对接;支持多台部署以实现高可用与负载均衡;不但支持全流量的全路由模式,还支持指定流量的局部路由模式;具有完整的日志记录功能,支持通过自定义脚本实现用户访问资源的统计与监控。
本文根据图书馆的业务需求,主要在高可用性、局部路由推送、用户管理和日志监控等方面进行讨论,为其设计的系统结构如图2所示。
图2OpenVPN系统架构
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这个域名即可。
当网络用户通过域名对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,需要访问www.cnki.net、kns.cnki.net、image.cnki.net、wgcy.cnki.net等域名,通过DNS解析工具,将域名解析成对应的IP,并加入到配置文件中。同理,其他数字资源也如此获得,其部分配置示例如下:
获取数字资源IP的方法可以有很多种,比如直接从数据商获得,或者通过工具查询获得。当然,OpenVPN也支持用户在客户端自己添加路由信息,格式为:routeip/域名,如routewww.baidu.com。
4.用户认证与管理
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、MacOSX、Android、IOS和DD-WRT等。
用户安装客户端,需要导入配置文件证书,涉及3个文件:ca.crt、ta.key(如果不开启tls-auth,则无需该文件)、client.ovpn。为了使移动端(安卓和苹果)顺利导入配置文件,需要将ca.crt和ta.key合并到client.ovpn中,具体示例如下:
04
日志与用户访问监控
用户访问监控
1.记录用户拨入脚本
建立/etc/openvpn/connect文件,具体示例如下:
2.记录用户退出脚本
建立/etc/openvpn/disconnect文件,具体示例如下:
3.修改OpenVPN服务器配置文件,启用脚本
打开/etc/openvpn/server.conf文件,对部分内容进行修改,具体示例如下:
定时报表
通过邮件将用户访问日志定时发送给管理员,可以让管理员详细了解每天用户的访问情况。
1.创建发信脚本
新建/etc/openvpn/mail2admin文件,编辑内容,具体示例如下:
2.定时发信
建立cron工作表,每天定时23:55发送当天的日志给管理员,具体示例如下:
笔者借鉴OpenVPN在其他行业的应用经验,构建低成本、易实施、高效率的数字资源远程访问系统。由于OpenVPN是开源的,并且在设计之初就充分考虑了系统的扩展性,所以在VPN的基础上可以很方便地扩展。
基金项目:江苏省工程技术文献信息资源及共享服务平台共享共建项目(7422000027/018)
作者:申继年1、刘新霞2(1为中国药科大学图书与信息中心,2为南京财经大学图书馆)