Fedora core 2下建立支持MPPE/MPPC的PPTP VPN服务器

(声明:本文章仅供个人学习使用,版权归原文作者所有)

一、简介
前段时间笔者写了一篇《Fedora core 2下建立Poptop服务器以及常见问题》的文章,收到许多朋友的欢迎,但是那篇文章只支持MPPE数据加密,不支持MPPC数据压缩,未免有些遗憾,所以笔者再接再厉阅读了一些文档,终于使PPTP VPN实现了MPPC数据压缩功能。首先我们先来介绍一下MPPE/MPPC的概念。

MPPE:Microsoft Point-to-Point Encryption,微软的点对点加密协议,可以对在点对点链路上传输的数据包进行加密,详细介绍请见RFC3078和RFC3079。

MPPC:Microsoft Point-to-Point Compression,微软的点对点压缩协议,可以对在点对点链路上传输的数据包进行压缩,详细介绍请见RFC21189。

那么要想在Linux环境下使PPTP VPN支持这两种协议,需要做两件事情:第一、给Linux内核打补丁,然后重新编译内核,让内核支持MPPE/MPPC。第二、给ppp套件打补丁,让ppp也支持MPPE/MPPC。好啦,知道了原理就好办了,下面就让我们一起来实现这些功能吧。

首先先来看看我们试验的环境,一台安装了Fedora core 2的服务器充当了连接内网与外网的NAT主机以及VPN服务器的作用。外网网卡IP:211.137.115.5,内网网卡IP:10.100.0.200。网络拓扑图如下:

http://www.gbunix.com/showimg.php?iid=335
图1:网络拓扑图

二、下载
先来看看我们需要下载的套件吧。2.6.5-1.358
1、Linux Kernel 2.6.6
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.gz
2、linux-2.6.6-mppe-mppc-1.0.patch.gz
http://www.polbox.com/h/hs001/linux-2.6.6-mppe-mppc-1.0.patch.gz
3、ppp-2.4.3
ftp://ftp.samba.org/pub/ppp/ppp-2.4.3.tar.gz
4、ppp-2.4.3-mppe-mppc-1.1.patch.gz
http://www.polbox.com/h/hs001/ppp-2.4.3-mppe-mppc-1.1.patch.gz
5、pptp-1.1.4
http://internap.dl.sourceforge.n ... tpd-1.1.4-b4.tar.gz
       把这些都下载到/usr/src目录下面,然后准备进行安装与配置。

三、安装

1、重新编译Linux内核,以支持MPPE/MPPC

  Fedora core 2默认的内核版本为kernel 2.6.5-1.358,是不支持MPPE/MPPC的,所以我们要重新下载内核文件并且重新编译才行,这里选用了Kernel 2.6.6。
//解压缩内核文件
#tar zxvf linux-2.6.6.tar.gz
//给内核文件打补丁
#patch –p0 –i linux-2.6.6-mppe-mppc-1.0.patch.gz
#cd linux-2.6.6
//进入Linux内核文本配置界面
#make menuconfig
选择进入Device Drivers -> Networking support ->
<> PPP BSD-Compress compression
<> Microsoft PPP compression/encryption (MPPC/MPPE)
找到上面两项,分别按下空格键,最前面的<>就会变成<M>,如下
<M> PPP BSD-Compress compression
<M> Microsoft PPP compression/encryption (MPPC/MPPE)
表示将这两项以模块形式编译到内核里面。然后保存退出。
//建立相依的属性关系
#make dep
//将旧的资料删除
#make clean
//开始编译内核
#make bzImage
//开始编译模块
#make modules
//将资料安装在/lib/modules/2.6.6里面
#make modules_install
//将刚刚make bzImage建立完成的内核安装到系统里面
#make install

好啦,经过上面7个步骤就完成了内核编译的工作,是不是很简单呀,所以大家不要认为编译Linux内核很复杂,其实是非常简单的。
因为我们是以模块方式来安装补丁的,所以每次系统启动时都需要加载模块才行,因此我们要在/etc/rc.d/rc.local里面写入一行:
/sbin/modprobe ppp_mppe_mppc

2、安装PPP套件

因为Fedora core 2默认情况下已经安装了ppp-2.4.2-2,但是并不支持MPPE/MPPC,因此我们要先把它卸载掉,然后手工编译安装PPP。
#rpm -e --nodeps ppp
//解压缩ppp-2.4.3
#tar zxvf ppp-2.4.3.tar.gz
//给ppp打补丁
#patch –p0 –i ppp-2.4.3-mppe-mppc-1.1.patch.gz
#cd ppp-2.4.3
//进行编译安装
#./configure
#make
#make install

3、安装pptp套件

#tar zxvf pptpd-1.1.4-b4.tar.gz
#cd pptpd-1.1.4-b4
#./configure
#make
#make install
      好啦,到这里我们已经完成了全部的安装工作,下面将要进行最后的配置工作了。

四、配置

这里需要修改如下3个配置文件。
/etc/pptpd.conf              // Poptop配置文件
/etc/ppp/options.pptpd        // Poptop选项文件
/etc/ppp/chap-secrets         //账号、密码存放文件

/etc/pptpd.conf
option /etc/ppp/options.pptpd
debug
Logwtmp
localip 10.100.0.201
remoteip 10.100.0.202-210

/etc/ppp/options.pptpd
name pptp
lock
mtu 1450
mru 1450
proxyarp
auth
ipcp-accept-local
ipcp-accept-remote
lcp-echo-failure 3
lcp-echo-interval 5
deflate 0

# Handshake Auth Method
+chap
+mschap-v2

# Data Encryption Methods
mppe required

/etc/ppp/chap-secrets
#VPN客户账号和密码。
# Secrets for authentication using CHAP
# client    server       secret             IP addresses
“username1” pptpd  “password1”   *
“username2” pptpd  “password2”   10.100.0.203
注意:后面的IP地址栏可以知道次用户登陆后讲分配的IP地址,如果不具体指定,请用*号代替。

启动NAT转发
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG

五、启动pptpd

# /usr/local/sbin/pptpd