正如前面提到的,pptpsetup脚本在运行时会检查核心是否支持MPPE模块,以及PPP是否支持MPPE加密。若不满足条件,会报类似:
引用
FATAL: Module ppp_mppe not found.
/usr/sbin/pptpsetup: couldn't find MPPE support in kernel.
或
/usr/sbin/pptpsetup: couldn't find MPPE support in pppd.
PPP的问题容易解决,升级版本即可。核心的问题,有些麻烦,有两种办法,一是重编核心,二是采用dkms 外挂。
这里以红旗DC Server 5.0 SP4为例,其自带PPP版本已提供MPPE支持。但核心不支持。
一、重编核心
重编核心的方法这里不细说,找个build看看,在configure中选上下面的选项:
引用
CONFIG_PPP_MPPE=m
CONFIG_NF_CONNTRACK_PPTP=m
CONFIG_NF_NAT_PPTP=m
CONFIG_PPP=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_MPPE=m
CONFIG_PPPOE=m
CONFIG_PPPOL2TP=m
按常规的核心步骤编译,重启即可。
二、采用dkms 外挂
dkms 是个好东西,很多驱动也采用这种外挂方式(特别是Dell 提供的驱动)。从poptop官网下载mppe module builder目录中的文件:
引用
dkms-2.0.6-1.noarch.rpm
kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
本地下载(含src.rpm):
引用
# rpm -ivh dkms-2.0.6-1.noarch.rpm kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
准备... ########################################### [100%]
1:dkms ########################################### [ 50%]
2:kernel_ppp_mppe ########################################### [100%]
Creating symlink /var/lib/dkms/kernel_ppp_mppe/1.0.2/source ->
/usr/src/kernel_ppp_mppe-1.0.2
DKMS: add Completed.
Kernel preparation unnecessary for this kernel. Skipping...
Running the pre_build script:
Using /usr/src/linux-2.6.9-89.5AXS2/drivers/net/ppp_generic.c
Building module:
applying patch linux-2.6.2-pad.patch...patching file ppp_generic.c
Hunk #1 succeeded at 1094 (offset 49 lines).
Hunk #3 succeeded at 1640 (offset 50 lines).
applying patch 02-ppp_generic.c.pa