前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Linux虚拟机]利用pptp协议连接公司内网

[Linux虚拟机]利用pptp协议连接公司内网

作者头像
李鹏华
发布2024-05-24 14:28:27
600
发布2024-05-24 14:28:27
举报
文章被收录于专栏:网络信息安全网络信息安全
利用pptp协议连接公司内网

  • 什么是PPTP协议
  • 一、安装
  • 二、配置
  • 三、开启IP转发和启动服务
  • 四、配置VPN连接验证
    • Windows端(示例:Windows10)
    • Linux端(Kali Linux)

什么是PPTP协议

PPTP协议,是点对点协议(PPP)为基于点对点连接的多协议自寻址数据包的传输提供了一个标准方法。 PPP 最初设计是为两个对等结构之间的 IP 流量的传输提供一种封装协议。在 TCP-IP 协议集中它是一种关于同步调制连接的数据链路层协议(OSI 模式中的第二层),替代了原非标准第二层协议,即 SLIP。除了 IP 以外 PPP 还可以传送其它协议,包括 DECnet 和 Novell 的 Internet 网包交换(IPX)。 PPP 主要由以下几部分组成: 封装:一种封装多协议数据报的方法。PPP 封装提供了不同网络层协议同时通过统一链路的多路技术。(人们)精心的设计 PPP 封装,使其保有对常用支持硬件的兼容性。 链路控制协议:为了在一个很宽广的环境内能足够方便的使用,PPP 提供了 LCP。LCP 用于就封装格式选项自动的达成一致,处理数据包大小的变化,探测 looped-back 链路和其他普通的配置错误,以及终止链路。提供的其他可选设备有:对链路中对等单元标识的认证,和链路功能正常或链路失败情况下的决定。 网络控制协议:一种扩展链路控制协议,用于建立、配置、测试和管理数据链路连接。 配置:通过链路控制协议使 PPP 链路很容易配置。该机制也应用于其它控制协议如网络控制协议(NCPs) 为了建立点对点链路通信,PPP 链路的每一端,必须首先发送 LCP 包以便设定和测试数据链路。在链路建立之后,LCP 可选设备才可以被认证。然后,PPP 必须发送 NCP 包以便选择和设定一个或更多的网络层协议。一旦每个被选择的网络层协议都被设定好了,来自每个网络层协议的数据报就能在连路上发送了。 链路将保持通信设定不变,直到外在的 LCP 和 NCP 关闭链路,或者是发生一些外部事件的时候(如,休止状态的定时器期满或者网络管理员干涉)。

在这里插入图片描述
在这里插入图片描述

一、安装

实例选用腾讯云北京3区Ubuntu18服务器 1、验证内核是否加载了MPPE模块 内核的MPPE模块用于支持Microsoft Point-to-Point Encryption。Windows自带的VPN客户端就是使用这种加密方式,linux内核版本 等于或高于 2.6.15 时,默认都集成了该功能。可以通过如下命令进行下测试,如果回显OK,则证明已经成功:需要root

代码语言:javascript
复制
modprobe ppp-compress-18 && echo MPPE is ok

2、安装软件包

代码语言:javascript
复制
apt-get -y install ppp pptpd

安装ppp包是增加对ppp协议的支持,提供服务的包是pptpd。另外主机还需要iptable支持,如果主机上没有,还需要安装下iptables。

二、配置

pptpd涉及的配置文件较少,一般我们只修改三个文件pptpd.conf、options.pptpd、chap-secrets 1、pptpd.conf

代码语言:javascript
复制
    # vim /etc/pptpd.conf
    修改如下内容
    option /etc/ppp/options.pptpd
    logwtmp
    localip 192.168.0.1(自己服务器的公网IP)
    remoteip 192.168.0.234-238,192.168.0.245(分配给连接入VPN的IP段,注意不要包含服务器的公网IP)

其中option和logwtmp项默认是开启的,只需增加localip和remoteip即可。VPN可以这样理解,Linux客户端使用一个虚拟网络设备ppp0(Windows客户端也可以理解成VPN虚拟网卡),连接到服务器的虚拟网络设备ppp0上,这样客户端就加入了服务器端ppp0所在的网络。localip就是可以分配给服务器端ppp0的IP地址,remoteip则是将要分配给客户端ppp0(或者虚拟网卡)的。

这两项都可以是多个IP,一般localip设置一个IP就行了,remoteip则视客户端数目,分配一段IP。其中remoteip的IP段需要和localip的IP段一致。localip和remoteip所处的IP段可以随意些指定,但其范围内不要包含实际网卡的IP地址。

上面的配置示例中,我配置了一个段,外加一个IP。

2、options.pptpd

代码语言:javascript
复制
vim /etc/ppp/options.pptpd
代码语言:javascript
复制
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd

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

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

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

3、chap-secrets

代码语言:javascript
复制
vim /etc/ppp/chap-secrets

这里需要注意下,server名要和options里配置的name值一样,ip地址如果是*即查用户VPN拨号过来以后可以使用任一地址。如果指定地址的话,VPN拨号过来只能是该地址。

在这里插入图片描述
在这里插入图片描述

三、开启IP转发和启动服务

1、开启IP转发 可以通过下面的方法开启内核的IP转发功能

代码语言:javascript
复制
 vim /etc/sysctl.conf
代码语言:javascript
复制
    net.ipv4.ip_forward = 1  -->默认该行为0,修改为1
    sysctl -p
    上面的方法是重启后依然生效,想要临时生效,重启后还原之前的配置可以通过下面的方法配置:
    echo '1' > /proc/sys/net/ipv4/ip_forward 
在这里插入图片描述
在这里插入图片描述

2、iptables配置防火墙

代码语言:javascript
复制
    iptables -A INPUT -p gre -j ACCEPT
    iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
    iptables -A FORWARD -s 192.168.0.0/24 -o eth1 -j ACCEPT
    iptables -A FORWARD -d 192.168.0.0/24 -i eth1 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
    或
    iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j SNAT --to-source xxx.xxx.xxx.xxx

上面的IP都换成自己服务器的公网IP网段,eg:xx.xx.xx.0/24,eth1网卡是自己公网网卡名。 PPTP使用GRE协议封装PPP数据包,然后封装成IP报文,所以需要允许该协议;1723为pptp服务的端口;使用MASQUERADE这种是IP伪装,使用to-source是nat地址转换,两种任选其一即可。

配置完成后,通过/etc/init.d/iptables save保存当前配置(也可以使用iptables-save > 文件名 保存配置)。

除了上面的配置外,还需特别注意将MTU的值配置为1356,如果不配置会出现VPN可以拨上,而且可以 ping 通外网,但上网速度会很慢,很多页面打不开的情况,遇到这种情况,可以在iptables里增加如下规则:

代码语言:javascript
复制
    iptables -I FORWARD -p tcp --syn -i ppp0 -j TCPMSS --set-mss 1356
    或
    iptables -A FORWARD -p tcp --syn -s 192.168.0.0/24 -j TCPMSS --set-mss 1356

3、配置服务开机自启动

代码语言:javascript
复制
/etc/init.d/pptpd start
chkconfig --level 35 pptpd on
/etc/init.d/iptables start
chkconfig --level 35 iptables on

四、配置VPN连接验证

Windows端(示例:Windows10)

1、设置

在这里插入图片描述
在这里插入图片描述

2、网络和Internet---->添加VPN

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、进行配置设置 VPN提供设置:Windows(内置) 连接名称:test1(自己填写任意内容) 服务器名称或地址:服务器的公网IPxx.xx.xx.xx VPN类型:点对点隧道协议(pptp) 用户名:admin(上述在/etc/ppp/chap-secrets的设置) 密码:admin123(上述在/etc/ppp/chap-secrets的设置)

在这里插入图片描述
在这里插入图片描述

4、如果发现连接VPN后无法上网的情况

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意这里不要勾选"在远程网络上使用默认网关"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Linux端(Kali Linux)

点击AM后面的小方块

在这里插入图片描述
在这里插入图片描述

configure VPN

在这里插入图片描述
在这里插入图片描述

点击+号,下滑,找到VPN中有PPTP

在这里插入图片描述
在这里插入图片描述

Geteway中填写vps的公网IP 然后填写username,密码是我们连接时填写的

在这里插入图片描述
在这里插入图片描述

然后点击advance,MPPE那里打钩,然后ok,会自动返回上级页面,我们点击save

在这里插入图片描述
在这里插入图片描述

然后还在在屏幕右上角点击连接,会弹出输入密码的框,输入密码后我们会看到下图:

在这里插入图片描述
在这里插入图片描述

以上就是本文的全部内容。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 利用pptp协议连接公司内网
  • 什么是PPTP协议
  • 一、安装
  • 二、配置
  • 三、开启IP转发和启动服务
  • 四、配置VPN连接验证
    • Windows端(示例:Windows10)
      • Linux端(Kali Linux)
      相关产品与服务
      VPN 连接
      VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档