PPTP(点到点隧道协议)是一种用于让远程用户拨号连接到本地的ISP,通过因特网安全远程访问公司资源的新型技术。它能将PPP(点到点协议)帧封装成IP数据包,以便能够在基于IP的互联网上进行传输。PPTP使用TCP(传输控制协议)连接的创建,维护,与终止隧道,并使用GRE(通用路由封装)将PPP帧封装成隧道数据。被封装后的PPP帧的有效载荷可以被加密或者压缩或者同时被加密与压缩。我们常见的PPTP都是在路由器上配置的,不过linux下也可以实现PPTP服务器的功能,下面就来看下linux下的PPTP ×××配置过程吧。 
在配置PPTP之前,首先安装以下软件包,PPTP默认不是自带的
ppp-2.4.4-2.e15.rpm 
pptpd-1.3.4-1.rhel5.1.i386.rpm 

#下载地址:http://poptop.sourceforge.net/yum/stable/rhel5/i386/pptpd-1.3.4-2.rhel5.i386.rpm

dkms-2.05-1.noarch.rpm
#动态内核模块支持的RPM安装包

kernel_ppp_mppe
#MPPE加密协议的内核补丁的RPM安装包

安装之前检查系统兼容性。 
1)检查内核MPPE补丁 
用以下命令检查内核是否支持MPPE补丁: 
# modprobe ppp-compress-18 && echo ‘ok!!!’ 
若结果显示“ok!!!”则表示支持。 
2)检查PPP是否支持MPPE 
# strings '/usr/sbin/pppd'|grep -i mppe|wc -l 
若结果显示0则表示不支持,而30或更大的数字就表示支持。

编辑 /etc/pptpd.conf文件,配置以下常用选项: 
option /etc/ppp/options.pptpd    ----pptp加密选项文件路径 
stimeout 120 ----开始PPTP控制连接的超时时间,以秒计; 
debug ----把所有debug信息记入系统日志/var/log/messages; 
localip ----服务器×××虚拟接口将分配的IP地址,可设置为与×××服务器内网地址相同网段的IP,也可以设置为另一网段的IP; 
remoteip ----客户端×××连接成功后将分配的IP地址段,同样可设置为与×××服务器内网地址相同网段的IP地址段,也可以设置为另一网段的IP地址段; 
注意关闭logwmpt功能,否则会与ppp协议冲突引起×××拨号失败!在RHEL4中没有问题,而在RHEL5中必须关闭! 


设置地址池为192.168.100.10——192.168.100.20,localip为本机IP,remoteip为地址池,不建议设为同一网段 

设置完成后保存,进入/etc/ppp/options.pptpd,查看加密和认证类型 


默认拒绝使用pap、chap和mschap认证,而采用mschap-v2进行认证,加密采用128位的mppe方式加密。 
最后来查看pptpd口令文件,所谓口令就是×××账号,它存储于/etc/ppp/chap-secrets文件中 


hujw //用户账号,需要用双引号包含 
* //代表自动识别当前服务器主机名,也可以手动配置 
123456 //用户密码,需要用双引号包含 
* //代表自动分配可用的IP地址,可根据需要指定IP地址 
除了上面直接编辑配置文件的方式,还可以使用***user命令来进行配置: 
# ***user add hujw 123456 //添加一个hujw用户 
# ***user del hujw //删除hujw用户。

**************************************************** 
对于开启了iptables过滤的主机,需要开放×××服务的端口 
# iptables -A RH-Firewall-1-INPUT -p gre -j ACCEPT 
# iptables -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 47 -j ACCEPT 
# iptables -A RH-Firewall-1-INPUT –p tcp –m state –state NEW –m tcp –dport 1723 –j ACCEPT
 
**************************************************** 
pptpd配置完成,现在开启pptpd服务 
service pptpd start 
开启路由功能 
echo 1 > /proc/sys/net/ipv4/ip_forward 
配置一条通往外网的默认路由 
router add –net 0.0.0.0 netmask 0.0.0.0 gw 198.2.3.1

现在来到windows主机上测试,首先保证网络是通的,能够ping通GW的外网接口。

创建×××拨号连接 

这时再来查看linux网关,发现多了一个ppp0的接口,即×××虚拟接口 


查看网关路由表,可以发现从×××地址池里获取的地址自动加了一条默认路由,这样×××用户就可以自由访问内网的IP了。


测试与内网服务器连通情况,发现是没有问题的。