PPTP(点到点隧道协议)是一种用于让远程用户拨号连接到本地的ISP,通过因特网安全远程访问公司资源的新型技术。它能将PPP(点到点协议)帧封装成IP数据包,以便能够在基于IP的互联网上进行传输。PPTP使用TCP(传输控制协议)连接的创建,维护,与终止隧道,并使用GRE(通用路由封装)将PPP帧封装成隧道数据。被封装后的PPP帧的有效载荷可以被加密或者压缩或者同时被加密与压缩。我们常见的PPTP都是在路由器上配置的,不过linux下也可以实现PPTP服务器的功能。
这里的配置是在Centos 6.4 x86_64下进行的,centos 6.4内核版本在2.6.15以上,都默认集成了MPPE和PPP,因此下面检查可以忽略,如果是2.6.15以下的需要检测如下:
#rpm -q ppp //查询当前系统的ppp是否默认集成了,以及ppp的版本
检查PPP是否支持MPPE
用以下命令检查PPP是否支持MPPE:
#strings‘/usr/sbin/pppd’|grep -i mppe | wc–lines
如果以上命令输出为“0”则表示不支持;输出为“30”或更大的数字就表示支持,MPPE(Microsoft Point to Point Encryption,微软点对点加密)。
安装ppp
yum –y install ppp
安装pptpd
下载pptpd:pptpd-1.3.4-2.el6.x86_64.zip
rpm -ivh pptpd-1.3.4-2.el6.x86_64.rpm
配置
编辑 /etc/ppp/options.pptpd文件/etc/ppp/options.pptpd ----pptp加密选项文件路径
pptpd是服务器的名字
默认拒绝使用pap、chap和mschap认证,而采用mschap-v2进行认证,加密采用128位的mppe方式加密。
ms-dns配置的是VPN client连接上VPN服务器之后获得的DNS,需要配置自己所在地的运营商的DNS也可以是第三方的DNS。
编辑配置文件 /etc/pptpd.conf ,内容如下:
option/etc/ppp/options.pptpd
stimeout 120 ----开始PPTP控制连接的超时时间,以秒计;
debug ----把所有debug信息记入系统日志/var/log/messages;
localip ----服务器VPN虚拟接口将分配的IP地址,可设置为与VPN服务器内网地址相同网段的IP,也可以设置为另一网段的IP;
remoteip ----客户端VPN连接成功后将分配的IP地址段,同样可设置为与VPN服务器内网地址相同网段的IP地址段,也可以设置为另一网段的IP地址段;
对用户认证文件/etc/ppp/chap-secrets 进行配置,内容如下:
# client server secret IP addressestest pptpd test
*client对应客户端登录用户名,secret为密码,ip下的*为随机分配刚才remoteip池中的地址,也可以自己指定用户连接VPN之后获取的IP地址,pptpd则为服务名。
设置防火墙,iptables的pptp VPN策略:
iptables -A INPUT -p 47 -j ACCEPT
iptables -A OUTPUT -p 47 -j ACCEPT
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1723 -j ACCEPT
启用nat转发
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT--to-source *.*.*.*
(如*.*.*.*为vpn服务器的公网IP地址,或者配置了VPN client获取的是不同网段的IP)
保存iptables转发规则:
service iptables save
重启iptables:
service iptables restart
设置linux内核,支持ip转发
配置 /etc/sysctl.conf 文件
net.ipv4.ip_forward = 1将值改为1,即为启用
保存退出,执行sysctl -p 使之生效
重启pptp服务:
service pptpd restart
设置开机自动运行pptp服务:
chkconfig pptpd on
设置开机自动运行iptables服务:
chkconfig iptables on
至此,centos配置PPTP VPN完成。