一、验证内核是否加载了MPPE模块:

内核的MPPE模块用于支持Microsoft Point-to-Point Encryption。Windows自带的×××客户端就是使用这种加密方式,主流的Linux Desktop也都有MPPE支持。其实到了我们这个内核版本,默认就已经加载了MPPE,只需要使用下面命令验证一下:

#modprobe ppp-compress-18 && echo MPPE is ok

这条执行执行后,显示“ok”则表明通过。不过接下来还需要做另一个检查,输入指令:

#cat /dev/net/tun

如果这条指令显示结果为下面的文本,则表明通过:

cat: /dev/net/tun: File descriptor in bad state

二、开始搭建***服务器

这里提供一个亲测可用的一键安装脚本:

第一步: 下载***(CentOS6专用)一键安装包

#wget http://www.hi-vps.com/shell/***_centos6.sh
#chmod a+x ***_centos6.sh

第二步: 运行一键安装包
#bash ***_centos6.sh

会有三个选择:

1. 安装×××服务
2. 修复×××
3. 添加×××用户

输入1,回车,VPS开始安装×××服务(×××服务安装完毕后会默认生成一个用户名为***,密码为随机数的用户。

如果该脚本不可使用请自行手动安装:

其中 $arch 请用命令‘#uname -m’所返回的结果替换,如我电脑是:i686。

wget http://www.hi-vps.com/downloads/dkms-2.0.17.5-1.noarch.rpm
wget http://wty.name/linux/sources/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
wget http://www.hi-vps.com/downloads/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
wget http://www.hi-vps.com/downloads/pptpd-1.3.4-2.el6.$arch.rpm
wget http://www.hi-vps.com/downloads/ppp-2.4.5-17.0.rhel6.$arch.rpm

以上为安装文件(如不可下载请自行网上搜索下),下面执行安装:

yum -y install make libpcap iptables gcc-c++ logrotate tar cpio perl pam tcp_wrappers
rpm -ivh dkms-2.0.17.5-1.noarch.rpm
rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
rpm -qa kernel_ppp_mppe
rpm -Uvh ppp-2.4.5-17.0.rhel6.$arch.rpm
rpm -ivh pptpd-1.3.4-2.el6.$arch.rpm

三、修改配置文件

–ppp–

配置ppp需要编辑它的两个配置文件,一个是option(选项)文件,一个是用户账户文件。首先编辑option文件:

vi /etc/ppp/options.pptpd

我编辑这个文件时,它已经是存在的,并且其中的内容也几乎不需要编辑,如果这个文件不存在,自行创建它并填入下面的有效配置就行了。下面是这个文件中有效的行:

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8 //重要
ms-dns 8.8.4.4 //重要
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd

其中只需修改dns即可,其它可以选择无视,name后面的pptpd是服务名称,可以任意修改成你喜欢的名字,在后面的配置中将对应的pptpd替换为你在这里修改的名字即可。
接下来的几行以refuse或者require开头的指令,是配置拒绝和接受的加密方式,这里接受的mschap-v2和mppe-128都是较新的比较安全的加密方式,其中mppe-128需要第一步中验证的内核模块支持。
另外两个比较重要的行就是ms-dns了,推荐使用上面通用的Google Public DNS,当然也可以修改为你的VPS所在ISP提供的DNS。

接下来修改另一个,存储着用户账户的文件:

vi /etc/ppp/chap-secrets

这个文件非常简单,其中用明文存储×××客户的用户名、服务名称、密码和IP地址范围,每行一个账户:

username1 pptpd passwd1 *
username2 pptpd passwd2 *

其中第一第三列分别是用户名和密码;第二列应该和上面的文件/etc/ppp/options.pptpd中name后指定的服务名称一致;最后一列限制客户端IP地址,星号表示没有限制。

–pptpd–

下面编辑pptpd的配置文件:

vi /etc/pptpd.conf

这个文件中有效的行也很少:

option /etc/ppp/options.pptpd
logwtmp
localip 192.168.0.2 //网卡固定ip
remoteip 192.168.0.207-217

其中option选项指定使用/etc/ppp/options.pptpd中的配置;logwtmp表示使用WTMP日志。
后面两行是比较重要的两行。×××可以这样理解,Linux客户端使用一个虚拟网络设备ppp0(Windows客户端也可以理解成×××虚拟网卡),连接到服务器的虚拟网络设备ppp0上,这样客户端就加入了服务器端ppp0所在的网络。localip就是可以分配给服务器端ppp0的IP地址,remoteip则是将要分配给客户端ppp0(或者虚拟网卡)的。
这两项都可以是多个IP,一般localip设置一个IP就行了,remoteip则视客户端数目,分配一段IP。

重要:如果单网卡单ip的话remoteip的IP段需要和localip的IP段一致。如果是单网卡双ip或者双网卡双ip,remoteip可以是另一个ip段,如:172.16.10.3-172.16.10.254

localip和remoteip所处的IP段可以随意些指定,但其范围内不要包含实际网卡eth0的IP地址。一般情况下,使用上面配置文件中的配置就好使了,你需要做的只是把192.168.0.207-217这个IP区间修改成你喜欢的192.168.0.a-b,其中a-b段不能包含localip,a最小值是1,b最大值是255。

四、打开内核的IP转发功能:

要使×××服务器可以作为网络请求的中转代理,能够使客户端通过×××访问Internet,还需要开启内核的IP转发功能。可以编辑配置文件:

vi /etc/sysctl.conf

找到其中的行:

net.ipv4.ip_forward = 0

修改为:

net.ipv4.ip_forward = 1

然后执行下面命令使上述修改生效:

sysctl -p

五、启动pptpd守护进程:

上面配置完成后,就可以启动pptpd进程并设置自动启动了(一定要重启,让配置文件生效):

#/etc/init.d/pptpd start chkconfig --level 35 pptpd on
#service pptpd restart-kill //关闭***服务
#service pptpd start //启动***服务

六、配置iptables防火墙放行和转发规则:

单网卡单ip:

# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE //一定要是localip和remoteip相同ip段
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.2
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.2
# iptables -t nat -A FORWARD -p tcp --syn -s 192.168.0.0/24 -j TCPMSS --set-mss 1356
双ip的话
# iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -o eth0 -j MASQUERADE //一定要是remoteip相同ip段
# iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.2
# iptables -t nat -A POSTROUTING -s 172.16.10.0/24 ! -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.2
# iptables -t nat -A FORWARD -p tcp --syn -s 172.16.10.0/24 -j TCPMSS --set-mss 1356

然后保存重启iptables:

#/etc/init.d/iptables save
#/etc/init.d/iptables restart

七、设置开机自动运行服务。我们最后一步是将pptp和iptables设置为开机自动运行,这样就不需要每次重启服务器后手动启动服务了。当然你不需要自动启动服务的话可以忽略这一步。输入指令:

#chkconfig pptpd on
#chkconfig iptables on

这样就大功告成了,赶快到Windows下建立一个×××连接,IP填写自己的服务器IP(localip),用户名和密码填写自己设置好的用户名和密码,点击“连接”,成功后就可以使用服务器去浏览网页啦!
最后完成之后,如果出现错误619则输入命令mknod /dev/ppp c 108 0

注意:如果内核不支持MPPE的话,无法使用加密,用WINDOWS默认×××连接会显示“证书信任错误”。
解决方法:修改/etc/ppp/options.pptpd注释掉require-mppe-128这行,然后windows的***拨号的属性改为可选加密,再次连接就成功了。