VPN(--Centos搭建)

一、模式

1、PPTP
pptp使用简单方便,不需要做额外配置,连接、断开的速度快,要求防火墙、路由器支持,对网络环境要求比较高。而l2tp需要共享密钥和修改注册表(对win系列机器讲)
2、L2TP
l2tp在穿透方面有时候会比pptp强一些, 有一定的网络防闪断能力。适合pptp不能用的环境 OpenVPN穿透能力最强。
3、OpenVpn
OpenVPN:穿透能力最强,适合校园网、公司局域网等受限网络环境,第一次使用要安装虚拟网卡

二、安装PPTP

1、第一步:检测是否符合PPTP的搭建环境的要求:
(1)查看本机服务器版本
本机的CentOS服务器(64位)版本信息为:CentOS release 6.4(Final),如下图所示:
(2)检查是否可以安装重点内容
开始搭建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功能的按钮。
2、第二步,安装ppp和iptables
(1)安装PPP
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
如下图所示:
3、第三步,修改配置文件:
(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
****************************************************************/
如下图所示:

4、第四步,启动pptp vpn服务和iptables
(1)启动pptp
启动pptp vpn的命令如下:
#/sbin/service pptpd start 或者 #service pptpd start
重启 service pptpd restart
停止 service pptpd stop
(2)配置iptables
经过前面步骤,我们的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.1.0/24 -o eth0 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -i eth0 -j ACCEPT
我的规则如下图所示:
注意上面规则添加中的eth0(验证是公网IP对应的网卡)这个是网卡,不同的电脑是不相同的,可以使用命令ifconfig查看得到。规则添加完毕之后,先保存一下添加的规则,然后再启动iptables了。命令如下:
/etc/init.d/iptables save
service iptables start
最后,我们可以设置pptpd和iptables随系统自启动。命令如下图所示:
chkconfig pptpd on
chkconfig iptables on
5、问题
(1)分析ppp = 2.4.4 is needed by pptpd-1.3.4-2.rhel5.x86_64的解决办法及原因;
 1、经过测试
ppp版本和pptpd版本不兼容,自然只要下载对应的版本就可以了。
#yum install ppp //用yum方式安装ppp
#yum list installed ppp //查看所安装的版本。
显示为:
ppp.i686 2.4.5-5.el6 @base
而pptpd-1.3.4-2.rhel5.x86.rpm是1.3.4版本,需要ppp是2.4.4版本才能安装pptpd-1.3.4-2.rhel5.x86.rpm。现在ppp版本是2.4.5的,所以,而且ppp是比pptpd先安装的,所以,我们不换ppp版本,而去换pptpd的版本。

所有的ppp版本和pptpd版本的下载地址为:http://poptop.sourceforge.net/yum/stable/packages/
我通过测试,找到了部分ppp和pptp包对应的版本不同,要对根据ppp版本选择对应的pptpd版本。我列出来:
ppp 2.4.4——————>pptpd 1.3.4
ppp 2.4.5——————>pptpd 1.4.0
.所以,我们只要下载pptpd 1.4.0版本就可以了。(下载地址 安装地址)
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
 2、未经过测试
最简单的方法那就是pptpd和ppp全都yum安装,让系统自动判断和找寻ppp和pptp对应版本,很爽的。方法如下:
加入yum源:
#rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp- release-current.noarch.rpm
然后yum安装pptpd:
#yum install -y pptpd
(2)无法连接外网
 检查DNS端口
iptables -A INPUT -p UDP –dport 53 -j ACCEPT ##打不开网页
iptables -A INPUT -p tcp –dport 47 -j ACCEPT ##47端口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章