香菇肥牛的博客

欢迎您来到我的博客https://qing.su 且听我慢慢倾诉……

香菇肥牛的博客

安全访问互联网系列教程②——搭建PPTP 虚拟专用网络 | 香菇肥牛的博客

01/21/2015

VPS教程>

安全访问互联网系列教程②——搭建PPTP 虚拟专用网络

Written by 香菇肥牛.

PPTP(Point to Point Tunneling Protocol),即点对点隧道协议。该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网(VPN)。可以使远程用户通过拨入ISP、通过直接连接Internet或其他网络安全地访问企业网。

(注:以上摘自百度百科)

因此,我们可以通过在VPS上安装PPTP协议,构建虚拟专用网络服务器,从而在客户机上与服务器通信以保障我们的上网数据安全。下面我将介绍具体的实现条件与操作步骤。

 

前提与准备工作

1,所有操作均基于Linux VPS或独立服务器。关于如何在Windows/Mac系统上搭建PPTP协议服务器,本文不作讨论。

2,所有操作均需要root权限,请用root用户连接SSH或使用sudo.

3,如果是OpenVZ方式虚拟的Linux VPS,需要首先开通主板相关功能的支持(TUN/PPP),具体请登录相应主机商的SolusVM面板查看或者联系主机商协助解决。

4,教程对于绝大多数Debian/Redhat及其衍生的Linux发行版(Ubuntu, Fedora, CentOS, etc.)均适用。若您适用的系统不在上述之列(比如Gentoo, Arch等)请参照解决。

 

安装PPTP

PPTP协议安装非常简单。首先,适用SSH连接到你打算安装PPTP的服务器上。

如果是CentOS系统,执行:

1
2
rpm -i http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
yum -y install pptpd

如果是Debian,执行:

1
apt-get install pptpd

这样,PPTP协议安装完毕。

 

配置PPTP VPN服务器

1,设置服务器虚拟IP与可分配IP池

首先,我们需要明白,虚拟专用网服务器的本质,实际上是将所有连接到服务器上的计算机组成一个虚拟的局域网;这样我们就需要让服务器给连接到它的客户机分配IP。因此,我们首先要指定服务器的虚拟IP以及用来分配的IP池。

编辑文件/etc/pptpd.conf
在文件中加入下面两行:

1
2
localip 10.0.0.1
remoteip 10.0.0.100-199

如上,我们指定了服务器IP以及可分配IP池。

 

2,设置DNS

下面,我们来设置服务器用来处理PPTP请求的DNS。需要明确的是,这一步并非必不可少:在很多情况下,这一步可以省略。我们这里设置VPN服务器DNS的目的仅仅是为了防止可能的DNS污染。DNS污染对于安全上网来说并不是一个比较严重的问题,如果不需要访问某些特定的网站,我们完全可以将其忽略。

编辑文件/etc/ppp/pptpd-options
找到对应的语段,加入下面两行:

1
2
ms-dns 8.8.8.8
ms-dns 8.8.4.4

需要注意的是,更改DNS后需要重启PPTP服务才能马上生效。执行:

1
service pptpd restart

这样,我们完成了服务器处理PPTP请求的DNS的修改。

 

3,设置用户名和密码

编辑文件/etc/ppp/chap-secrets,按照下面的格式设置用户名与密码,一行一个:
[username]      pptpd        [password]       [IP range]

其中,[username]是用户名,[password]是密码,[IP range]是限定登录用户的IP,若不需要限定,则设置为*.如下例:

1
2
user1        pptpd        pass1        *
user2        pptpd        pass2        *

如上,我们完成了用户名和密码的设置。

 

4,设置转发

我们需要设置IP转发,才能正常地通过服务器访问互联网。编辑文件/etc/sysctl.conf,找到下面一行并取消注释:

1
net.ipv4.ip_forward = 1

保存并关闭文件,在命令行中执行:

1
sysctl -p

这样,我们设置好了转发。

 

5,设置防火墙和NAT规则

首先,对于CentOS/Fedora等Redhat系列的发行版,请更改Selinux配置(这不是一个简单的步骤,请自行百度),否则客户端将无法连接服务器。若对于更改Selinux配置不那么自信,请直接将其关闭

在SSH中依次执行:

1
2
3
4
iptables -t nat -A POSTROUTING -s 10.0.0.0/255.255.255.0 -j SNAT --to-source 88.88.88.88 && iptables-save
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT

这几步命令在执行时经常会报错。具体保存原因需要具体分析,几个通常需要检查的点包括:(1)网卡编号是否正确;(2)iptables-save是一个命令,中间无空格;(3)参数与选项是否正确;(4)IP池是否正确;(5)相应模块是否正确开启;(6)iptables是否正确安装。若还有报错,可以把报错信息和命令的执行信息回复在文章下面,我们共同探讨。

 

至此,PPTP VPN已经正确安装并配置了。此时我们可以用客户端连接这台服务器,安全地上网了。

本文作者为香菇肥牛,转载请注明:转载自香菇肥牛的博客http://qing.su

来一发吐槽