Linux服务器上的PPTP VPN搭建全攻略

10/21/2015来源:网络管理人气:2411

  PPTP的基本概念

  首先,先来理解下什么是 PPTP。PPTP将PPP(Point-to-Point PRotocol)帧封装进ip数据报中,通过IP网络如Internet或其他企业专用Intranet等发送。PPTP通过PPTP控制连接来创建、维护、终止一条隧道,并使用通用路由封装GRE(Generic Routing Encapsulation)对PPP帧进行封装。封装前,PPP帧的有效载荷即有效传输数据一般会经过加密、压缩或是两者的混合处理。PPTP协议假定在PPTP客户机和PPTP服务器之间有连通且可用的IP网络。因此如果PPTP客户机本身已经是某IP网络的组成部分,那么即可通过该IP网络与PPTP服务器取得连接.MPPE只提供连接加密,而不提供端-端加密。端-端加密属于应用层的加密技术,如果应用中要求实现端-端加密,则可在PPTP隧道建立之后,使用IPSec对两端的IP数据流进行加密处理。基于Internet的PPTP服务器即使用PPTP协议的VPN服务器,它的一个接口在Internet上,另一个接口在Intranet上。

  PPTP连接过程与隧道维护

  PPTP控制连接建立在PPTP客户机IP地址和PPTP服务器IP地址之间,PPTP客户机使用动态分配的TCP端口号,而PPTP服务器则使用保留TCP端口号1723。PPTP控制连接携带PPTP呼叫控制和管理信息,用于维护PPTP隧道,其中包括周期性地发送回送请求和回送应答消息,以期检测出客户机与服务器之间可能出现的连接中断。PPTP控制连接数据包包括一个IP报头,一个TCP报头和PPTP控制信息,数据包格式如下。所示的PPTP控制连接数据包还包括数据链路层报头和报尾。

2015811181315696.gif (240×63)

  PPTP典型连接过程:

  TCP连接由PPTP客户机上的一个动态分配的TCP端口到PPTP服务器上的TCP端口1723建立。

2015811181357761.gif (584×379)

  搭建PPTP VPN

  国内访问google一直都是时好时坏的,以前一直使用host文件,或者dns 最近总是不好使,朋友有台美国的vps,这里就想到了搭建一个vpn,下面贴出我的安装步骤

  # 检查部分

  代码如下:

  modprobe ppp-compress-18 && echo 'ok! MPPE was found !'

  ok! MPPE was found ! //说明系统存在MPPE

  # 若不存在,请按以下方式安装注意版本

  代码如下:

  wget http://cdnetworks-kr-1.dl.sourceforge.net/project/poptop/mppe%20module%20builder/dkms-2.0.10-1/dkms-2.0.10-1.noarch.rpm

  wget http://surfnet.dl.sourceforge.net/project/poptop/mppe%20module%20builder/kernel_ppp_mppe-1.0.2%20dkms-2.0.6/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

  rpm -e kernel_ppp_mppe

  yum install kernel-devel

  rpm -ivh dkms-2.0.10-1.noarch.rpm

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

  # 安装pptpd

  代码如下:

  # yum -y install ppp

  # 下载地址

  代码如下:

  # http://surfnet.dl.sourceforge.net/project/poptop/pptpd/pptpd-1.3.4/

  wget http://surfnet.dl.sourceforge.net/project/poptop/pptpd/pptpd-1.3.4/pptpd-1.3.4.tar.gz

  tar zxf pptpd-1.3.4.tar.gz

  cd pptpd-1.3.4

  ./configure

  --prefix=/soft/pptpd-1.3.4

  --enable-bcrelay

  --with-libwrap

  make

  make install

  mkdir -p /soft/pptpd-1.3.4/etc

  # cp samples/options.pptpd /soft/pptpd-1.3.4/etc

  # 配置文件内容如下

  代码如下:

  name pptpd

  debug

  #logwtmp

  logfile /var/log/pptpd.log

  lock

  refuse-pap

  refuse-chap

  refuse-mschap

  require-mschap-v2

  require-mppe-128

  proxyarp

  nobsdcomp

  novj

  novjccomp

  nologfd

  ms-dns 8.8.8.8

  ms-dns 8.8.4.4

  # pptp主配置文件

  代码如下:

  cp samples/pptpd.conf /soft/pptpd-1.3.4/etc

  option /soft/pptpd-1.3.4/etc/options.pptpd

  debug

  stimeout 30

  localip 192.168.142.136 (本地IP)

  remoteip 192.168.142.200-205

  # 拷贝服务文件

  复制代码

  代码如下:

  cp pptpd.init /etc/init.d/pptpd

  # 添加vpn用户

  复制代码

  代码如下:

  vi /etc/ppp/chap-secrets

  # client server secret IP addresses // 添加用户的格式

  chmod +x /etc/init.d/pptpd

  sed -i s#/usr/sbin/pptpd#/soft/pptpd-1.3.4/sbin/pptpd --conf /soft/pptpd-1.3.4/etc/pptpd.conf --option /soft/pptpd-1.3.4/etc/options.pptpd#g

  /etc/init.d/pptpd

  /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.142.0/24 -j MASQUERADE

  /sbin/iptables -P FORWARD ACCEPT

  /sbin/iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT