VPN是虚拟专用网(VirtualPrivateNetwork)的简称,是指在公共网络中建立虚拟的专用网络,使数据通过安全的“加密通道”在公共网络传送的一种技术。由于VPN不需要建立或租用专用的数据通信链路,而是通过现有公共网络来实现专用网络的效果,所以称为虚拟专用网。VPN作为远程访问和网络互联的高效、低价、安全可靠的解决方案,集灵活性、安全性、经济性及可扩展性于一身,可满足企业分支机构、移动办公等安全通信的需求。VPN的应用已经成为网络技术中的热点,在发达,VPN已成为一项相当普及的网络业务。近年来国内宽带的迅速发展带动了VPN及其架构在其平台上的各种高速网络应用,如视频会议、企业ERP/大型分布式海量数据仓库等应用都取得了飞速发展,同时VPN的应用反过来也促进了宽带内容的不断丰富,并进一步激活宽带应用。
  本文首先简要介绍VPN技术,然后从实用角度给出了在Linux操作系统下基于点对点隧道协议PPTP的VPN解决方案。
  基于PPTP协议的VPN服务器的实现
  由于开放源代码的Linux操作系统具有安全、稳定和高效等特性,使其迅速成为主要的服务器操作系统之一。下面将介绍Linux操作系统(这里选择与RedHat兼容的Linux发行版)下基于PPTP协议完全免费的VPN服务器解决方案。
  这里选择了“Poptop-ThePPTPServerforLinux”作为Linux下的VPN服务器的软件实现。Poptop是一个开放源代码项目,基于PPTP点对点隧道协议开发,支持Windows95/98/Me/NT/2000/XP及Linux的PPTP客户端。Poptop与微软的加密和认证协议(MSCHAPv2,MPPE40-128bitRC4加密)完全兼容,如果使用RADIUS插件还可以与微软网络环境(LDAP、SAMBA)进行无缝整合。
  pptpd是Poptop中重要的程序,它是Poptop的PPTP守护进程,用来管理所有的基于PPTP隧道协议的VPN连接。当pptpd接收到用户的VPN接入请求后会自动调用pppd程序去完成相应的认证过程,然后建立VPN连接。所以,要使Poptop正常工作必须安装PPP软件套件。下面将详细介绍Poptop的安装、配置和应用。
  1.PPP软件包的安装
  一般的Linux发行版本都自带PPP软件包,这里推荐使用Poptop官方站点(www.poptop.org)新发布的PPP软件包升级Linux发行版自带的PPP包。下载ppp-2.4.3-5.rhl9.i386.rpm后,使用命令“rpm-Uvhppp-2.4.3-5.rhl9.i386.rpm”完成对操作系统自带PPP软件包的升级。
  2.Poptop服务器的安装
  从Poptop的官方发布站点下载新的稳定版本。本文选择1.3.0的预编译版pptpd-1.3.0-0.i386.rpm(此版本要求PPP版本高于2.4.3)。使用命令“rpm-ivhpptpd-1.3.0-0.i386.rpm”完成软件的安装。
  3.配置Poptop服务器
  Poptop服务器的配置文件是/etc/pptpd.conf,主要配置如下:
  debug
  ppp/usr/sbin/pppd
  option/etc/ppp/options.pptpd
  localip192.168.0.1
  remoteip192.168.0.128-254
  上面代码中,debug指令打开调试模式,将调试信息发送到系统日志(syslogd)。ppp指令用来指定pppd程序的具体位置。option指令指明pptpd程序所需的配置文件的位置。localip指明建立VPN连接时VPN服务器端分配的IP地址。remoteip指明建立VPN连接时其客户端的IP地址。这里需要指出IP地址的写法,可以写多个IP地址用逗号隔开,或者指定IP地址范围,例如“192.168.0.234,192.168.0.245-249,192.168.0.254”。这里要注意,如果不设置localip,VPN服务器将对每一个VPN连接在服务器端各分配一个IP地址和对应的VPN客户通信。如果设置localip为单一的IP地址,则VPN服务器将对每一个VPN连接在服务器端都使用指定的IP地址和对应的VPN客户通信。如果设置localip为一个IP地址范围,VPN服务器将对每一个VPN连接在服务器端都使用指定的IP地址和对应的VPN客户通信;若地址分配完,则新的VPN连接将被拒绝。
  4.有关PPP的配置
  编辑PPP的配置文件/etc/ppp/options.pptpd(在poptop配置文件中option指令指定)为如下命令:
  debugnamepptpdauthrequire-chapproxyarp
  上面代码中,name指令用来指定服务器名;auth用来设置需要使用/etc/ppp/chap-secrets文件进行身份验证,require-chap设置使用chap认证;proxyarp用来实现arp代理功能。
  接下来编辑chap安全认证文件/etc/ppp/chap-secrets为如下一行命令:
  testpptpd123*
  其中test是ppp账号;pptpd是在/etc/ppp/options.pptpd中设置的服务器名;123是test账号的密码;“*”表示允许test账号从任何主机登入PPP服务器,类似的可以添加其它VPN用户。
  5.将Poptop的运行情况加入系统日志
  编辑syslogd的配置文件/etc/syslog.conf,增加如下一行命令:
  daemon.debug/var/log/pptpd.log
  然后重新启动syslogd守护进程,这样VPN服务器的运行日志将被保存在/var/log/pptpd.log文件中。
  6.启动Poptop服务器
  使用如下指令启动Poptop服务:
  servicepptpdstart
  或
  /etc/rc.d/init.d/pptpdstart
  至此,VPN服务器已经可以接受VPN客户端拨入,如果有问题,可以查看日志/var/log/pptpd.log
  Windows客户端远程拨入VPN服务器
  Poptop支持Windows和Unix等多种类型操作系统的VPN客户端,这里以WindowsXP为客户端介绍拨号进入VPN服务器。由于Windows系统内置PPTP协议的支持,所以可以直接进行拨号进入VPN服务器,以下是详细过程。
  1.建立VPN连接
  通过新建网络连接向导建立一个VPN连接。“网络连接类型”选择“连接到我的工作场所的网络(O)”,“网络连接”选择“虚拟专用网络连接(V)”,“连接名”可以输入自己要连接的公司名称,“VPN服务器选择”输入VPN服务器的公网IP地址。单击“完成”即可建立VPN连接。
  2.拨号进入VPN服务器
  双击新建立的VPN连接的快捷方式,在“连接”对话窗口中输入在VPN服务器上设置的用户名和密码。
  取消“属性”中“安全”标签下的“要求数据加密(没有加密断开)(I)”复选框。
  3.查看已建立的VPN连接
  在VPN客户端查看连接的状态。
  在VPN服务器上使用ifconfig命令查看网络状态。
  为VPN服务器启用MPPE加密