一、验证内核是否加载了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的***拨号的属性改为可选加密,再次连接就成功了。