基于OpenVPN技术的校园VPN系统设计

2010-09-15 11:45
皖西学院学报 2010年5期
关键词:服务器端网卡校园网

王 谦

(安徽新闻出版职业技术学院包装工程系,安徽合肥 2 30601)

基于OpenVPN技术的校园VPN系统设计

王 谦

(安徽新闻出版职业技术学院包装工程系,安徽合肥 2 30601)

针对校园网安全的实际需要,提出了适合中等规模校园网的VPN协议选取和设计方案,并完成了与防火墙相结合的OpenVPN实现。

OpenVPN;路由

VPN是采用隧道技术以及加密、身份认证等方法,在共用网络上建立专用网络的技术。之所以称为虚拟网主要是因为整个VPN网络的任意两个结点之间的连接并没有传统专网建设所需的点到点的物理链路,而是架构在公用网络服务商ISP所提供的网络平台之上的逻辑网络。用户的数据是通过ISP在公共网络(Internet)中建立的逻辑隧道(Tunnel),即点到点的虚拟专线进行传输的。通过相应的加密和认证技术来保证用户内部网络数据在公网上安全传输,从而真正实现网络数据的专有性[1]。将VPN技术应用于校园网,可以突破校园专用网的地域性限制,优化校园网的管理和应用,满足师生在校园外访问校园网资源的要求。师生员工可以使用该系统进入校园网,并以校园网内部用户身份进行访问。本文针对校园网安全的实际需要,提出了适合中等规模校园网络的VPN协议选取和设计方案,并完成了与防火墙相结合的OpenVPN实现。

1 VPN协议选取

目前广泛使用的VPN实现主要是基于PPTP和IPSec协议的VPN方案。基于PPTP协议的VPN的优点是简单易用、兼容性好,缺点是具有安全隐患,而且当网络上存在防火墙或地址转换设备时,PPTP VPN可能不能正常连接;IPSec VPN的优越性在于它的安全性、互操作性,但是管理复杂且不支持多协议。SSL VPN是采用SSL(Security Socket Layer)协议来实现远程接入的一种新型VPN技术。OpenVPN通过使用SSL/TLS协议,实现OSI 2层及3层安全网络扩展,但它与常见的SSL VPN只能通过浏览器使用不同,它适用范围非常广泛,包括远程访问,站点到站点的VPN等,几乎可以实现IPSec VPN的全部功能,同时它通过TLS/SSL加密保证了数据传输的安全,并通过数据压缩提高数据传输速度。和PPTP VPN相比,OpenVPN支持从NA T设备后的连接,并且支持H TTP代理,对动态地址支持很好,配置简单易用,方式多样。目前,OpenV PN提供了Window s,Solaris,Linux,BSD等多种操作系统的客户端,具有较好的可移植性,远远超过了IPSec V PN实现对不同操作系统的支持[2]。因此,在本系统设计中,选择了以OpenVPN技术为基础的VPN方案,既保证了数据的安全和数据传输速度,又易于安装使用。在系统平台的选择上,客户端和服务器端均可选用目前流行的Linux或Window s操作系统。

1.1 OpenVPN虚拟网卡

在数据传输的过程中,OpenVPN使用虚拟网卡进行数据传输,虚拟网卡的使用是OpenVPN实现其SSL VPN功能的关键,其使用的驱动是Tun/tap驱动程序。

Tun/tap驱动程序中包含两个部分,一部分是字符设备驱动,还有一部分是网卡驱动部分。利用网卡驱动部分接收来自TCP/IP协议栈的数据包并发送或者反过来将接收到的数据包传给协议栈处理;而字符驱动部分则将数据包在内核与用户空间传送,模拟物理链路的数据接收和发送。Tun/tap设备提供的虚拟网卡驱动,从tcp/ip协议栈的角度而言,它与真实网卡驱动并没有区别。从驱动程序的角度来说,它与真实网卡的不同表现在tun/tap设备获取的数据不是来自物理链路,而是来自用户空间,Tun/tap设备驱动通过字符设备文件来实现数据从用户区的获取。发送数据时tun/tap设备也不是发送到物理链路,而是通过字符设备发送至用户区,再由用户区程序通过其他渠道发送[3]。

Tun设备使用的模式为路由模式,如同虚拟的点对点装置,由于连线后才决定VPN双方的连线路径,因此Tun驱动所处理的是OSILayer3的工作。而Tap设备使用的模式为网桥模式,如同虚拟的Ethernet网卡,所处理的是OSILayer2的工作。

由于Tun/tap所处理的是OSILayer2和Layer3的部分,因此很容易结合上层安全机制。同时也给OpenVPN提供了建立隧道的两种基本类型:路由IP隧道和桥接以太网隧道。

1.2 OpenVPN加密与认证

OpenVPN是一种基于SSL的开源VPN技术。SSL是一个介于H TTP层及TCP层的安全协议。传输的内容是经过加密的。OpenVPN使用SSL/TLS的握手协议来完成身份认证,在身份认证的同时,双方也实现了会话密钥的交换。

OpenVPN使用OpenSSL库加密及验证,所有加密都由OpenSSL库处理。它能够使用任何OpenSSL支持的算法,提高连接的安全性。同时OpenSSL的硬件加速也提高了OpenVPN的性能。OpenVPN缺省采用Blow fish算法给隧道数据加密,如果想采用其他加密算法,可以在配置文件中加入--cipher选项,如--cipher DES-EDE3-CBC将选择Trip le-DES算法进行加密。

OpenVPN中的会话认证采用TLS/SSL协议中的RSA/DHE来实现。会话认证的握手过程要交换4个消息(图1)[4]。会话认证结束后,OpenVPN就成功建立了VPN隧道。

1.3 OpenVPN的UDP/TCP通信

OpenVPN所有的通信都基于一个单一的IP端口,指定给OpenVPN的官方端口为1194[2]。如果想修改端口号,可以修改配置文件中port 1194语句,把端口号修改为所需值。默认情况下,OpenVPN使用UDP协议,UDP效率更高,因为它的信息头更小,不包含TCP提供的那种内建的确认检查信息包,不会像TCP那样增加额外的负载,性能较好些。但它也支持TCP协议。如果防火墙阻塞UDP传输,就需要使用TCP协议,在配置文件中使用p roto udp语句。

图1 OpenVPN会话认证过程

1.4 V PN与防火墙的结合

VPN服务器的主要作用就是通过远程接入VPN来为远程用户提供接入服务,这需要考虑VPN服务器与防火墙的配置问题。由于VPN服务器可以放置在网络的不同位置,如可以跟防火墙并行放置,也可以放置在防火墙前端或防火墙后端等。若放在防火墙前端或后端,VPN服务器处在校园内外数据交换的主干通道上,校园内外网络数据的交换都需要通过VPN服务器来处理,若校园内外数据交换比较频繁的话,则会给VPN服务器性能带来较大的压力。而如果将VPN服务器放置在防火墙前端,还需要更改防火墙配置,这影响了防火墙的安全保护功能。因此,在具体的设计过程中,将VPN服务器与防火墙并行,普通的内外网数据交换从防火墙走,而通过VPN请求的数据则从VPN服务器走,以降低V PN服务器的数据处理压力,提高VPN服务器性能。另外,在VPN服务器上进行的访问规则的配置,只对VPN请求有效,不会影响到其它的网络访问。具体的网络拓扑结构如图2所示。

图2 网络结构图

远程访问用户建立VPN连接之后,防火墙的安全策略仍然对远程用户有效,对原有的网络安全没有影响。

2 系统实现

2.1 系统安装准备工作

在VPN服务器端安装OpenVPN软件包,加载TUN/TAP内核模块。VPN Server中安装双网卡,eth0对外,IP:218.22.46.141 eth1对内,IP:192.168.0.13,内网地址:192.168.0.0/16。VPN Server中安装lzo,lzo-devel,M ysql,OpenVPN。创建一个tun设备,使用OpenVPN包自带的脚本生成根证书,并生成创建和签发服务器和客户端使用的证书。

2.2 服务器端路由和访问规则的设置

根据VPN系统方案的设计,远程用户通过VPN服务器,仅在访问校园内网以及一些特殊的外部地址如图书馆万方数据库镜像资源时必须走VPN专用隧道,在服务器端配置文件中添加路由。使用Open-VPN必须修改路由表[5]。

Linux服务器端路由设置:

#push“redirect-gateway”;不重定位网关

push“dhcp-op tion DNS 192.168.0.1”;远程连接客户端的域名服务由VPN服务器提供

当客户端连接VPN服务器时,由VPN服务器为客户端添加路由,将校园网IP范围和特殊公网的IP范围增加到客户端VPN路由表中,客户端按照此路由表进行访问。路由添加如下:

push“route 192.168.0.0 255.255.0.0”;增加客户端VPN路由-校园网IP范围

push“route 210.45.242.0 255.255.255.0”;增加客户端VPN路由-特殊的公网IP范围

push“route 210.45.210.0 255.255.255.0”;增加客户端VPN路由-特殊的公网IP范围

由于已在服务器端增加了客户端访问的路由,客户端配置文件中路由可省略

Linux服务器端Ip tables访问规则:

-A POSTROU TING-s 10.0.0.0/255.255.255.0-o eth0-j SNA T--to-source 192.168.0.13

来自客户端的数据路由至校园网

-A POSTROU TING-s 10.0.0.0/255.255.255.0-d!192.168.0.0/255.255.0.0-j MASQUERADE

目标IP为非校园网的数据路由至公网

2.3 使用PAM插件

在选用OpenVPN技术作为VPN实现方面,为简化证书的管理,身份认证方式采用的是用户名+密码,安装pam_mysql-0.7RC1[2],同时,Linux服务器端需要添加语句

2.4 Linux+php+M ysql设计用户管理模块

数据库采用M ysql,在数据库服务器上创建数据库表vpnuser,表结构如图3。编程实现客户端的密码修改及新增用户注册程序。

图3 vpnuser表结构

2.5 客户端登陆

对于Linux客户端,用如下命令启动 VPN:openvpn--config client.conf

对于Window s客户端,将OpenVPN官方网站中客户端软件下载安装后,其自带的GUI工具会装在系统托盘里。用鼠标右键单击图标,再点菜单里的connect,输入用户名和密码即可。

3 实验结果

在实验中,使用两台机器百兆物理网络连接,其中一台Pentium4 3.0GHz机器上运行CentOS 5.2,作为OpenVPN服务器,另一台作为客户端。Open-VPN采用TLS协议用于密钥交换,Blow fish算法作数据加密。实测当走VPN隧道用FTP传输一个预先压缩的大文件时,收/发传输速度最大达到了8.8MB/s,而不走VPN服务器的最大传输速率为9MB/s。实验证明,OpenVPN的加密算法对数据传输的影响不大,且在传输过程中并未出现掉线现象,性能较好。

4 总结

使用OvpnVPN技术建立的VPN系统,在调试成功并投入运行阶段后,用户反映良好。它实用性强,成本低,适用于中等规模的校园网。

[1]徐家臻,陈莘萌.基于IPSec与基于SSL的vpn的比较与分析[J].计算机工程与设计,2004,25(4):586-588.

[2]OpenVPNTM 2.0 HOW TO[EB/OL].http://openvpn.net/how to.htm l.2005,Sep tember.

[3]肖凌,李之棠,梅松.一种基于虚拟网卡的Window sVPN体系结构研究[J].小型微型计算机系统,2007,28(9):1586-1590.

[4]郭学超,翟正军.OpenVPN体系安全性研究[J].科学技术与工程,2007,7(8):1742-1745.

[5]程克勤,于博,周健,等.基于OpenVPN接入系统的设计与实现[J].厦门大学学报(自然科学版),2007,46(sup2):199-201.

Design of Campus VPN System Based on Open VPN Technology

WANG Qian
(Department of Packaging Engineering,Anhui News Publishing Vocational College,Hefei230601,China)

According to the needs of campus network security,this paper proposes the selection and design of VPN protocol which is suitable to themedium scale campus network,and discusses the implementation of the combination of the OpenVPN and firewall system.

OpenVPN;Route

TP393

A

1009-9735(2010)05-0036-03

2010-05-20

2008年安徽省教育厅自然科学基金项目(KJ2008B112)。

王谦(1975-),女,安徽合肥人,安徽新闻出版职业技术学院副教授,硕士,研究方向:网络安全、软件工程。

猜你喜欢
服务器端网卡校园网
Linux环境下基于Socket的数据传输软件设计
数字化校园网建设及运行的几点思考
部署Linux虚拟机出现的网络故障
试论最大匹配算法在校园网信息提取中的应用
Server 2016网卡组合模式
基于VRRP和MSTP协议实现校园网高可靠性
NAT技术在校园网中的应用
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
挑战Killer网卡Realtek网游专用Dragon网卡