目前公司在IDC机房有一台服务器A(linux系统)。该服务器是对外的有两块网卡,一个是公网,一个是私网的。
而另外一台服务器B必须通过A服务器上的VPN拨连接进来,才能管理服务器B。
但是A服务器上通过iptables策略限制,只能是公司的IP地址才能通过VPN拨号连接进来。
这样就相应的提高了服务器的安全性,下面记录下有关A服务器VPN的安装与配置。
介绍下PPTP的相关知识:
PPTP(点到点隧道协议)是一种用于让远程用户拨号连接到本地的ISP,通过因特网安全远程访问公司资源的新型技术。它能将PPP(点到点协议)帧封装成IP数据包,以便能够在基于IP的互联网上进行传输。PPTP使用TCP(传输控制协议)连接的创建,维护,与终止隧道,并使用GRE(通用路由封装)将PPP帧封装成隧道数据。被封装后的PPP帧的有效载荷可以被加密或者压缩或者同时被加密与压缩。
本次实验使用的centos 6.5 64bit。
安装之前检查系统兼容性。
检查内核MPPE补丁,确定内核是否支持mppe:
modprobe ppp-compress-18 && echo ok
如果显示ok,内核已经具备了mppe支持。
检查PPP是否支持MPPE,若结果显示0则表示不支持,而30或更大的数字就表示支持。
strings ‘/usr/sbin/pppd’|grep -i mppe |wc -l
安装VPN需要安装三个组件ppp、pptp、pptpd。ppp与pptp我们可以通过yum方式进行安装,如下图:
yum –y install ppp pptp
而pptpd无法通过yum方式进行安装。我们可以到http://pkgs.org/search/pptpd?type=name
这个网站上进行下载相应的安装包,如下图:
注意如果你的系统版本是32bit的就下载i686版本。如果是系统是64bit的下载X86_64版本的。
如何查看linux系统的版本,可以参考我另外一篇文章《烂泥:查看linux系统的版本》。你也可以去度娘下。
pptpd下载完毕后,进行安装,如下图:
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/pptpd-1.4.0-3.el6.x86_64.rpm
rpm -ivh pptpd-1.4.0-3.el6.x86_64.rpm
以上把需要的三个组件都已经安装完毕,我们接下来进行配置。
pptpd的配置文件在/etc/pptpd.conf,pppp的配置文件在/etc/ppp/ options.pptpd.
切换到/etc的根目录下,编辑pptpd.conf文件。如下图:
然后配置本机的内网IP地址,以及客户端拨号进来后所要分配的IP地址。如下图:
具体的相关说明如下:
option /etc/ppp/options.pptpd用来表明pptp加密选项文件路径;
stimeout 120 —-开始PPTP控制连接的超时时间,以秒计;
debug —-把所有debug信息记入系统日志/var/log/messages;
localip —-服务器VPN虚拟接口将分配的IP地址,可设置为与VPN服务器内网地址相同网段的IP,也可以设置为另一网段的IP;
remoteip —-客户端VPN连接成功后将分配的IP地址段,同样可设置为与VPN服务器内网地址相同网段的IP地址段,也可以设置为另一网段的IP地址段;
下面开始配置ppp的配置文件,编辑options.pptpd文件。内容如下:
我们需要注释掉require-mschap-v2和require-mppe-128两行,同时还要启用ms-dns。如下图:
该DNS可以填写公共的DNS服务器,也可以是你自己配置的。注意name pptpd表示VPN服务器名称,该名称我们在下面会使用到。
下面开始配置VPN访问的用户名、密码以及分配的IP地址。/etc/ppp目录下的chap-secrets文件。如下图:
该文件主要包括四个部分。
Client是VPN登录的用户名
Server 是VPN服务器名称,就是options.pptpd文件中的name pptpd。
Secret是VPN用户的密码
IP address是分配给用户的IP地址,其中*表示任意一个IP地址。
此实验我们使用的用户名为ilanni。密码也是ilanni。
注意由于VPN的帐号和密码是明文保存,所以我们要修改该文件的权限为600。
以上是对相关配置的的修改,下面就是对iptables的修改。
开启防火墙的IP转发功能,把net.ipv4.ip_forward赋值为1,如下图:
保存并退出,使用sysctl –p命令使刚刚的配置生效。
配置iptables策略,开启VPN的47和1723端口。如下图:
-A INPUT -p gre -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 47 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 1723 -j ACCEPT
如果你想限制固定的IP地址才能拨号VPN,可以进行如下设置:
-A INPUT -p gre -s 100.65.2114.134 -j ACCEPT
-A INPUT -p tcp –dport 47 -s 100.65.2114.134 -j ACCEPT
-A INPUT -p tcp –dport 1723 -s 100.65.2114.134 -j ACCEPT
其中100.65.2114.134是可以拨号VPN的IP地址。
现在开始启动pptpd服务,如下图:
/etc/init.d/pptpd start
现在使用客户端进行连接,要注意VPN连接地址。如下图:
在填写VPN的连接地址时,我们要填写的是VPN服务器的外网IP地址。如下图:
填写VPN登录的用户名和密码。
提示加密类型不对,我们需要修改本地的加密类型。选择VPN的名称,安全—数据加密,选择“可选加密”,如下图:
然后重新连接。
可以看到已经连接进去了。
在VPN服务器上查看多了一张网卡,而且也可以看到VPN客户端获取到的IP地址。如下图:
至此VPN的安装与配置结束。