关于CentOS6.5配置PPTP VPN的方法

      因为经常需要查阅一些开发相关的资料,由于GWF作梗,很多国外的网站访问不了。百度搜索有时候又找不到自己想要的资料,无奈之下买了个VPS,并且自己手动搭建了PPTP VPN。从此,妈妈再也不要担心我上不了谷歌了。

      言归正传,相信很多人对搭建VPN有需要,而网上很多资料又不是很全,往往按照步骤走下来,搭建VPN还是失败。结合自己的搭建心得,做个搭建PPTP VPN的详细记录,供自己日后参考,也供有需要的朋友借鉴。

      第一步:检测是否符合PPTP的搭建环境的要求:

      本机的CentOS服务器(64位)版本信息为:CentOS release 6.4(Final),如下图所示:

技术分享 

      开始搭建VPN之前的环境检测步骤,执行以下的命令,如果检查结果没有相关支持的话,是不能安装pptp的,执行指令:

#modprobe ppp-compress-18 && echo ok

      这条指令执行之后,显示“ok”则表明通过。如下图所示:

技术分享 

      接下来还需要做另一个检查,执行指令:

#cat /dev/net/tun

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

cat: /dev/net/tun: File descriptor in bad state(cat: /dev/net/tun: 文件描述符处于错误状态)

      如下图所示:

技术分享 

      上述两条均通过,才能安装pptp。否则就只能考虑openvpn,或者请vps空间商的技术客服为你的VPS打开TUN/TAP/PPP功能了,貌似有部分vps控制面板上提供打开TUN/TAP/PPP功能的按钮。

      第二步,安装ppp和iptables

      PPTPD要求Linux内核支持mppe,一般来说CentOS安装时已经包含了。CentOS默认安装了iptables和ppp,我们要先查看已经安装的ppp的版本,再去找对应的pptpd版本。ppp版本查看命令如下:

#rpm -q ppp //      查询当前系统的ppp是否默认集成了,以及ppp的版本

      得到如下图所示结果:

技术分享

      ppp和pptpd各个版本下载地址:http://poptop.sourceforge.net/yum/stable/packages/。在这里一定要下载ppp对应的pptpd版本,不然会出错。我所需要下载的版本为pptpd-1.4.0-1.el6.x86_64.rpm,下载及安装命令如下:

wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.4.0-1.el6.x86_64.rpm
rpm -ivh pptpd-1.4.0-1.el6.x86_64.rpm

      如下图所示:

技术分享 

      第三步,修改配置文件:

      1.配置文件/etc/ppp/options.pptpd,命令如下所示:

#cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
#vi /etc/ppp/options.pptpd

      将如下内容添加到options.pptpd中:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

      然后保存这个文件。(ms-dns 8.8.8.8,ms-dns 8.8.4.4是使用google的dns服务器。)

      如下图所示:

技术分享

      2.配置文件/etc/ppp/chap-secrets,命令如下所示:

#cp /etc/ppp/chap-secrets   /etc/ppp/chap-secrets.bak
#vi /etc/ppp/chap-secrets

      如下图所示:

技术分享

      client处是VPN账号,server处是pptpd,secret处是VPN的密码,IP address处填上*(星号表示对任意IP,记住不要丢了这个星号。)

      3.配置文件/etc/pptpd.conf,命令如下所示:

#cp /etc/pptpd.conf     /etc/pptpd.conf.bak
#vi /etc/pptpd.conf

      添加如下两行:

localip 192.168.1.1
remoteip 192.168.1.10-50 //表示vpn客户端获得ip的范围

      如下图所示:

技术分享

      pptpd.conf这个配置文件必须保证最后是以空行结尾才行,否则会导致启动pptpd服务时,出现“Starting pptpd:”,一直卡着不动的问题,无法启动服务,切记呀!

      4.配置文件/etc/sysctl.conf,命令如下所示:

#vi /etc/sysctl.conf //修改内核设置,使其支持转发

      将net.ipv4.ip_forward = 0 改成 net.ipv4.ip_forward = 1。保存修改的文件,然后执行如下命令:

#/sbin/sysctl -p

      在这里要注意一点,执行上面命令,可能会出错。具体的解决方案如下:

      /*********************************************************************************************

      sysctl -P 报错解决办法

      问题症状

      修改 linux 内核文件

      #vi /etc/sysctl.conf后执行sysctl -P 报错

      error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key

      error: "net.bridge.bridge-nf-call-iptables" is an unknown key

      error: "net.bridge.bridge-nf-call-arptables" is an unknown key

      解决方法如下:

      modprobe bridge

      lsmod|grep bridge

      **************************************************************************/

      如下图所示:

技术分享

技术分享

      第四步,启动pptp vpn服务和iptables

      启动pptp vpn的命令如下:

#/sbin/service pptpd start 或者 #service pptpd start

      经过前面步骤,我们的VPN已经可以拨号登录了,但是还不能访问任何网页。最后一步就是添加iptables转发规则了。我的规则如下:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.1/24 -j SNAT --to-source XXX.XXX.XXX.XXX (填写自己的VPS网卡IP)
iptables -I INPUT 1 -p gre -j ACCEPT
iptables -I INPUT 1 -p tcp -m tcp --dport 1723 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT (一般不执行,防火墙默认设置)
iptables -A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT 
iptables -A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT

      我的规则如下图所示:

技术分享

      注意上面规则添加中的eth0这个是网卡,不同的电脑是不相同的,可以使用命令ifconfig查看得到。规则添加完毕之后,就是启动iptables了。命令如下:

service iptables start

      最后,我们可以设置pptpd和iptables随系统自启动。命令如下图所示:

chkconfig pptpd on
chkconfig iptables on

      到此为止,PPTP VPN就配置完成了,如果遇到其他问题,请自行谷歌或者百度。对于iptables的配置没有具体解释,我给的配置是完全可行的,网上给的很多配置不能使用。具体解释可以参照iptables相关规则说明。

     参考链接:http://www.dabu.info/centos6-4-structures-pptp-vpn.html

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。