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-×××主程序
官方HOWTO网页-----------------------------------------问题解决
实现过程及功能特性
首先编译内核,以加入对mppe和mppc的支持,然后架设PPTP ×××服务器,实现终结用户×××拨号的功能。
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
3 架设PPTP-×××服务器
3.1查看是否有/dev/ppp 设备文件,这是ppp拨号所必需的。
若没有则如下创建一个: # mknod --mode=664 /dev/ppp c 108 0
3.2确保 /etc/modules.conf 里面有如下几行:
alias char-major-108 ppp_generic
alias tty-ldisc-3 ppp_async
alias tty-ldisc-13 n_hdlc
alias tty-ldisc-14 ppp_synctty
alias net-pf-24 pppoe
alias ppp-compress-18 ppp_mppe_mppc
3.3安装 ppp-2.4.3.tar.gz
解压缩之后,打上ppp-2.4.3-mppe-mppc-1.1.patch.gz 补丁,然后编译安装:
# tar zxvf php-2.4.3.tar.gz
# patch -p0 -i ppp-2.4.3-mppe-mppc-1.1.patch.gz
# cd ppp-2.4.3
# ./configure --prefix=/usr/local/ppp
# make
# make install
# cp /usr/local/ppp/sbin/pppd /usr/sbin/pppd
3.4安装pptpd
# tar zxvf pptpd-1.3.4.tar.gz
# cd pptpd-1.3.4
# ./configure
# make
# make install
3.5 配置文件:
将pptpd-1.3.4/samples/下的文件
pptpd.conf 拷贝至/etc下
chap-secrets 拷贝至/etc/ppp下
options.pptpd 拷贝至/etc/ppp下
3.5.1 配置文件/etc/pptpd.conf
它是Poptop的配置文件
# cp /home/pptp-vpn/pptpd-1.3.4/samples/pptpd.conf /etc/pptpd.conf
#vi /etc/pptpd.conf
内容修改如下:
ppp /usr/sbin/pppd
option /etc/ppp/options.pptpd
debug
Logwtmp
localip 192.168.1.251 //实际的×××服务器该IP地址总为一个公网地址,除非采用了NAT
remoteip 172.17.0.1-254
netmask 255.255.255.0 //指定子网掩码,不过我配置上好像没作用,仍然是32位掩码
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
3.5.2 配置文件/etc/ppp/options.pptpd,
它是Poptop的选项文件
# cp /home/pptp-vpn/pptpd-1.3.4/samples/options.pptpd /etc/ppp/options.pptpd
# vi /etc/ppp/options.pptpd
内容修改如下:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
mppe required
#require-mppe-128
ms-dns 10.0.0.1
ms-dns 10.0.0.2
proxyarp
lock
# Disable BSD-Compress compression
#nobsdcomp
nologfd
3.5.3 配置文件/etc/ppp/chap-secrets
它是Poptop的账号、密码文件
#vi /etc/ppp/chap-secrets
如下添加用户:
# Secrets for authentication using CHAP
# client server secret IP addresses
test1 * test1 *
pptptest1 pptpd pptptest1 10.10.20.55
pptptest2 pptpd pptptest2 *
其中IP地址这一列,我们可以为特定用户手工指定特定IP。
如果没有指定,为“*”,那么PPTP ×××服务器从/etc/pptp.conf文件中我们设定的remoteip中选择一个分配给客户端。
3.6 开启IP转发并挂载pptp服务所需的相应内核模块
#echo 1 > /proc/sys/net/ipv4/ip_forward
#/sbin/depmod -a
#/sbin/modprobe ip_tables
#/sbin/modprobe iptable_nat
#/sbin/modprobe ipt_LOG
【知识】
depmod 命令用来创建模块依赖关系的列表
这个模块管理工具是创建模块依赖关系的列表,有几个参数我们注意一下就行了,目前的Linux 发行版所用的内核是2.6x版本,是自动解决依赖关系,所以这个命令知道就行了;模块之前也有依赖关系,比如我们想驱动USB 移动硬盘,目前有两种驱动,一种是udev ,在内核中有,但目前不太稳定;另一种办法是用usb-storage驱动,而usb-storage 依赖的模块是scsi 模块,所以我们要用usb-storage 的模块,也得把scsi 编译安装;
# depmod -a 注:为所有列在/etc/modprobe.conf 或/etc/modules.conf 中的所有模块创建依赖关系,并且写入到modules.dep文件;3WiLinux联盟
# depmod -e 注:列出已挂载但不可用的模块;3WiLinux联盟
# depmod -n 注:列出所有模块的依赖关系
3.7 启动pptpd服务
#/usr/local/sbin/pptpd
上图中我们可以看到该×××连接采用了MPPE-128加密,MPPC压缩。
【问题】
<!--[if !supportLists]-->1, <!--[endif]-->我在启动服务后发现不能连接×××服务器,出错信息如下:
#cat /var/log/messeges
Dec 16 01:17:12 mm pptpd[6259]: MGR: Manager process started
Dec 16 01:17:12 mm pptpd[6259]: MGR: Maximum of 100 connections available
Dec 16 01:17:16 mm pptpd[6260]: CTRL: Client 192.168.1.55 control connection started
Dec 16 01:17:16 mm pptpd[6260]: CTRL: Starting call (launching pppd, opening GRE)
Dec 16 01:17:16 mm pppd[6261]: /usr/lib/pptpd/pptpd-logwtmp.so: cannot open shared object file: No such file or directory
Dec 16 01:17:16 mm pppd[6261]: Couldn't load plugin /usr/lib/pptpd/pptpd-logwtmp.so
Dec1601:17:16mm pptpd[6260]: GRE: read(fd=6,buffer=8058f40,len=8196) from PTY failed:status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs
Dec 16 01:17:16 mm pptpd[6260]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
Dec 16 01:17:16 mm pptpd[6260]: CTRL: Client 192.168.1.55 control connection finished
提示缺少pptpd-logwtmp.so文件,我们按照提示复制到相关目录即可:
# mkdir /usr/lib/pptpd
# cp /home/pptp/pptpd-1.3.4/plugins/pptpd-logwtmp.so /usr/lib/pptpd/pptpd-logwtmp.so
再次连接,即可正常连接PPTP ××× Server。
==============================================================
动态域名解析就是指把一个固定的域名解析到一个具有动态IP的主机上。在家里或公司里上网的机器,使用动态域名服务后,所有Internet 用户就可以通过一个固定的域名访问这台计算机。
天联 (TeamLink) 服务, 是金万维率先开发具有国际领先水平的第三代 ××× 服务,与传统 ××× 相比较, TeamLink 服务无需公网 IP, 也无需固定 IP ,更不需要投入固定设备和维护费用,而天联高级版TeamLink Pro是国内首款集×××和SBC两种功能于一体的应用交付产品,专门针对速度问题,实现在低带宽条件下对总部各种应用程序的集中管理和快速接入。
金万维异速联将应用软件统一部署、集中管理,减少远程客户机维护,实现低带宽条件下对应用软件的快速远程接入,提升IT效率。
异速联演示平台
[url]http://demo.gnway.com[/url]
用户:demo 密码:demo
公司:北京金万维广州办事处
网站:[url]www.gnway.com[/url]
电话:020-85533462 85558435
qq:1140810869
邮箱:[email]xl@gnway.com[/email]