×××服务大家都知道,虚拟专用网络,今天我们就来说说怎么用linux搭建pptp *** 说实话,我这也算是第一次照着命令敲然后成功了的,最后才搞明白怎么回事,特贡献出来给大家,希望大家共同进步 

系统环境: 2.6.18-92.el5   
  2.6.18 内核已经集成了 MPPE 和高版本的 ppp ,可以跳过安装 MPPE 和 ppp 。直接安装 PPTP 否则请编译内核
用yum安装先决条件 

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers 
安装pptpd       
① 编译安装方法 下载 pptpd 源代码:wget  http://www.hnisp.net/p_w_upload/pptpd-1.3.4.tar.gz 
一、编译安装: 
注意:可能需要 libcap、libcap-devel ncurses-devel RPM 包支持,如果没有请安装 libcap、libcap-devel RPM 包! 
#./configure -prefix=/app/pptpd -enable-bcrelay -with-libwrap 
#make 
#make install 
②:RPM包安装方法: 
yum install -y ppp iptables 
wget  http://www.hnisp.net/p_w_upload/pptpd-1.3.4-1.rhel5.1.i386.rpm 
rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm
二、配置 PPTP 
编译安装完成后,首先需要手工建立一些目录以及复制原始的 pptpd 配置文件: 
#mkdir /app/pptpd/etc 
#cp samples/pptpd.conf /app/pptpd/etc/ 
#cp samples/options.pptpd /app/pptpd/etc/ 
上面cp的两个文件是 pptpd 的两个配置文件。 
pptpd.conf 是 pptpd 的基本配置文件; 
options.pptpd 是 pptpd 的扩展功能属性配置文件。
三.修改配置文件 
1、 对 pptpd.conf 进行设置: 
# vi /app/pptpd/etc/pptpd.conf 
以下是我的配置文件: 
option /app/pptpd/etc/options.pptpd 
logwtmp 
debug 
localip 192.168.1.1 
remoteip 192.168.1.1-200
说明: 
option /app/pptpd/etc/options.pptpd 
指定 pptpd 扩展属性配置文件 options.pptpd 的位置 
debug    
开启调试模式,有关 pptpd 的信息和错误都会记录在 /var/logs/message 中,方便排错和调试 
stimeout 30   
设置客户端连接 pptpd server 时的最长连接等待时间(连接超时时间),30 秒 
localip 192.168.1.1  
pptpd server 所在服务器的 IP 地址,可以设置为服务器上绑定的任意一个 IP 地址 
remoteip 192.168.1.1-200 
设置客户端连接到 pptpd server 后可供分配的 IP 地址范围(192.168.1.1- 192.168.1.200),也可以这样设置:192.168.1.188,192.168.1.189,192.168.1.188-238效果是一样的
2、 对 options.pptpd 进行配置: 
# vi /app/pptpd/etc/options.pptpd 
以下是我的配置文件: 
name pptpd 
refuse-pap 
refuse-chap 
refuse-mschap 
require-mschap-v2 
require-mppe-128 
proxyarp 
lock 
nobsdcomp 
novj 
novjccomp 
nologfd 
idle 2592000 
ms-dns 8.8.8.8 
ms-dns 8.8.4.4
说明: 
name ×××-Server  pptpd server 的名称。 
refuse-pap  拒绝 pap 身份验证模式。 
refuse-chap  拒绝 chap 身份验证模式 
refuse-mschap  拒绝 mschap 身份验证模式。 
ms-dns 202.96.209.5 
ms-dns 202.96.209.133p pp 为 Windows 客户端提供 DNS 服务器 IP 地址,第一个 ms-dns 为 DNS          Master,第二个为 DNS Slave。 
proxyarp  建立 ARP 代理键值。 
debug   开启调试模式,相关信息同样记录在 /var/logs/message 中。 
lock   锁定客户端 PTY 设备文件。 
nobsdcomp  禁用 BSD 压缩模式。 
novj   
novjccomp  禁用 Van Jacobson 压缩模式。 
nologfd   禁止将错误信息记录到标准错误输出设备(stderr) 
OK,配置好上面的两个文件后,开始添加 pptpd server 连接帐户。
四.添加帐户 
pptpd server 连接帐户控制文件位于:/etc/ppp/chap-secrets 
vi /etc/ppp/chap-secrets 配置文件,添加如下内容:
# client  server   secret   IP addresses 
"name"  pptpd    "pw123456"     *
上面第二行代码的四项内容分别对应第一行中的四项。 
"client" 是Client端的×××用户名 
"server"对应的是×××服务器的名字,该名字必须和/etc/ppp/options.pptpd文件中指明的一样,或者设置成"*"号来表示自动识别服务器; 
"secret"对应的是登录密码 
"IP addresses"对应的是可以拨入的客户端IP地址,如果不需要做特别限制,可以将其设置为“*”号.
五.设置IP伪装转发 
配置文件/etc/sysctl.conf 
vi /etc/sysctl.conf 
修改以下内容: 
net.ipv4.ip_forward = 1 
保存、退出后执行: 
/sbin/sysctl -p
六.启动 pptpd server 
#/app/pptpd/sbin/pptpd -c /app/pptpd/etc/pptpd.conf -o /app/pptpd/etc/options.pptpd 
检查 pptpd server 是否启动成功: 
# netstat -ntlp|grep 1723 
如果看到有进程 tcp 1723 端口监听就说明 pptpd server 已经启动成功了!
# tail -f /var/log/messages
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE   //NAT转发代理 
配置iptables 
/sbin/iptables -F FORWARD 
/sbin/iptables -A FORWARD -p udp --dport 53 -j ACCEPT 
/sbin/iptables -A FORWARD -p tcp  --dport 1723 -j ACCEPT   //允许***的服务端口 
/sbin/iptables -A FORWARD -p gre  -j ACCEPT 
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 
/etc/rc.d/init.d/iptables save
加入自启动: /etc/rc.d/rc.local 
chkconfig pptpd on chkconfig iptables on 
七.测试连接 
在 Windows XP/2003 中新建一个 ××× 连接,填写相应的 pptpd server IP 地址、用户名、密码进行连接测试。
附加:解决问题的根本
查看/var/log/message发现报错 
/usr/lib/pptpd/pptpd-logwtmp.so: cannot open shared object file: No such file or directory
#mkdir /usr/lib/pptpd/ -p 
#ln -s /app/pptpd/lib/pptpd/pptpd-logwtmp.so  /usr/lib/pptpd/
再次加载库文件时报版本错误 
Plugin /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.3, this is 2.4.4
Solution 
修改下源文件版本信息,重新编译生成pptpd-logwtmp.so并替换现有的 
切换到源码包目录,pptpd-logwtmp.so源文件在源码包的plugins目录下 
将patchlevel.h中的#define VERSION   "2.4.3"  改成 #define VERSION     "2.4.4"
#cd pptpd-1.3.4/plugins/    (安装源文件夹下) 
#cp patchlevel.h patchlevel.h.bak 
#mv pptpd-logwtmp.so pptpd-logwtmp.so.bak 
#sed  -i  's/2\.4\.3/2\.4\.4/' patchlevel.h 
#make 
#mkdir /usr/lib/pptpd/ 
#cp pptpd-logwtmp.so /app/pptpd/lib/pptpd/pptpd-logwtmp.so
启动 pptpd server后 
# tail -f /var/log/messages 
Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded. (提示加载成功)
[root@localhost plugins]# cat patchlevel.h 
/* upstream patchlevel.h,v 1.60 2004/01/13 04:46:52 paulus Exp */ 
/* $Id: patchlevel.h,v 1.4 2005/02/24 01:25:34 quozl Exp $ */ 
#define VERSION         "2.4.4" 
#define DATE            "13 Jan 2004"
再次连接,即可正常连接PPTP ××× Server。 
linux下配置 PPTP ××× 公网×××② 
安装方法前面我都介绍过了,具体可以看前面的文章。 现在我们需要注意以下几点就可以配置公网×××了。 
①:注意pptpd.conf里面的配置 
option /app/pptpd/etc/options.pptpd 
logwtmp 
debug 
localip 192.168.1.1 
remoteip 192.168.1.1-200 
需要把localip 192.168.1.1改为公网IP 
然后在remoteip 下面添加一行 
listen 公网IP 
然后添加NAT映射: 
/sbin/iptables  -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 
公网IP 
保存配置 
/etc/rc.d/init.d/iptables save 
重启pptpd服务生效。