VPN_pptp部署

PPTP VPN部署

PPTP(点到点隧道协议)是一种用于让远程用户拨号连接到本地的ISP,通过因特网安全远程访问公司资源的新型技术。它能将PPP(点到点协议)帧封装成IP数据包,以便能够在基于IP的互联网上进行传输。PPTP使用TCP(传输控制协议)连接的创建,维护,与终止隧道,并使用GRE(通用路由封装)PPP帧封装成隧道数据。被封装后的PPP帧的有效载荷可以被加密或者压缩或者同时被加密与压缩。我们常见的PPTP都是在路由器上配置的,不过linux下也可以实现PPTP服务器的功能,下面就来看下linux下的PPTPVPN配置过程吧。

 

确定内核是否支持mppe:  modprobe ppp-compress-18 && echo ok

如果显示ok,内核已经具备了mppe支持

# modprobe ppp-compress-18 && echo ok

ok

  

用以下命令检查PPP是否支持MPPEstrings‘/usr/sbin/pppd‘ |grep -i mppe|wc -l

如果以上命令输出为“0”则表示不支持;输出为“30”或更大的数字就表示支持

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

42

 

一、安装

安装依赖关系

# yum -yinstall make libpcap iptables gcc-c++ logrotate tar cpio perl pam tcp_wrappers

 

备注:(dkms是一个新的软件,能让你在不编译内核的基础上,外挂一些内核的模块。 kernel_ppp_mppe就是mppe支持的内核模块了)

安装动态内核模块支持RPM安装包

# rpm –ivh    dkms-2.2.0.3-1.noarch.rpm

安装MPPE加密协议的内核补丁的RPM安装包

# rpm –ivh    kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

# rpm –ivh    ppp-2.4.5-5.el6.x86_64.rpm

# rpm –ivh    pptpd-1.3.4-2.el6.x86_64.rpm

 

 

二、ppp配置

配置options.pptpd

#vim/etc/ppp/ options.pptpd

name pptpd

refuse-pap

refuse-chap

refuse-mschap

require-mschap-v2

require-mppe-128

ms-dns8.8.8.8

ms-dns8.8.4.4

proxyarp

lock

nobsdcomp

novj

novjccomp

nologfd

备注:

其中name后面的pptpd是服务名称,可以任意修改成你喜欢的名字,在后面的配置中将对应的pptpd替换为你在这里修改的名字即可。

 

接下来的几行以refuse或者require开头的指令,是配置拒绝和接受的加密方式,这里接受的mschap-v2mppe-128都是较新的比较安全的加密方式,其中mppe-128需要第一步中验证的内核模块支持。

 

另外两个比较重要的行就是ms-dns了,它们指定VPN使用的DNS服务器。毕竟VPS位于国外,所以推荐使用上面通用的Google Public DNS,当然也可以修改为你的VPS所在ISP提供的DNS

 

剩下后面几个选项,就不在这里叙述了,需要知道其含义的童鞋可以参考这个范例文件中的注释。

 

 

 

配置chap-secrets

#vim/etc/ppp/chap-secrets

username1    pptpd    passwd1   *

username2    pptpd    passwd2   *

备注:其中第一第三列分别是用户名和密码;第二列应该和上面的文件/etc/ppp/options.pptpdname后指定的服务名称一致;最后一列限制客户端IP地址,星号表示没有限制

 

 

配置pptpd.conf

# vim /etc/pptpd.conf

option /etc/ppp/options.pptpd

logwtmp

localip 192.168.0.2

remoteip 192.168.0.207-217

备注:

其中option选项指定使用/etc/ppp/options.pptpd中的配置;logwtmp表示使用WTMP日志。

 

后面两行是比较重要的两行。VPN可以这样理解,Linux客户端使用一个虚拟网络设备ppp0Windows客户端也可以理解成VPN虚拟网卡),连接到服务器的虚拟网络设备ppp0上,这样客户端就加入了服务器端ppp0所在的网络。localip就是可以分配给服务器端ppp0IP地址,remoteip则是将要分配给客户端ppp0(或者虚拟网卡)的。

 

这两项都可以是多个IP,一般localip设置一个IP就行了,remoteip则视客户端数目,分配一段IP。其中remoteipIP段需要和localipIP段一致。

localipremoteip所处的IP段可以随意些指定,但其范围内不要包含实际网卡eth0IP地址。一般情况下,使用上面配置文件中的配置就好使了,你需要做的只是把192.168.0.207-217这个IP区间修改成你喜欢的192.168.0.a-b,其中1<a<b<255

 

 

配置iptables防火墙放行和转发规则:

iptables -F

iptables -t nat –F

iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p 47  -jACCEPT                      #47gre端口

iptables -A OUTPUT -p 47 -j ACCEPT

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT             #1723pptp端口

iptables -A OUTPUT -p tcp --sport 1723 -j ACCEPT

iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356 #打开网页设置

iptables -t nat -A POSTROUTING -j SNAT --to *.*.*.*     #*.*.*.*改成vpn服务端的ip

(可以写到脚本中执行)

 

三、启动停止

关闭vpn服务

# service pptpd restart-kill

启动vpn服务

# service pptpd start

设置开机自动启动

# chkconfig pptpd on

 

需要此文中涉及到的rpm安装包的朋友请留言~~~


本文出自 “dcwjxa” 博客,请务必保留此出处http://dcwjxa.blog.51cto.com/9364610/1563397

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。