Linux系统下架设PPTP VPN服务器
1、Linux系统下架设PPTP VPN服务器 所需软件及下载地址
CentOS 5.2-----------------------------------------------------最稳定的linux服务器
Linux-2.6.19.tar.gz------------------------------------------2.6.19内核
Linux-2.6.19-mppe-mppc-1.3.patch.bz2--------------内核的mppe-mppc补丁
ppp-2.4.3.tar.gz---------------------------------------------PPP主程序
ppp-2.4.3-mppe-mppc-1.1.patch.gz------------------ppp的mppe-mppc补丁
pptpd-1.3.4.tar.gz------------------------------------------PPTP-VPN主程序
官方HOWTO网页-----------------------------------------问题解决
实现过程及功能特性
首先编译内核,以加入对mppe和mppc的支持,然后架设PPTP VPN服务器,实现终结用户VPN拨号的功能。
Linux服务器IP地址:192.168.1.251
Windows客户IP地址:192.168.1.55
2、编译内核
2.1.1
MPPE:Microsoft Point-to-Point Encryption,微软的点对点加密协议,可以对在点对点链路上传输的数据包进行加密,详细介绍请见RFC3078和RFC3079。
MPPC:Microsoft Point-to-Point Compression,微软的点对点压缩协议,可以对在点对点链路上传输的数据包进行压缩,详细介绍请见RFC21189。
我们需要编译内核及PPP,从而使它们都能够支持MPPE和MPPC。
2.1.2
DO Remember that : use IE brower "Save as .." to download kernel patch!
安装CentOS5.2时采用自定义软件,然后选中“based”并取消其它全部选定,进行基本安装。安装完成进入系统,首先安装GCC。
[root@mm CentOS]# rpm -ivhU kernel-headers-2.6.18-92.el5.i386.rpm
[root@mm CentOS]# rpm -ivhU glibc-headers-2.5-24.i386.rpm
[root@mm CentOS]# rpm -ivhU glibc-devel-2.5-24.i386.rpm
[root@mm CentOS]# rpm -ivhU libgomp-4.1.2-42.el5.i386.rpm
[root@mm CentOS]# rpm -ivhU cpp-4.1.2-42.el5.i386.rpm
[root@mm CentOS]# rpm -ivhU gcc-4.1.2-42.el5.i386.rpm
查看一下:
[root@mm CentOS]# gcc -v
Using built-in specs.
Target: i386-RedHat-linux
Thread model: posix
gcc version 4.1.2 20071124 (Red Hat 4.1.2-42)
再查看当前内核版本:
[root@mm CentOS]# uname -r
2.6.18-92.el5
还需要安装如下RPM包,这个包是在#make menuconfig 时必需的,否则报错:
[root@mm CentOS]# rpm -ivhU ncurses-devel-5.5-24.20060715.i386.rpm
2.1.3
下面开始编译内核:
[root@mm kernel]# tar zxvf linux-2.6.19.tar.gz
[root@mm kernel]# ln -s /home/kernel/linux-2.6.19 /usr/src/linux
[root@mm kernel]# cd /usr/src/linux/
下面的命令给内核打补丁
[root@mm linux]# bzcat /home/kernel/linux-2.6.19-mppe-mppc-1.3.patch.bz2 | patch -p1
还需要修改如下文件,否则编译时出错:
[root@mm linux]# vi scripts/kconfig/mconf.c
将static struct menu *current_menu;这一行注释掉,
并添加struct menu *current_menu;如下:
//static struct menu *current_menu;
struct menu *current_menu;
把以前的配置文件拷贝到当前内核目录,以继承原有配置:
[root@mm linux]# cp /boot/config-2.6.18-92.el5 ./.config
[root@mm linux]# make mrproper @@@删除不必要的文件和目录,初次编译内核不需要
[root@mm linux]# make clean @@@删除不必要的模块和文件
[root@mm linux]# make menuconfig @@@基于文本选单的配置界面,字符终端下推荐使用
选择相应的配置时,有三种选择,它们分别代表的含义如下:
Y--将该功能编译进内核
N--不将该功能编译进内核
M--将该功能编译成可以在需要时动态插入到内核中的模块
1.Go to “Load an Alternate Configuration File” and choose “.config”
2.Go to “General setup” select “Local version …” and input “-default”
3.Go to “Device Drivers --->” “Network device support --->”
然后以模块形式选中如下两项:
<M> PPP BSD-Compress compression
<M> Microsoft PPP compression/encryption (MPPC/MPPE)
然后保存退出内核配置模式。
[root@mm linux]# make dep @@@链接程序代码和函数库
[root@mm linux]# make bzImage @@@开始编译系统内核,此步大约需要25分钟
[root@mm linux]# make modules @@@开始编译外挂模块,此步大约需要1个小时
[root@mm linux]# make modules_install@@@安装编译完成的模块
[root@mm linux]# make install @@@将刚才编译完成的内核安装到系统里面
编译内核完成后,用新内核启动,然后进入系统,查看如下:
[root@mm pppoe]# modprobe -l | grep mppe
/lib/modules/2.6.19-default/kernel/drivers/net/ppp_mppe_mppc.ko
可以看到ppp_mppe_mppc.ko模块已经被编译了。
#lsmod 却看不到ppp_mppe_mppc ,说明该模块还没有被内核挂载,我们手动挂载:
#modprobe ppp_mppe_mppc
再次用#lsmod查看 ,已经成功被内核挂载了
只有当ppp_mppe_mppc模块被挂载到内核以后,PPPOE服务器才能够支持mppc、mppe(压缩及加密功能)。
将模块添加为自启动:
因为我们是以模块方式来安装补丁的,所以每次系统启动时都需要加载模块才行,因此我们要在/etc/rc.d/rc.local里面写入一行:
/sbin/modprobe ppp_mppe_mppc