centos 配置NTP 服务器_IP


基于centos的PPTP的搭建以及问题解决

硬件环境

服务端:CentOS Linux release 7.3.1611 (Core)

客户端Vmware虚拟机:windows server2008

网络环境

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


centos 配置NTP 服务器_TCP_02


客户端:192.168.152.129


centos 配置NTP 服务器_centos iptables_03


服务端搭建步骤:


1 安装rpm包pptpd: yum -y install pptpd


centos 配置NTP 服务器_centos iptables_04


2 设置登录账号:vim /etc/ppp/chap-secrets


centos 配置NTP 服务器_TCP_05


3 配置pptp转换地址池。Localip表示服务器当前IP地址,remoteIP表示远程连接服务器的客户端预分配IP地址:vim /etc/pptpd.conf


centos 配置NTP 服务器_centos ifconfig_06


4 配置远程客户端域名解析服务器地址:vim /etc/ppp/options.pptpd


centos 配置NTP 服务器_IP_07


5 开启linux系统的路由转发功能,并刷新缓存:vim /etc/sysctl.conf,sysctl –p


centos 配置NTP 服务器_TCP_08


6 配置地址池转发规则:iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o eth0 -j MASQUERADE


centos 配置NTP 服务器_centos iptables_09


注意:如果这时候启动pptpd服务,毫无疑问数据连接没有问题,但会出现一个神奇的问题,这个问题其实困惑我好久了,自从我第一次搭建pptpd服务到现在,在这过程中其实我研究过好多次,今天终于解决了。
7 更改HTTP报文的包头字段长度,改为1356:vim /ec/ppp/ip-up  、ifconfig $1 mtu 1492
更多更改方式详见:https://blog.51cto.com/include/2171484


centos 配置NTP 服务器_IP_10


8 CS完成连接并网络沟通


centos 配置NTP 服务器_centos 配置NTP 服务器_11


centos 配置NTP 服务器_centos ifconfig_12


问题解答

1 PPTPserver端数据转发原理:


centos 配置NTP 服务器_centos iptables_13


Server 端和client端均使用nat技术达到内网可以连接到互联网的目的,然后server端开启内核模式进行数据包的转发,将公网IP收到的数据转发给私网地址,其实这里显而易见的就是我们的linux服务端使用内核的虚拟化功能虚拟出一个新的网卡也就是ppp0,从而实现数据的转发。


centos 配置NTP 服务器_IP_14


2 MTU值问题导致网页不能访问


centos 配置NTP 服务器_centos 配置NTP 服务器_11


最大传输单元(Maximum Transmission Unit,MTU)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。当同一个网络上的两台主机互相进行通信时,该网络的MTU是非常重要。但是如果两台主机之间的通信要通过多个网络,每个网络的链路层可能有不同的MTU,那么这时重要的不是两台主机所在网络的MTU的值,而是两台主机通信路径中的最小MTU,称为路径MTU( Path mtu,PMTU)。PPTP属于数据链路层通信协议,所以就收到了mtu值得影响,导致HTTP报文重组问题的产生,如果是ipsec,则不会出现这个问题,第三层协议中的IP数据包的分片处理可以很好的解决这个问题的产生。


centos 配置NTP 服务器_TCP_16


使用tcpdump进行抓包分析:tcpdump -i ppp0 -w /home/admin/pptp.cap

centos 配置NTP 服务器_centos ifconfig_17


补充知识:

MTU

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

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

MSS

MSS(Maximum Segment Size,最大报文段大小,指的是TCP报文(一种IP协议的上层协议)的最大数据报长度,其中不包括TCP首部长度。MSS由TCP链接的过程中由双方协商得出,其中SYN字段中的选项部分包括了这个信息。如果MSS+TCP首部+IP首部大于MTU,那么IP报文就会存在分片,如果小于,那么就可以不需要分片正常发送。

一般来说,MSS = MTU - IP首部大小 - TCP首部大小

Different

MSS(Maximum Segment Size) - 传输控制协议的一个参数,以字节数定义一个计算机或通信设备所能接受的分段的最大数据量。注意这是不包含 IP 头及 TCP 或 UDP 头的,例如,对于

TCP,MSS = 1500 - 20(IP 头)- 20(TCP 头)

TCP 通过 MSS 提前进行分段,从而保证数据不会超过 MTU,来保证 IP 不需要再进行分片。

MTU值检测

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


centos 配置NTP 服务器_centos 配置NTP 服务器_18


以太网帧结构以及CRC校验

Windows:ping -f -l 1472 http://baidu.com

Linux:ping -M do -c 2 -s 1472 http://baidu.com


centos 配置NTP 服务器_IP_19


centos 配置NTP 服务器_centos ifconfig_20


centos 配置NTP 服务器_TCP_21