温故而知新!

PPTP VPN搭建测试记录(二)

Posted on By JesseXuan

前言

抽空使用CentOS搭建了VPN环境,独立于先前的RouterOS环境。

PPTP原理可以浏览博文《PPTP VPN搭建测试记录(一)》。

网络环境概述

  • PPTP服务器系统CentOS7,pptpd软件
  • VPN服务器双网卡:wan–em1(192.168.22.198), lan–p1p1(192.168.110.60)
  • 业务服务器Server: 192.168.110.70
  • VPN客户端CPE:wan(10.56.88.66), lan(192.168.150.1)
  • 测试PC1:192.168.150.100
  • 测试Windows VPN客户端PC2:192.168.22.98

网络拓扑

topo

PPTP搭建步骤

  • 检查系统版本
    # cat /etc/redhat-release
    

    os

  • VPN服务器网卡地址信息
    # ifconfig
    

    net

  • 加载PPP拨号模块
    # modprobe ppp-compress-18 && echo "yes"
    

    pppcom

  • 安装PPP拨号软件
    # yum install -y ppp
    

    ppp

  • 添加EPEL源
    # wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    # rpm -ivh epel-release-latest-7.noarch.rpm
    # yum repolist
    

    epel

  • 安装VPN软件PPTPD
    # yum install -y pptpd
    

    pptpd

  • 配置/etc/pptpd.conf文件
    #/etc/pptpd.conf为pptpd服务程序读取的主文件
    #主要就是修改VPN分配给虚拟接口的IP地址
    #localip是VPN服务器隧道虚拟接口IP
    #remoteip是分配给vpn客户端隧道虚拟接口的IP地址池
    # vim pptpd.conf
    

    pptpdconf

  • 配置/etc/ppp/options.pptpd关联文件
    #去掉注释并修改下发给客户端的DNS服务器IP
    #添加pptpd日志记录路径
    # vim /etc/ppp/options.pptpd
    
  1. 去掉注释并且修改相应的DNS IP,建议WAN口的DNS

oppptp

  1. 添加pptpd运行记录路径

oppptp

  • 设置VPN认证账号密码
    #编辑添加VPN连接的用户名密码
    #用户名	服务器 密码 客户端地址,*表示任意IP
    # vim /etc/ppp/chap-secrets
    

    chap

  • 修改内核转发参数
    #VPN收到包解码后需要做出转发到相应IP上去
    #因此需要开启内核转发
    #添加net.ipv4.ip_forward=1到内核参数文件/etc/sysctl.conf
    #读取内核配置文件立即生效
    # vim /etc/sysctl.conf
    # sysctl -p
    

    sysctl

  • 启用pptpd
    #关闭防火墙
    # systemctl stop firewalld.service
    # systemctl disable firewalld.service
    # setenforce 0
    # vim /etc/sysconfig/selinux
    # 
    # systemctl restart pptpd.service
    #
    #设置开机自启动pptpd
    # systemctl enable pptpd.service
    

PPTP连接

PPTP VPN连接建立

PPTP控制连接建立过程 pptpCont

PPTP数据连接报文 pptpData

MPPE加密

安装后PPTP默认启用了MPPE加密,可以看到wireshark无法显示PPP compressed Datagram的。 VPN两端都必须同时启用,否则CCP协商不通过导致隧道连接建立失败。

MPPE加密的PPTP数据报文 mppe

pptpd服务器端的mppe配置【在上面step8里/etc/ppp/options.pptpd启用require-mppe-128】 mppeconf1

路由终端(VPN客户端)的mppe配置 mppeconf2

Win7上创建的pptp连接默认是”需要加密”即mppe配置,如服务器端没有启用mppe,则选择“可选加密”,否则连接报“错误 628”

win7pptp

通过网关VPN服务器连外网

如果需要通过VPN服务器连接外网,则需要在VPN服务器WAN口上做NAT转发;

设置转发规则,从源地址发出的所有包进行伪装,改变地址。

# iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -o em1 -j MASQUERADE
# chmod +x /etc/rc.d/rc.local
# echo "iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -o em1 -j MASQUERADE" >> /etc/rc.d/rc.local

参考链接

Centos7.5 系统使用pptpd搭建服务器http://blog.51cto.com/5001660/2177407