pptpd-install&question solution

基于centos的PPTP的搭建以及网页无法访问问题解决

硬件环境

服务端:CentOS Linux release 7.3.1611 (Core)

客户端Vmware虚拟机:windows server2008

网络环境

服务端:(公) 123.56.11.30 (内) 172.25.30.66

在这里插入图片描述

客户端:192.168.152.129

在这里插入图片描述

服务端搭建步骤:

1 安装rpm包pptpd:

yum -y install pptpd

在这里插入图片描述

2 设置登录账号:

vim /etc/ppp/chap-secrets

在这里插入图片描述
3 配置pptp转换地址池。Localip表示服务器当前IP地址,remoteIP表示远程连接服务器的客户端预分配IP地址:

vim /etc/pptpd.conf

在这里插入图片描述4 配置远程客户端域名解析服务器地址:

vim /etc/ppp/options.pptpd

在这里插入图片描述5 开启linux系统的路由转发功能,并刷新缓存:

vim /etc/sysctl.conf,sysctl –p

在这里插入图片描述
6 配置地址池转发规则:

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

在这里插入图片描述

注意:如果这时候启动pptpd服务,毫无疑问数据连接没有问题,但会出现一个神奇的问题,这个问题其实困惑我好久了,自从我第一次搭建pptpd服务到现在,在这过程中其实我研究过好多次,今天终于解决了。

7 更改HTTP报文的包头字段长度,改为1356:

vim /ec/ppp/ip-up 、ifconfig $1 mtu 1492

更多更改方式详见:https://blog.51cto.com/include/2171484

在这里插入图片描述
8 CS完成连接并网络沟通
在这里插入图片描述
在这里插入图片描述

问题解答

1 PPTPserver端数据转发原理:
在这里插入图片描述
Server 端和client端均使用nat技术达到内网可以连接到互联网的目的,然后server端开启内核模式进行数据包的转发,将公网IP收到的数据转发给私网地址,其实这里显而易见的就是我们的linux服务端使用内核的虚拟化功能虚拟出一个新的网卡也就是ppp0,从而实现数据的转发。
在这里插入图片描述
2 MTU值问题导致网页不能访问
在这里插入图片描述

最大传输单元(Maximum TransmissionUnit,MTU)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。

当同一个网络上的两台主机互相进行通信时,该网络的MTU是非常重要。但是如果两台主机之间的通信要通过多个网络,每个网络的链路层可能有不同的MTU,那么这时重要的不是两台主机所在网络的MTU的值,而是两台主机通信路径中的最小MTU,称为路径MTU( Path mtu,PMTU)。PPTP属于数据链路层通信协议,所以就收到了mtu值得影响,导致HTTP报文重组问题的产生,如果是ipsec,则不会出现这个问题,第三层协议中的IP数据包的分片处理可以很好的解决这个问题的产生。
在这里插入图片描述
使用tcpdump进行抓包分析:

tcpdump -i ppp0 -w /home/admin/pptp.cap

详细分析过程参考:
https://blog.csdn.net/chiyuwei1766/article/details/50762894?utm_medium=distribute.pc_relevant.none-task-blog-utm_term-1&spm=1001.2101.3001.4242

在这里插入图片描述

补充知识:

1 MTU
MTU(Maximum Transmission Unit)最大传输单元,在TCP/IP协议族中,指的是IP数据报能经过一个物理网络的最大报文长度,其中包括了IP首部(从20个字节到60个字节不等),一般以太网的MTU设为1500字节,加上以太帧首部的长度14字节,也就是一个以太帧不会超过1500+14 = 1514字节。

在以太网中,如果上层协议交给IP协议的内容实在是太多,使得一个以太帧超过了1514字节,那么IP报文就必须要分片传输,到达目的主机或目的路由器之后由其重组分片。

2 MSS

MSS(Maximum Segment Size,最大报文段大小,指的是TCP报文(一种IP协议的上层协议)的最大数据报长度,其中不包括TCP首部长度。

MSS由TCP链接的过程中由双方协商得出,其中SYN字段中的选项部分包括了这个信息。如果MSS+TCP首部+IP首部大于MTU,那么IP报文就会存在分片,如果小于,那么就可以不需要分片正常发送。一般来说,MSS = MTU - IP首部大小 - TCP首部大小

3 MTU& MSS of Different
MSS(Maximum Segment Size) - 传输控制协议的一个参数,以字节数定义一个计算机或通信设备所能接受的分段的最大数据量。注意这是不包含 IP 头及 TCP 或 UDP 头的,例如,对于TCP,MSS = 1500 - 20(IP 头)- 20(TCP 头)TCP 通过 MSS 提前进行分段,从而保证数据不会超过 MTU,来保证 IP 不需要再进行分片。

4 MTU值检测
可以通过 ping 的不分片发送进行检测。1500 是去除了以太网头以后的包大小!对于 ping,传递的是 ICMP 包,由以太网头 + IP 头+ ICMP 头 + 数据组成,只要 IP 头 + ICMP 头 + 数据不超过 1500 即可。也就是说,MTU = 1500 - 20(IP 头)- 8(ICMP 头)= 1472。如下图以太网帧结构以及CRC校验。

在这里插入图片描述

Windows:ping -f -l 1472 baidu.com
Linux:ping -M do -c 2 -s 1472 baidu.com

在这里插入图片描述
TCP建立连接过程:

1 发送端首先发送一个带有SYN(synchronize)标志地数据包给接收方。

2 接收方接收后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了。

3 最后,发送方再回传一个带有ACK标志的数据包,代表我知道了,表示’握手‘结束。

在这里插入图片描述TCP释放连接过程:

详细见:https://www.jianshu.com/p/d3725391af59

1 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

2 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

3 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

4 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻址00000001

千里之行,始于“足下”

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值