1.搭建VPN的目的
图1所示,上面部分是总部网络150.0.1.0/24,网络边界是一台RedHat 9.0,使用Netfilter/Iptables防火墙,准备在这台服务器上安装PPTP VPN服务,这样分支机构就可通过PPTP VPN与其实现站点到站点的VPN连接,这里的分支机构是下方的192.168.254.0/24网络。两方都是通过ADSL接入因特网的,我们现在要通过PPTP VPN把分支网络与总部网络连接起来,使它们就像位于同一个局域网一样,这样分支机构就可以通过VPN连接总部的服务器,反之亦然。
2.PPTP VPN的基本原理
PPTP VPN本质上是虚拟的点对点链路,它先把到达远方内网的数据包打包成PPP帧,然后再对这些PPP帧进行二次封装,以便于能够在其他物理链路上进行传送。 PPTP VPN有控制信道和数据信道之分,控制信道连接到VPN报务器的TCP1723端口,起着控制和管理VPN隧道的功能,数据信道是传送PPP帧的信道,关于PPTP数据帧的封装过程如图所示:

在打包PPP帧的过程中,将对PPP数据包进行加密,为了取得最大的安全性,我们这里将使用MPPE加密和MSCHAPv2身份验证方法。下面我们来看看具体配置过程。
注:这里的PPTP只是一种协议,PPTP: Point to Point Tunneling Protocol -- 点到点隧道协议。读者不要被他迷惑了。实现VPN有多种协议可以选择,本文讲述的是使用PPTP协议来实现VPN,即:PPTP VPN.
3.安装和配置PPTP VPN 服务器
1)下载必要的安装包
Poptop环境需要软件包
1.Dkms(个人理解这个工具不是必需的,只是可以优化某些东西,后面有具体的说明)
2.kernel_ppp_mppe MPPE (Microsoft Point to Point Encryption,微软点对点加密)
3.ppp    (Point-to-Point Protocol,点到点协议)
4.pptpd(架设pptpd vpn服务器使用的软件,可以这么理解,就是因为使用了pptpd,所有此种方法架设的vpn才称之为pptpd vpn)
1、查看当前dkms版本(对于rpm命令的用法请读者自行查阅)
如果当前没有安装dkms则显示:
package dkms is not installed
下载dkms-2.0.arch.rpm,(个人理解这个工具不是必需的,只是可以优化某些东西),安装方法:# rpm –ivh dkms-2.0.arch.rpm
注:Oikawa等人在1996年提出一种与LKM类似的动态核心模块(DKMs)技术。与LKM一样,DKMs以文件的形式存储并能在系统运行过程中动态地加载和卸载。DKMs由一个用户层的DKM服务器来管理,并非由内核来管理。当核心需要某模块时,由DKM服务器负责把相应的DKM加载;当核心的内存资源紧缺时,由DKM服务器负责卸载一个没有被使用的DKM。缺点是所有的DKM是存储在本地系统上的,占用了大量宝贵的存储空间。
2、查看PPP版本
Linux系统本身有PPP功能,但它并不一定支持MPPE,用以下命令检查PPP版本
再用下面的命令查询该版本的PPP是否支持MPPE
若结果显示“0”则表示不支持,而“30”或更大的数字就表示支持,如果不支持则需要更新系统的PPP组件,下载ppp-2.4.2_cvs_20030610-1.i386.rpm,安装命令如下:
# rpm -Uvh ppp-2.4.2_cvs_20030610-1.i386.rpm
3、查看pptpd版本
如果内核中未安装pptpd则显示:
package pptpd is not installed
此时需要下载pptpd并安装它,可以选择pptpd-1.1.4-b4.i386.rpm,安装命令:
# rpm –ivh pptpd-1.1.4-b4.i386.rpm
4、确保Linex内核支持MPPE加密协议
要使用MPPE加密,还需要内核支持,Linux 2.6.14起Linux核心提供完整的PPTP支援《包括自由版本的MPPE》。查看内核版本可以使用命令:uname r,如果内核版本低于2.6.14还要下载一个MPPE内核补丁:kernel-mppe-2.4.20-8.i686.rpm,安装命令如下:
# rpm –ivh kernel-mppe-2.4.20-8.i686.rpm
安装之后可以检查kernel MPPE是否安装成功,输入如下命令:
# modprobe ppp-compress-18 && echo "OK" 
如果输出OK则表示安装成功
2)修改配置文件
1.改f文件
  编辑/f配置文件,加入如下内容:
  alias net-pf-47 ip_gre
注: 此配置文件在安装MPPE内核补丁后才会产生,内核版本高于2.6.14就不会有该文件(个人理解,正确性待定)
2.修改:/etc/fPPTP服务PPTPD运行时使用的配置文件
debug--------------------------------------------把所有debug信息记入系统日志/var/log/messages
option /etc/ppp/options.pptpd------------PPP组件将使用的配置文件
localip 221.6.15.150--------------------------分配给VPN服务器的地址,可以任意起
remoteip 192.168.1.1-100------------------VPN服务器分配给客户端的IP段,可以任意起
3.修改:/etc/ppp/options.pptpd
就是上面/f中的option所指定的,它是PPP功能组件pppd将使用的配置文件,由于PPTP VPN的加密和验证都与PPP相关,所以PPTP的加密和验证选项都将在这个配置文件中进行配置。
auth---------------------------------启用身份验证,为了安全,肯定需要进行身份验证
debug------------------------------
name cc3-------------------------自行设定的VPN服务器的名字,可以任意
refuse-pap------------------------拒绝pap身份验证
refuse-chap----------------------拒绝chap身份验证
refuse-mschap------------------拒绝mschap身份验证
refuse-eap -----------------------拒绝eap身份验证,这种方式本身不错,但这里不使用
require-mschap-v2------------为了最高的安全性,我们使用mschap-v2身份验证方法
require-mppe-128-------------要求128位MPPE加密,还可以是require-mppe
nomppe-stateful----------------无状态,有状态有mppe-stateful
ms-dns 150.0.1.88------------VPN服务器的DNS,存放在/f
#ms-wins 150.0.1.88---------
proxyarp-------------------------启用ARP代理,如果分配给客户端的IP与内网卡同一个子网
logfile /var/log/pptpd.log-----存放pptpd服务运行的的日志
multilink--------------------------
dump------------------------------
lock--------------------------------
4.修改:/etc/ppp/chap-secrets
在这里配置能够连接到VPN服务器的用户和密码信息
# Secrets for authentication using CHAP
# client        server  secret          IP addresses
  xyx          *      123456          *
>## redhat-config-network will overwrite this part (begin) >>
>## redhat-config-network will overwrite this part (end) >>##
xyx”是Client端的VPN用户名;“server”对应的是VPN服务器的名字,该名字必须和/etc/ppp/options.pptpd文件中指明的一样,或者设置成“*”号来表示自动识别服务器;“secret”对应的是登录密码;“IP addresses”对应的是可以拨入的客户端IP地址,如果不需要做特别限制,可以将其设置为“*”号
5.启动服务
到此VPN的配置文件就全部配置完成了,此时pptpd服务还没有启动,必需启动后才能被客户端连接
相关命令如下:
启动:        service pptpd start
停止:        service pptpd stop
重新启动:    service pptpd restart
pptpd服务使用的端口是1723,这个端口是系统固定分配的,可以通过查看该端口检查pptpd
服务的运行情况,命令:netstat –ntpllinux版本命令
如果服务已经启动,会看到下面的内容
tcp  0  0 0.0.0.0:1723          0.0.0.0:*            LISTEN      24981/pptpd
   
如果希望pptpd服务在每次服务器重启后自动开启,可以做下面的设置

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论