linux pptp vpn服务器的架设

来源:互联网 发布:淘宝新款女装 编辑:程序博客网 时间:2024/05/16 15:32

VPN的英文全称是“Virtual Private Network”,翻译过来就是“虚拟专用网络”。顾名思义,虚拟专用网络我们可以把它理解成是虚拟出来的企业内部专线。它可以通过特殊的加密的通讯协议在连接在Internet上的位于不同地方的两个或多个企业内部网之间建立一条专有的通讯线路,就好比是架设了一条专线一样,但是它并不需要真正的去铺设光缆之类的物理线路。这就好比去电信局申请专线,但是不用给铺设线路的费用,也不用购买路由器等硬件设备。VPN技术原是路由器具有的重要技术之一,目前在交换机,防火墙设备或Windows等软件里也都支持VPN功能,一句话,VPN的核心就是在利用公共网络建立虚

拟私有网。

  虚拟专用网(VPN)被定义为通过一个公用网络(通常是因特网)建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。虚拟专用网是对企业内部网的扩展。虚拟专用网可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。虚拟专用网可用于不断增长的移动用户的全球因特网接入,以实现安全连接;可用于实现企业网站之间安全通信的虚拟专用线路,用于经济有效地连接到商业伙伴和用户的安全外联网虚拟专用网。

  PPTP 全称为 Point to Point Tunneling Protocol -- 点到点隧道协议,是VPN协议中的一种。

   

    现在使用Linux的环境越来越多,比如总部使用Linux,但由于分支机构位置分散,不便于管理,所以还是使用windows,通常情况下我们都是通过VPN的方式把分支机构与总部连接起来。通常情况下VPNPPTP VPNIPSEC VPNL2TP VPN几种,PPTP最简便,IPSEC VPN最通用,各个平台都支持,L2TP VPN最安全,本人经过多次实验,终于成功,今天拿来给大家分享。

 

网络环境

[1]



    总部和分部都是通过ADSL接入因特网的,网络边界是一台RedHat Linux,使用iptables防火墙,准备在这台服务器上安装PPTP VPN服务,这样分支机构就可通过VPN连接总部的服务器,实现点到点的连接,使它们就像位于同一个局域网一样。(如图1所示)

 

PPTP VPN的基本原理

 

PPTP VPN本质上是虚拟的点对点链路,它先把到达远方内网的数据包打包成PPP帧,然后再对这些PPP帧进行二次封装,以便于能够在其他物理链路上进行传送。 PPTP VPN有控制信道和数据信道之分,控制信道连接到VPN报务器的TCP1723端口,起着控制和管理VPN隧道的功能,数据信道是传送PPP帧的信道,关于PPTP数据帧的封装过程(如图2所示) 

                                                  [2]


在打包PPP帧的过程中,将对PPP数据包进行加密,为了取得最大的安全性,我们这里将使用MPPE加密和MSCHAPv2身份验证方法。

 

下面我们来看看具体配置过程:

 

(一)     下载与安装

 

由于Linux本身并没有集成PPTP功能,所以需要安装相关组件以让我们的RedHat支持PPTP,根据内核的版本,下载相应的安装包,我这里内核是kernel2.6.9-5.EL ,所用组件在http://www.poptop.org下载,如下:

dkms-2.0.6-1.noarch.rpm

kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

ppp-2.4.3-5.rhel4.i386.rpm

pptpd-1.3.0-0.i386.rpm

 

1.     PPTP需要PPP支持虽然系统本身有PPP功能但它并不支持MPPE所以需要更新系统的PPP组件下载ppp-2.4.3-5.rhel4.i386.rpm安装命令如下
# rpm -Uvh 
ppp-2.4.3-5.rhel4.i386.rpm

 

2.     安装内核MPPE(Microsoft Point to Point Encryption,微软点对点加密)补丁,安装命令如下:

#rpm –ivh dkms-2.0.6-1.noarch.rpm

#rpm –ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

 

3.     安装pptpd,命令如下:

#rpm –ivh pptpd-1.3.0-0.i386.rpm

 

4.     用以下命令检查PPP是否支持MPPE

#strings '/usr/sbin/pppd'|grep -i mppe|wc --lines

46 <如果以上命令输出为“0”则表示不支持;输出为“30”或更大的数字就表示支持,我这里为46>

 

()修改配置文件

 

1. 编辑 /etc/pptpd.conf 文件,确定本地VPN服务器的IP地址和客户端登录后分配的IP地址范围。pptpd.confPPTP服务PPTPD运行时使用的配置文件,常用选项如下(#号后是选项说明)

option /etc/ppp/options.pptpd       #PPP组件将使用的配置文件
#stimeout 10         #
开始PPTP控制连接的超时时间,以秒计
debug                #
把所有debug信息记入系统日志/var/log/messages
localip 192.168.1.4            #
服务器VPN虚拟接口将分配的IP地址
remoteip 192.168.1.254       #
客户端VPN连接成功后将分配的IP,如果是地址范围                 可表示为192.168.1.200-234的形式

 

2. 编辑 /etc/ppp/options.pptpd 文件,它是PPP功能组件pppd将使用的配置文件,由于PPTP VPN的加密和验证都与PPP相关,所以PPTP的加密和验证选项都将在这个配置文件中进行配置。

 

lock
debug
auth           #
启用身份验证,为了安全,肯定需要进行身份验证(默认无此项)
name pptpd              #
相当于身份验证时的域,这里填上VPN服务器的名字
refuse-pap               #
拒绝pap身份验证
refuse-chap               #
拒绝chap身份验证
refuse-mschap            #
拒绝mschap身份验证
require-mschap-v2      #
为了最高的安全性,我们使用mschap-v2身份验证方法
require-mppe-128         #
要求128MPPE加密,还可以是require-mppe
#ms-dns 150.0.1.88        #VPN
客户端连接成功后将被分配的DNS参数
#ms-wins 150.0.1.88        #VPN
客户端连接成功后将被分配的WINS参数
proxyarp                #
启用ARP代理,如果分配给客户端的IP与内网卡同一个子网

就需要启用ARP代理

 

3. 编辑 /etc/ppp/chap-secrets文件,在此配置能够连接到VPN服务器的用户、密码和IP等信息:

# Secrets for authentication using CHAP

# client        server      secret               IP addresses

   aaa         pptpd       "qazxsw123456"   *

上面创建了一个用户aaa,注意密码用引号括起,不然有些字符(#)将导致不能登录,后面的IP地址栏你可以指定此用户登录后将分配的IP,如果不具体指定,请用*号代替。

 

()启动PPTP服务

 

如果要想开机启动PPTP服务,方法好几种,我比较常用的两条命令:

#ntsysv  (用空格键选中pptpd服务就OK)

#chkconfig –level 35 pptpd on

pptpd 是否启动成功,用命令 #service pptpd status 查看,若出现以下信息,则表示启动成功:

pptpd (pid ****) is running… (其中****为进程号)

还可以用 #netstat –an命令查看,TCP 1723端口是否处于监听状态,若出现

tcp 0  0 0.0.0.0:1723    0.0.0.0:*    LISTEN ,则为监听状态。

 

()防火墙配置

 

要让外部用户能连接PPTP VPN,还需要在防火墙中加入以下规则(也就是Linux服务器的1723端口和47端口打开,并打开GRE协议)

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

iptables -A INPUT -p tcp --dport 47 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT

 

()安装动态域名客户端软件

 

由于PPTP客户端需要知道PPTP服务器的IP,但这里的ADSL拨号又是动态IP,所以我们需要安装一个动态域名客户端软件,这样PPTP客户端只要知道服务器的动态域名就行了。可以使用金万维的免费动态域名,形如 *.gnway.net ,具体步骤如下:

1. 下载金万维gnhostlinux动态域名Linux/Unix下客户端软件

Linux命令行输入:

wget http://www.gnway.com/download/gnhostlinux1.3.2.tgz

 

2. 解压软件

Linux命令行输入:

tar -zxvf gnhostlinux1.3.2.tgz  

 

3. 运行安装程序

Linux命令行输入:

./install.sh   

 

4. 初始化配置文件

第一次启动的时候,要求输入用户名、密码,输入完成后,您的用户名/密码会保存在/etc/gnhostlinux.conf 中,方法如下:

Linux命令行输入:

/etc/rc.d/rc3.d/S99gnhostlinuxd start  

 

到这一步,您已经成功安装了软件,这样ADSL拨号之后动态域名客户端软件将自动更新域名和IP对应值。

=============================================

到这里Linux pptp vpn server的设置就完成了,剩下任务的就是用Windows客户端进行测试了。。。怎么测试,我想地球人都知道!!!

 

祝你成功!!!^_^


http://fifi258.blog.163.com/blog/static/3258274120082674845740/