[Linux虚拟机]PPTP协议讲解

[Linux虚拟机]PPTP协议讲解

PPTP协议讲解

什么是PPTP协议一、安装二、配置三、开启IP转发和启动服务四、配置PPTP连接验证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自带的***客户端就是使用这种加密方式,linux内核版本 等于或高于 2.6.15 时,默认都集成了该功能。可以通过如下命令进行下测试,如果回显OK,则证明已经成功:需要root

代码语言:javascript复制modprobe ppp-compress-18 && echo MPPE is ok2、安装软件包

代码语言: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(分配给连接入***的IP段,注意不要包含服务器的公网IP)其中option和logwtmp项默认是开启的,只需增加localip和remoteip即可。可以这样理解,Linux客户端使用一个虚拟网络设备ppp0(Windows客户端也可以理解成虚拟网卡),连接到服务器的虚拟网络设备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

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

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

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

3、chap-secrets

代码语言:javascript复制vim /etc/ppp/chap-secrets这里需要注意下,server名要和options里配置的name值一样,ip地址如果是即查用户***拨号过来以后可以使用任一地址。如果指定地址的话,***拨号过来只能是该地址。

在这里插入图片描述三、开启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,如果不配置会出现***可以拨上,而且可以 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 13563、配置服务开机自启动

代码语言:javascript复制/etc/init.d/pptpd start

chkconfig --level 35 pptpd on

/etc/init.d/iptables start

chkconfig --level 35 iptables on四、配置PPTP连接验证Windows端(示例:Windows10)1、设置

在这里插入图片描述2、网络和Internet---->添加***

在这里插入图片描述在这里插入图片描述3、进行配置设置

***提供设置:Windows(内置)

连接名称:test1(自己填写任意内容)

服务器名称或地址:服务器的公网IPxx.xx.xx.xx

类型:点对点隧道协议(pptp)

用户名:admin(上述在/etc/ppp/chap-secrets的设置)

密码:admin123(上述在/etc/ppp/chap-secrets的设置)

在这里插入图片描述

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

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

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

在这里插入图片描述在这里插入图片描述Linux端(Kali Linux)点击AM后面的小方块

在这里插入图片描述

configure ***

在这里插入图片描述

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

在这里插入图片描述

Geteway中填写vps的公网IP

然后填写username,密码是我们连接时填写的

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

🎀 相关推荐

别再用鹅毛形容雪花了,来看看它的30个雅称!(内附描写雪的优美段落)
海绵宝宝全套资源
🎯 365Bet官方

海绵宝宝全套资源

📅 08-01 👀 724
剁椒鱼头是哪里的菜系,剁椒鱼头最正宗的做法
🎯 bt365体育平台3

剁椒鱼头是哪里的菜系,剁椒鱼头最正宗的做法

📅 11-28 👀 1603