1.安装依赖(内网环境 挂载光盘)

本文链接原创:
我照着此文部署 

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

2.下载源码包  可以从别的地方下载 xftp上传到服务器

wget http://www.hnisp.net/p_w_upload/pptpd-1.3.4.tar.gz

3.安装

#tar zxvf pptpd-1.3.4.tar.gz
#cd pptpd-1.3.4
#./configure -prefix=/usr/local/pptpd -enable-bcrelay -with-libwrap 
#make
#make install

4.配置ppp

编译安装完成后,首先需要手工建立一些目录以及复制原始的 pptpd 配置文件:
#mkdir /usr/local/pptpd/etc
#cp samples/pptpd.conf / usr/local/pptpd/etc/
#cp samples/options.pptpd / usr/local/pptpd/etc/
上面cp的两个文件是 pptpd 的两个配置文件。
pptpd.conf 是 pptpd 的基本配置文件;
options.pptpd 是 pptpd 的扩展功能属性配置文件。

5.修改配置文件

四. 修改配置文件
1、 对 pptpd.conf 进行设置:
# vim / usr/local/pptpd/etc/pptpd.conf
以下是我的配置文件:
option / usr/local/pptpd/etc/options.pptpd
logwtmp
debug
localip 192.168.0.21
remoteip 192.168.0.220-245

6.

说明:
option / usr/local/pptpd/etc/options.pptpd 
指定 pptpd 扩展属性配置文件 options.pptpd 的位置
debug    
开启调试模式,有关 pptpd 的信息和错误都会记录在 /var/logs/message 中,方便排错和调试
stimeout 30   
设置客户端连接 pptpd server 时的最长连接等待时间(连接超时时间),30 秒
localip 192.168.0.21
pptpd server 所在服务器的 IP 地址,可以设置为服务器上绑定的任意一个 IP 地址
remoteip 192.168.0.220-245
设置客户端连接到 pptpd server 后可供分配的 IP 地址范围(192.168.0.220- 192.168.0.245),也可以这样设置:192.168.0.188,192.168.0.189,192.168.0.188-238效果是一样的

7.

2、 对 options.pptpd 进行配置:
# vim / usr/local/pptpd/etc/options.pptpd 
以下是我的配置文件:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 202.106.0.20
ms-dns 202.106.46.151

8.

说明:
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 连接帐户。

9.添加账户

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地址,如果不需要做特别限制,可以将其设置为“*”号

10.设置IP转发

配置文件/etc/sysctl.conf
vi /etc/sysctl.conf
  修改以下内容:
net.ipv4.ip_forward = 1
  保存、退出后执行:
/sbin/sysctl -p

11.启动pptp

#/ usr/local/pptpd/sbin/pptpd -c / usr/local/pptpd/etc/pptpd.conf -o /usr/local/pptpd/etc/options.pptpd
检查 pptpd server 是否启动成功:
# netstat -ntlp|grep 1723
如果看到有进程 tcp 1723 端口监听就说明 pptpd server 已经启动成功了!
七.公网连接
1.直接把该台PPTP服务器的1723端口映射到公网IP的1723端口即可。
如:192.168.0.21:1723   到219.240.*.*:1723
在路由上:ip nat inside source static tcp 192.168.0.21 1723 218.240.*.* 1723 extendable

12.

解决问题

附加:解决问题的根本

查看/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 /usr/local/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。