一、×××介绍

×××(Virtual Private Network),虚拟专用网络,主要是在公用网络上建立专用网络,进行加密通讯。在企业网络中得到广泛应用。×××网关通过对数据包的加密和数据包目标地址的转换实现远程访问。×××有多种分类方式,主要是按照协议进行分类。

×××协议主要分为ppp协议、pptp协议、l2tp协议等。

(1)、PPP协议

ppp协议支持多种网络协议,可以把IP、IPX、AppleTalk或NetBEUI的数据包封装在PPP包中,将整个报文封装在PPTP(Point-to-Point Tunneling Protocol)隧道协议包中,再嵌入IP报文或帧中继或ATM中进行传输。

(2)、PPTP协议

PPTP(Point to Point Tunneling Protocol),即点对点隧道协议。该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网,可以通过密码验证协议,可扩展认证协议等方法增强安全性。远程用户可以通过ISP、直接连接Internet 或者其他网络安全地访问企业网;

PPTP能够将PPP(点到点协议)帧封装成IP数据包,以便能够在基于IP的互联网上进程传输。PPTP使用TCP是实现隧道的创建、维护与终止,并使用GRE(通用路由封装)将PPP帧封装成隧道数据。被封装后的PPP帧的有效载荷可以被加密或压缩;

PPTP通信过程中需要建立两种连接,一种是控制连接,一种是数据连接。控制连接用来协议通信过程中的参数和进行数据连接的维护。而真正的数据通信由数据连接完成。

×××工作原理图:

二、PPTP控制连接建立流程

PPTP控制连接建立过程分为以下几步:

(1)建立TCP连接;(2)PPTP控制连接和GRE隧道建立;(3)PPTP协议的LCP协商;(4)PPP协议的身份验证;(5)PPP协议的NCP协商;(6)PPP协议的CCP协商

以下分析使用的抓包方式,使用的IP地址为:client IP :192.168.163.56    server IP :192.168.163.196     (此地址 只用来演示PPTP工作流程使用,无具体配置)

1、建立TCP连接

PPTP控制层协议是建立在TCP协议的基础上,所以建立的第一步就是常用的TCP三次握手

2、PPTP控制连接和隧道的建立

在此过程,完成PPTP控制层连接和GRE隧道建立的工作

3、PPP协议的LCP协商

LCP是PPP协议的链路控制协议,负责建立、拆除和监控数据链路,如认证方法,压缩方法,是否回叫等。

4、PPP协议的身份认证

LCP协商完成后,PPP协议的Server端会对Client端进行身份验证,在LCP协商中已经协商好身份验证协议

5、PPP协议的NCP协商

NCP协议是PPP协议的网络控制协议,主要用来协商双方网络层接口参数,分配IP,DNS等信息。下图中的IPCP是NCP基于TCP/IP 的接口协商协议。Server和Client都要把自己的Miniport信息发送给对方。

6、PPP协议的CCP协商

CCP协议协商PPP通讯中数据加密的协议。

三、数据连接的流程

PPTP数据隧道化过程采用多层封装的方式。

1、PPTP数据包封装过程

封装过程:

2、PPTP数据包解析过程

解析过程:

四、环境准备

1、服务器:

操作系统:CentOS Linux release 7.5.1804 (Core)

IP地址:172.28.1.191

2、客户端:

windows 7操作系统

windows10 操作系统

五、PPTP服务端安装

1、检查服务器端系统版本:

cat /etc/redhat-release

2、检查服务端IP地址信息:

ip addr

3、检查ppp是否开启

cat /dev/ppp

modprobe ppp-compress-18 && echo ok

4、安装PPP

yum install -y ppp

5、安装PPTPD

在安装PPTPD服务之前,需要先更新一下yum源

(1)安装wget

yum install -y wget

(2)添加EPEL源:

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

(3)安装epel源:

rpm -ivh epel-release-latest-7.noarch.rpm

(4)检查是否添加到源列表中:

yum repolist

(5)更新源列表

yum -y update

(6)安装PPTPD:

yum install -y pptpd

6、设置×××内网IP段

vi /etc/pptpd.conf

将以下两行前面的#号删掉,配置×××内网的IP段,也可自行设置

localip 192.168.0.1

remoteip 192.168.0.234-238,192.168.0.245

7、配置opptions.pptpd

vi /etc/ppp/options.pptpd

(1)修改DNS:

修改dns服务的两行:

ms-dns 8.8.8.8

ms-dns 8.8.4.4

(2)修改日志记录:

添加日志存放位置:

nologfd

logfile /var/log/pptpd.log     #日志存放位置

8、设置×××账号密码:

编辑/etc/ppp/chap-secrets ,创建×××账号密码,

vim /etc/ppp/chap-secrets

备注:添加用户名密码的格式

用户名    pptpd    密码    *                #每个字段之间用tab键隔开   *表示用任意IP连接×××都可以

在此建立两个账号

9、修改内核参数

编辑/etc/sysctl.conf 修改内核参数,支持内核转发

vim /etc/sysctl.conf , 在最下面添加:net.ipv4.ip_forward=1

输入命令生效:sysctl -p

10、修改防火墙设置:

(1)创建规则文件:

touch /usr/lib/firewalld/services/pptpd.xml

(2)修改规则文件

vim /usr/lib/firewalld/services/pptpd.xml

<?xml version="1.0" encoding="utf-8"?>

<service>

<short>pptpd</short>

<description>PPTP</description>

<port protocol="tcp" port="1723"/>

</service>

(3)重启防火墙

systemctl  start firewalld.service

(4)添加服务

firewall-cmd --permanent --zone=public --add-service=pptpd

(5)允许防火墙伪装IP:

firewall-cmd --add-masquerade

(6)开启 47和1723端口

firewall-cmd --permanent --zone=public --add-port=47/tcp

firewall-cmd --permanent --zone=public --add-port=1723/tcp

(7)允许grep协议:

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p gre -j ACCEPT

(8)设置规则允许数据包由eth0 和ppp+接口中进出

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -o eth0 -j ACCEPT

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o ppp+ -j ACCEPT

(9)设置转发规则,从源地址发出的所有包进行伪装,改变地址,由eth0发出

firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 192.168.0.0/24

11、开启转发规则

转发规则有两种:

(1)XEN架构:

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

(2)OpenVZ架构:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source VPS公网IP    //VPS公网IP 要换成你服务器的IP 比如 115.138.148.X

在此我使用的是XEN架构,在命令终端输入第一条命令:

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

12、编辑rc.local文件,添加转发规则

(1)给rc.local执行权限

chmod +x /etc/rc.d/rc.local

(2)编辑rc.local文件

在文件最下面添加代码

使用XEN架构,添加代码:iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

使用OpenVZ架构,添加代码:iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source VPS公网IP

在此使用的XEN架构。

vim /etc/rc.d/rc.local

13、重启服务

systemctl restart pptpd

friewall-cmd --reload

14、查看pptpd服务

ps -aux | grep pptpd

15、设置开机启动

systemctl enable pptpd

六、客户端验证:

1、windows10操作系统客户端验证

(1)点击windows10的“设置”-然后点击“网络和Internet”

(2)在“×××”选项中,点击“添加×××连接”

(3)弹出“添加×××连接”界面后,需要输入×××账号信息

(4)返回“×××”界面,选择刚刚创建的×××连接

(5)输入×××的账号 密码

(6)测试×××是否连接成功:

ping×××服务器本机地址。172.28.1.188

2、windows7 客户端连接×××

(1)右键点击右下角的网络图标,然后打开“网络和共享中心”

(2)点击设置新的连接或网络进行×××拨号方式的创建

(3)在弹出的设置连接或网络的选项卡里选择“连接到工作区”

(4)选择“使用我的Internet连接(×××)”然后点击进入:

(5)填写×××服务器的IP地址信息,然后输入新建×××的名称,可自定义:

(6)输入×××账号密码

(7)默认情况下系统会对×××的服务一个一个的进行尝试连接

(8)测试连接是否成功

ping 172.28.1.188

转载于:https://blog.51cto.com/5001660/2177407

Centos7.5 系统使用pptpd搭建服务器相关推荐

  1. centos系统使用pptpd搭建在windows客户端的vpn服务器

    1,检查服务端的ip地址 #ifconfig ip地址为:192.168.115.128 2,安装ppp yum install -y ppp 3,安装pptpd(我们会发现无法安装,yum源里没有, ...

  2. linux pptpd 不能上网,CentOS7.7使用pptpd搭建服务器(配置好了,但是不能使用)

    一.环境准备 1.服务器 查看系统版本 cat /etc/redhat-release 操作系统:CentOS Linux release 7.7.1908 (Core) IP地址:122.51.8. ...

  3. CentOS7下Telegraf+InfluxDB+Grafana 搭建服务器监控平台

    转载来源 : 作者:DevOps海洋的渔夫 链接:https://www.jianshu.com/p/0a8192751dce 来源:简书 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  4. CentOS 6.7 x64 使用pptpd搭建***服务器

    原理:PPTP 使用 PPP 协议对用户数据进行封装,然后将 PPP 数据帧封装在 IP 数据包里,pptpd 更多是负责客户端到服务器的连接,ppp协议负责用户数据包的封装和转发,当客户端连接到服务 ...

  5. 基于CentOS7.6系统搭建远程GIT服务器

    基于CentOS7.6系统搭建远程GIT服务器 0 背景 0.0 GIT是什么 0.1 为什么搭建远程GIT服务器 1. 功课 2. 过程 3. 总结 4. 参考资料 0 背景 0.0 GIT是什么 ...

  6. UEFI+GPT+双硬盘下 搭建Windos10 和CentOS7 双系统

    centos官方帮助(安装)文档:https://docs.centos.org/en-US/centos/install-guide/ (可用谷歌浏览器进行翻译) 以下为转载内容 转载自:https ...

  7. CentOS7设置静态IP、搭建单机版FastDFS图片服务器、使用FastDFS-Client客户端进行简单测试、实现图片上传、实现商品添加修改删除

    CentOS7设置静态IP.搭建单机版FastDFS图片服务器.使用FastDFS-Client客户端进行简单测试.实现图片上传.实现商品添加修改删除 CentOS7设置静态IP而且还可以上网 192 ...

  8. python+Linux centos7搭建服务器

    我是一个前端出身的,所以搭建服务器环境费了几天,参考了大量资料,现在终于完成了,写一下总结 1.安装python3.X 参考:https://blog.csdn.net/zhangdongren/ar ...

  9. 利用自己的电脑设置web服务器建网站_win7系统篇,win7系统利用iis搭建web服务器实现信息浏览资源共享的操作方法...

    很多小伙伴都遇到过对win7系统利用iis搭建web服务器实现信息浏览资源共享进行设置的困惑吧,一些朋友看过网上对win7系统利用iis搭建web服务器实现信息浏览资源共享设置的零散处理方法,并没有完 ...

最新文章

  1. Linux那些事儿 之 戏说USB(8)从这里开始
  2. Android Gradle Plugin 源码解析(上)
  3. key php 转小写_PHP代码层防护与绕过
  4. 自然语言处理顶会COLING 2020最佳论文等三项大奖出炉 | AI日报
  5. IntelliJ IDEA Community 社区版配置 Web 开发环境(Gradle + Tomcat)
  6. python3爬虫入门教程-Python3爬虫学习入门教程
  7. Spring(十二)之JDBC框架
  8. CNN结构基元:纹理结构和纹理基元方程化GLOH、Gabor...(Code)
  9. php 5.6 zend opcache,使用Zend OpCache 提高 PHP 5.5+ 性能
  10. matlab画2fsk频谱,2fsk信号调制解调频谱的matlab仿真
  11. 手动构建Docker镜像
  12. 二元一次方程用计算机怎么解,二元一次方程的解法
  13. vue 日程表组件_VUE也有自己的日历组件
  14. 解决eclipse 错误: 找不到或无法加载主类
  15. 射频S11与VSWR换算
  16. VSCode 中怎样快速切换多个项目
  17. 鸡腿の游戏_纪中1737
  18. unity简单小球下落
  19. <UDP网络编程>——《计算机网络》
  20. play framework框架下,连接到MongoDB时的特殊操作(与或查询,模糊查询,范围查询,数据排序等)

热门文章

  1. EXCEL中怎么把单元格中的数值提取出来?Excel提取单元格数字或某格式的字符串,支持正则式提取的绿色工具
  2. ipad+html+全屏模式,javascript – iPad上的Chrome全屏API?
  3. 2.5 随从受伤溅血效果的实现———自制卡牌游戏之旅
  4. 如何防止网站关键数据被人恶意采集
  5. 宝兰德BES安装及Springboot项目打包部署及websocket解决方案
  6. BZOJ 3168: [Heoi2013]钙铁锌硒维生素
  7. 【激励自己】牛人职场分享汇总
  8. 《公安机关办理刑事案件电子数据取证规则》
  9. 基于JavaSwing开发天猫购物商城系统(用户 管理员角色) 课程设计 毕业设计源码
  10. Selenium显示等待和隐式等待