VPN是虚拟专用网络(Virtual Private Network)的缩写,VPN有多种分类方式,包括PPTP、L2TP、IPSec等,本文配置的VPN服务器是采用PPTP协议的,PPTP是在PPP协议基础上开发的一种新的增强型安全协议。
因此,我们如果需要在CentOS上搭建VPN服务,则需要PPTP服务端软件。目前比较流行的是Poptop项目下的pptpd开源软件,本文编写时最新的版本为 pptpd-1.4.0 下载地址 。
一、安装前的准备工作。
因为PPTP是基于PPP协议基础上的,因此需要系统支持PPP,使用 rpm -qa ppp 检查是否安装了PPP,如果没有安装可以通过 yum install ppp 进行安装。如果你要采用编译的方式安装第二步的PPTP,则需要安装PPP的开发包(ppp-devel)。
另外,pptp需要DKMS(Dynamic Kernel Model Support)支持。可以通过RPM的方式安装,也可以通过YUM安装。但是CentOS默认的yum源中没有这个软件,必须添加epel源后才能安装。可以通过 yum install epel-release的方式安装。
二、PPTP安装
搜索了一圈百度,大多是采用RPM进行安装,可是我在SourceForge站点上没有找到RPM包的下载,索性就编译安装吧。(注:这需要你的服务器上有编译环境,有些生产服务器是不允许安装编译环境的,那可能就没办法使用编译安装的方式)
编译安装很简单,可以阅读INSTALL的说明,三个步骤:
./configure
make
make install
PS:后来我发现,其实epel库中也有pptpd,偷懒的话直接yum install pptpd就可以啦。
三、PPTP的配置
基本配置文件:
/etc/pptpd.conf
内容基本上是
其他配置信息:
/etc/ppp/options.pptpd
内容可以采用默认配置,主要是要添加Google的两个DNS
ms-dns 8.8.8.8
ms-dns 8.8.4.4
配置VPN账号和密码:
在/etc/ppp/chap-secrets文件中按照以下格式配置用户名和密码
<username> pptpd <passwd> *
配置系统:
vim /etc/sysctl.conf
修改以下内容开启ip转发:
net.ipv4.ip_forward = 1
保存、退出后执行:
sysctl -p
检查配置是否生效
四、问题调试
(1)DKMS未安装的问题。
如果系统没有安装DKMS,则/var/log/messages中会出现如下问题
Oct 13 20:09:57 vivodocom pppd[5007]: LCP terminated by peer (MPPE required but not available)
Oct 13 20:09:57 vivodocom pptpd[5006]: CTRL: EOF or bad error reading ctrl packet length.
Oct 13 20:09:57 vivodocom pptpd[5006]: CTRL: couldn‘t read packet header (exit)
Oct 13 20:09:57 vivodocom pptpd[5006]: CTRL: CTRL read failed
(2)Mac下如何使用VPN的问题。
刚开始连接后,发现还是无法访问想看到的网站,原来Mac默认流量没有走VPN,必须在VPN中选择“通过VPN连接发送所有流量”才可以。
参考资料:
2、VPN-百度百科
5、RPM查询命令
10、CentOS Additional Repository