流弊的杨林哥买了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