CentOS6 安装pptp搭建vpn

流弊的杨林哥买了vps之后一直折腾不休,最近又在研究vpn饭强。
可惜发奋的研究了快一周后还是一无所获
今天小道终于看不下去了,趁着中午他在撸啊撸的时候,干脆帮他配置一下
记录一下过程,以备后需

一 检测是否符合pptp的搭建环境的要求
服务器版本:CentOs 6.4 xen vps
如果检查结果没有这些支持的话,是不能安装pptp的,执行指令:

#modprobe ppp-compress-18 && echo ok

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

#cat /dev/net/tun

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

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

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

Cent os 6.4内核版本在2.6.15以上,都默认集成了MPPE和PPP,因此下面检查可以忽略:

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

检查PPP是否支持MPPE
用以下命令检查PPP是否支持MPPE:

#strings '/usr/sbin/pppd' |grep -i mppe | wc --lines

如果以上命令输出为“0”则表示不支持;输出为“30”或更大的数字就表示支持,MPPE(Microsoft Point to Point Encryption,微软点对点加密)。

二 开始安装

1.安装ppp和iptables
PPTPD要求Linux内核支持mppe,一般来说CentOS安装时已经包含了

#yum install -y perl ppp iptables //centos默认安装了iptables和ppp

2.安装pptpd
刚才用了yum安装了ppp,但是这里有个问题,几乎大部分的人都会在这里遇到ppp和pptpd不兼容的错误。因为yum安装ppp,总是安装最新版本的ppp,而由于安装的ppp的版本不同,那么就需要安装对应版本的pptpd才行。
使用下面的命令查看ppp的版本,前提你是yum安装的ppp。

#yum list installed ppp

显示:

ppp.i686                       2.4.5-5.el6                       @base

所以,要对根据ppp版本选择对应的pptpd版本。
ppp和pptpd各个版本的下载地址;http://poptop.sourceforge.net/yum/stable/packages/

下载的时候要注意,分清楚系统的版本是64位的还是32位的。建议ppp用yum安装,pptpd用rpm的安装,因为如果全都rpm或者源码安装,依赖关系很是烦人。文件名含有数字64的就是64位版本,没有的就是32位版本。可以用下面的命令查看自己的系统是32位还是64位的。

#getconf LONG_BIT

直接用yum安装pptpd
加入 yum 源

rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm

安装 pptpd

yum install pptpd

手动安装pptpd包

对于32位CentOS,执行
wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm
rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm
对于64位CentOS,执行
wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.x86_64.rpm
rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm

64位安装的时候如果出现:

warning: pptpd-1.3.4-2.rhel5.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 862acc42: NOKEY
error: Failed dependencies:
ppp = 2.4.4 is needed by pptpd-1.3.4-2.rhel5.x86_64
原因是pptpd与PPP不兼容,那么,此时用#yum list installed ppp   命令查看ppp版本,极有可能ppp是2.4.5版本的。所以,我们要下载pptp  1.4.0版本才行,而且这里是64位的系统。下载pptpd-1.4.0-1.el6.x86_64.rpm安装即可。这就是我说的出现版本不兼容的问题,当ppp版本和pptpd版本不兼容时候,就会出现类似的错误。

三 修改配置文件
1.配置文件/etc/ppp/options.pptpd

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

修改 ms-dns 为google的dns

ms-dns 8.8.8.8
ms-dns 8.8.4.4

2.配置文件/etc/pptpd.conf

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

修改 :

localip 192.168.0.1 为vpn管道的ip (VPN主机IP)
remoteip 192.168.0.5-245 为给客户端连接分配的ip地址范围

关键点:pptpd.conf这个配置文件必须保证最后是以空行结尾才行,否则会导致启动pptpd服务时,出现“Starting pptpd:”,一直卡着不动的问题,无法启动服务
3.开启路由转发

vi /etc/sysctl.conf

修改

net.ipv4.ip_forward = 1

执行

/sbin/sysctl -p //让修改的内核参数生效

4.添加账号

echo -e 'username pptpd userpassword *' >> /etc/ppp/chap-secrets

四 启动pptp vpn服务和iptables

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

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


chkconfig iptables on

/sbin/iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 47 -j ACCEPT

/sbin/iptables -A INPUT -p gre -j ACCEPT 

iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -o eth0 -j MASQUERADE

/etc/init.d/iptables save //保存iptables的转发规则

service iptables start

需要注意的是,这个指令中的“192.168.9.0/24”是根据之前的配置文件中的“localip”网段来改变的(网上有的教程是192.168.0.0/24 ),比如你设置的 “10.0.0.1”网段,则应该改为“10.0.0.0/24”。此外还有一点需要注意的是eth0,如果你的外网网卡不是eth0,而是eth1(比 如SoftLayer的服务器就是这样的情况),那么请记得将eth0也更改为对应的网卡编号,不然是上不了网的!

五 重启pptp vpn 设置开机启动

chkconfig pptpd on

chkconfig iptables on

service pptpd start

注:
有的链接 pptp vpn时候失败,提示619.
解决办法:执行下面的命令:
# rm -r /dev/ppp
# mknod /dev/ppp c 108 0 然后重启VPS即可。
感谢:http://www.dabu.info/centos6-4-structures-pptp-vpn.html

小 虾

哦也,我是小虾

You may also like...