本文首发于烂泥行天下

目前公司在IDC机房有一台服务器A(linux系统)。该服务器是对外的有两块网卡,一个是公网,一个是私网的。

而另外一台服务器B必须通过A服务器上的×××拨连接进来,才能管理服务器B。

但是A服务器上通过iptables策略限制,只能是公司的IP地址才能通过×××拨号连接进来。

这样就相应的提高了服务器的安全性,下面记录下有关A服务器×××的安装与配置。

介绍下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支持。

烂泥:Centos上使用PPTP搭建×××_Centos

检查PPP是否支持MPPE,若结果显示0则表示不支持,而30或更大的数字就表示支持。

strings ‘/usr/sbin/pppd’|grep -i mppe |wc -l

烂泥:Centos上使用PPTP搭建×××_PPTP_02

安装×××需要安装三个组件ppp、pptp、pptpd。ppp与pptp我们可以通过yum方式进行安装,如下图:

烂泥:Centos上使用PPTP搭建×××_搭建_03

yum –y install ppp pptp

烂泥:Centos上使用PPTP搭建×××_Centos_04

而pptpd无法通过yum方式进行安装。我们可以到http://pkgs.org/search/pptpd?type=name

这个网站上进行下载相应的安装包,如下图:

烂泥:Centos上使用PPTP搭建×××_Centos_05

烂泥:Centos上使用PPTP搭建×××_使用_06

注意如果你的系统版本是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

烂泥:Centos上使用PPTP搭建×××_使用_07

烂泥:Centos上使用PPTP搭建×××_使用_08

rpm -ivh pptpd-1.4.0-3.el6.x86_64.rpm

以上把需要的三个组件都已经安装完毕,我们接下来进行配置。

pptpd的配置文件在/etc/pptpd.conf,pppp的配置文件在/etc/ppp/ options.pptpd.

切换到/etc的根目录下,编辑pptpd.conf文件。如下图:

烂泥:Centos上使用PPTP搭建×××_PPTP_09

在这个文件中,我们需要把logwtmp注释掉,如下图:

烂泥:Centos上使用PPTP搭建×××_使用_10

然后配置本机的内网IP地址,以及客户端拨号进来后所要分配的IP地址。如下图:

烂泥:Centos上使用PPTP搭建×××_搭建_11

具体的相关说明如下:

option /etc/ppp/options.pptpd用来表明pptp加密选项文件路径;

stimeout 120 ----开始PPTP控制连接的超时时间,以秒计;

debug ----把所有debug信息记入系统日志/var/log/messages;

localip ----服务器×××虚拟接口将分配的IP地址,可设置为与×××服务器内网地址相同网段的IP,也可以设置为另一网段的IP;

remoteip ----客户端×××连接成功后将分配的IP地址段,同样可设置为与×××服务器内网地址相同网段的IP地址段,也可以设置为另一网段的IP地址段;

下面开始配置ppp的配置文件,编辑options.pptpd文件。内容如下:

烂泥:Centos上使用PPTP搭建×××_使用_12

我们需要注释掉require-mschap-v2和require-mppe-128两行,同时还要启用ms-dns。如下图:

烂泥:Centos上使用PPTP搭建×××_烂泥_13

该DNS可以填写公共的DNS服务器,也可以是你自己配置的。注意name pptpd表示×××服务器名称,该名称我们在下面会使用到。

下面开始配置×××访问的用户名、密码以及分配的IP地址。/etc/ppp目录下的chap-secrets文件。如下图:

烂泥:Centos上使用PPTP搭建×××_烂泥_14

该文件主要包括四个部分。

Client是×××登录的用户名

Server 是×××服务器名称,就是options.pptpd文件中的name pptpd。

Secret是×××用户的密码

IP address是分配给用户的IP地址,其中*表示任意一个IP地址。

此实验我们使用的用户名为ilanni。密码也是ilanni。

注意由于×××的帐号和密码是明文保存,所以我们要修改该文件的权限为600。

烂泥:Centos上使用PPTP搭建×××_使用_15

以上是对相关配置的的修改,下面就是对iptables的修改。

开启防火墙的IP转发功能,把net.ipv4.ip_forward赋值为1,如下图:

烂泥:Centos上使用PPTP搭建×××_使用_16

保存并退出,使用sysctl –p命令使刚刚的配置生效。

烂泥:Centos上使用PPTP搭建×××_Centos_17

配置iptables策略,开启×××的47和1723端口。如下图:

烂泥:Centos上使用PPTP搭建×××_搭建_18

-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地址才能拨号×××,可以进行如下设置:

-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是可以拨号×××的IP地址。

现在开始启动pptpd服务,如下图:

烂泥:Centos上使用PPTP搭建×××_搭建_19

/etc/init.d/pptpd start

现在使用客户端进行连接,要注意×××连接地址。如下图:

烂泥:Centos上使用PPTP搭建×××_Centos_20

在填写×××的连接地址时,我们要填写的是×××服务器的外网IP地址。如下图:

烂泥:Centos上使用PPTP搭建×××_搭建_21

烂泥:Centos上使用PPTP搭建×××_Centos_22

填写×××登录的用户名和密码。

烂泥:Centos上使用PPTP搭建×××_烂泥_23

提示加密类型不对,我们需要修改本地的加密类型。选择×××的名称,安全—数据加密,选择“可选加密”,如下图:

烂泥:Centos上使用PPTP搭建×××_烂泥_24

然后重新连接。

烂泥:Centos上使用PPTP搭建×××_搭建_25

可以看到已经连接进去了。

在×××服务器上查看多了一张网卡,而且也可以看到×××客户端获取到的IP地址。如下图:

烂泥:Centos上使用PPTP搭建×××_烂泥_26

烂泥:Centos上使用PPTP搭建×××_搭建_27

至此×××的安装与配置结束。