网络基础知识

1.0 课程知识章节说明

对于进入技术领域的小白来说,在准备踏入技术领域的时候,都会有一个疑问,到底学什么好?

大多数技术小白都会考虑和关注,学哪个能够挣更多的薪资,哪个技术能更容易上手,哪个技术未来发展前景好。

其实对于小白初学者,早期学习期间可多花些精力在有些具有通用性的技术上,可以夯实一些基础技能。

其中网络相关的知识,在互联网流域的各个方面都会需要,所以基础知识里最重要的部分。

序号标题内容知识要点掌握程度
01网络基础知识概述01. 网络知识概述介绍概念了解
02. 网络通讯基本条件满足基本的3要素
03. 网络层次结构规划按照功能区域划分
按照覆盖范围划分
02网络层次结构模型01. 网络层次模型介绍-OSI网络7层模型介绍关注了解
02. 网络层次模型介绍-DoD网络5层模型介绍
03. 网络传输数据组成不同层次识别的数据
04. 网络数据封装解封数据封装过程介绍
数据解封过程介绍
05. 网络数据传输原理
03网络硬件设备介绍01. 网络硬件设备交换机交换机概念作用
交换机工作机制
关注了解
02. 网络硬件设备路由器路由器概念作用
路由器工作机制
04网络通讯协议应用01. 网络通讯协议概述TCP UDP DHCP DNS ARP FTP重点掌握
02. 网络通讯协议原理通讯建立断开原理(TCP)
网络地址获取原理(DHCP)
网络域名解析原理(DNS)
网络地址解析原理(ARP)
网络文件传输原理(FTP)
03. 网络服务协议应用网络地址获取服务搭建(DHCP)
网络域名解析服务搭建(DNS)
网络地址解析应用设置(ARP)
网络文件存储服务搭建(FTP)
05网络地址规划说明01. 网络地址概念介绍了解关注
02. 网络地址分类介绍
03. 网络地址子网划分
06系统网络通讯优化01. 网络连接状态介绍三次握手状态变化
四次挥手状态变化
核心重点
02. 系统通讯内核优化
07系统网络知识应用01. 系统网络命令总结常用网络配置与测试命令重点记忆
02. 系统网络路由配置
03. 系统网卡绑定设置
08网路知识企业应用01. 企业上网原理解析实际物理环境上网原理
教学虚拟环境上网原理
重点关注
02. 用户访问网站解析
03. 企业常见网络异常访问网站服务异常排查思路
访问网站页面缓慢排查思路

1.1 网络基础知识概述

1.1.1 网络知识概述介绍

网络起源介绍:

网络主要是指以太网络, 以太网(Ethernet)指的是由Xerox(施乐)公司创建并由Xerox、Intel和DEC公司联合开发的基带局域网规范,是当今现有局域网采用的最通用的通信协议标准。

网络概念介绍:

就是计算机网络,有许许多多电子设备互联构建而成的一个网络架构,网络的出现其实就是实现设备间的通讯。早期最简单的网络,就是由一根网线将两个网络设备连接起来。两个网络设备之间的通讯就好比人与人沟通一样,必须两个人说一种语言,互相理解才能够相互交流,计算机也是一样的。

说明:利用网络可以满足我们最基本的数据传输的通讯需求。

1.1.2 网络通讯基本条件

为了通过网络实现数据的远距离传送,必须满足三个基本条件:

  • 具有接收发送硬件
  • 具有物理传输介质
  • 具有传输速率协商

以上三个条件缺一不可,若不满足以上三点要求,数据根本无法实现传输过程。

01. 具有接收发送硬件

网络通讯传输数据的过程中,必须有专门的设备可以负责将数据进行发送,同时可以负责接收,这个设备就是网卡。

对于网卡设备目前常被应用的有两种类型:有线网卡和无线网卡

有线网卡:以太网网卡 光纤网卡

 

无线网卡:2.4G无线网卡 5G无线网卡

每种类型的网卡从外观,厂商、性能特性、工作原理等方面可能都会不太一样,但需要统一关注的指标就是速率:

 

1

网络速率(速度):  144.0 Mbps

2

-- 表示(ps per second)每秒中 传输的二进制数据的速度,类似于人说话的速度 

创建网卡速率对照表:

序号常见速率传输数据量
01百兆网卡(100M)表示每秒最多可以传输 100000000 bit数据
02千兆网卡(1000M)表示每秒最多可以传输 1000000000 bit数据
03万兆网卡(10000M)表示每秒最多可以传输 10000000000 bit数据

以上信息可能对速率并没有太直观的概念,比如我们在工作中需要给其他人传输一个大文件数据时:

10G的数据:10G=10 000 000 000 Byte 转换为bit = 10 000 000 000 * 8 = 80 000 000 000 (八百亿bit)

若百兆网卡传输消耗时间:80 000 000 000 / 100 000 000 ≈ 800s (大约13分钟)

若千兆网卡传输消耗时间:80 000 000 000 / 1 000 000 000 ≈ 80s (大约1分钟)

若万兆网卡传输消耗时间:80 000 000 000 / 10 000 000 000 ≈ 8s (大约8秒钟)

说明:因此在选购网卡时,可以将网卡速率可以作为首选的参考指标。

02. 具有物理传输介质

网络设备终端之间要通过某种介质进行连接起来,实现将数据信息的传递。

对于传输介质的种类可以分为两类:有线传输介质 无线传输介质

有线传输介质:网线 光纤线

无线传输介质:wifi 蓝牙 红外

不同种类的传输介质,也有不同传输数据的速率指标,越好的传输介质,传输数据的速率自然越快。

传输介质的速率一般情况下也是分:百兆 千兆 和万兆的。

03. 具有传输速率协商

通过上面知识的学习,已经了解掌握了传输数据时的快慢和传输介质和硬件网卡都有关系;

但是不同网卡和不同的传输介质之间如果速率标准不一致该如何处理?

为了保证数据的信息的稳定高效传输,一般在网络连接后会实现传输速率的协商过程:

  • 发送数据的网卡和接收数据网卡速率协商过程
  • 发送数据的网卡和物理传输介质速率协商过程
  • 接收数据的网卡和物理传输介质速率协商过程

最终按照木桶原理,通讯过程中哪个位置的传输速率最低,就以最低速率作为数据传输速率的标准。

说明:以上三个基本条件满足之后,才能保证网络数据传输的物理传输条件满足了。

1.1.3 网络层次结构规划

在满足基本三要素条件后,也只是实现了终端设备的两两之间的通讯过程;

若想扩大数据传输的范围,就需要设计规划网络层次结构,通常可以按照以下两个方面设计:

  • 按照功能区域划分;
  • 按照覆盖范围划分;

一般可以将整体的网络结构称为网络拓扑,在进行管理和维护网络环境资源时,一定要掌握整体拓扑结构。

网络拓扑(Network Topology)结构是指用传输介质互连各种设备的物理布局;

指构成网络的成员间特定的物理的即真实的、或者逻辑虚拟的排列方式。

01. 按照功能区域划分:

当网络通讯覆盖区域范围不大时,或者拥有的网络通讯设备不多时,可以按照不同的功能区域进行划分:

一般在企业环境中,比较标准的功能区域划分方式为:

  • 核心层:

核心层的功能主要是实现骨干网络之间的优化传输,骨干层设计任务的重点通常是冗余能力、可靠性和高速的传输。

  • 汇聚层:

汇聚层是整个企业网络环境的信息汇聚点,负责串联接入层和核心层的网络设备;

同时为接入层提供数据的汇聚\传输\管理\分发处理等相关功能需求;

同时为接入层提供基于策略的连接,如地址合并,协议过滤,路由服务,认证管理等。

通过网段划分与网络隔离可以防止某些网段的问题蔓延和影响到核心层。

同时也可以提供接入层虚拟网之间的互连,控制和限制接入层对核心层的访问,保证核心层的安全和稳定。

  • 接入层:

接入层通常指网络中直接面向用户连接或访问的部分。

接入层目的是允许终端用户连接到网络,因此接入层网络连接设备具有低成本和高端口密度特性。

02. 按照覆盖范围划分:

当网络通讯覆盖区域范围较大时,或者拥有的网络通讯设备数据庞大时,可以按照区域覆盖范围进行划分:

  • 局域网:

本地私有的一个网络通讯范围,如果是一个规模比较大的局域网,也会成为是一个园区网或者校园网。

  • 城域网:

如果一个网络的覆盖面积达到了一个城市,就可以称为城域网,可以保证城市内部的多个局域网之间通讯。

  • 广域网:

如果覆盖面积达到了全国或者全球,就称为广域网,全球最大的广域网就是Internet互联网。

1.2 网络层次结构模型

1.2.1 网络层次模型介绍-OSI

OSI模型概念:

open system interconnect开放系统互连参考模型,是由ISO(国际标准化组织)定义的。

是个灵活的、稳健的和可互操作的模型(不是协议),是用来了解和设计网络体系结构的。

OSI模型作用:

规范不同层次的互联标准,使两个不同的物理硬件设备能够较容易的通信,而不需要改变底层的硬件或软件的逻辑。

OSI模型划分:

OSI把网络按照层次分为7层,由下到上分别为:

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

每个层次对应了相应的标准规范。

OSI模型各个层次结构作用简述:

层次层次名称功能简述
01物理层(Physical)实现在介质上传输比特;并提供机械的和电气的规范;
负责把这个的比特从一跳移动到另一跳;
定义数据传输速率、信号的传输模式(单工 半双工 全双工)
02数据链路层(Data Link)将分组数据封装成帧;提供局域网内的节点之间数据传输
实现在不可靠的物理链路上,提供可靠的数据传输服务;
实现组帧、物理编址、流量控制、差错控制、接入控制
03网络层(Network Layer)将分组数据从源端传送到目的端,实现不通局域网之间网络互联
实质上就是提供路由选择寻址,将上层分段的数据进行打包
并且在网络层为设备提供了逻辑地址
04传输层(Transport Layer)提供可靠的端到端的报文传输和差错控制技术,负责建立可靠连接
可以实现服务点编制、分段与重组、连接控制、流量控制
并且将上层分段的数据进行打包
05会话层(Session)负责建立、维护管理和终止应用程序之间的会话
06表示层(Presentation)对数据进行转换、加密和压缩处理
实现数据解码和编码、加密和解密、压缩和解压缩
将上层的数据进行转换和编译压缩为标准的文件,如 jpg gif ascii码等
07应用层(Application)提供应用程序的接口,使应用程序能够使用网络服务
很多常见应用层通讯协议,都遵循应用层协议的相关标准

1.2.2 网络层次模型介绍-DoD

DoD模型概念:

是相关美国国防部(DoD)所创建的,是由一组不同功能的协议组合在一起构成的协议簇;

由一组协议完成OSI模型所实现的功能,有时也会将DoD模型称为TCP/IP网络模型。

DoD模型作用:

主要用于简化OSI模型的层次,以及相关的标准,确保数据的传输完整性,在毁灭性战争中维持通讯的目的;

DoD模型划分:

DoD把网络按照层次分为4层,由下到上分别为:

应用层、主机到主机层、因特网层、网络接入层

TCP/IP协议模型(DoD)各层次包含的协议信息:

层次信息:应用层

  • 协议信息:Telnet(TCP-23)

为用户提供了在本地计算机上完成远程操作主机工作的能力。

  • 协议信息:FTP(TCP-20/21)

FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源

  • 协议信息:SSH(TCP-22)

可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。

  • 协议信息:SMTP(UDP-25)

即简单邮件传输协议,是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

  • 协议信息:DHCP(UDP-67/68)

即动态主机配置协议,是一个局域网的网络协议,主要用于给网络中的主机设备自动分配地址信息

  • 协议信息:HTTP(TCP-80/8080)

超文本传输协议(HyperText Transfer Protocol)是互联网上所有的WWW文件都必须遵守这个标准。

最初的目的是为了提供一种发布和接收HTML页面的方法。

层次信息:主机到主机层

  • 协议信息:TCP(Transmission Control Protocol 传输控制协议)

是一种面向连接的、可靠的、基于字节流的传输层通信协议(给别人送东西--张三确认它收到了,再走)

  • 协议信息:UDP(User Datagram Protocol 用户报文协议)

是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务(给别人送东西---放在家门口,就离开)

层次信息:因特网层

  • 协议信息:IP

IP协议是用于将多个包交换网络连接起来的,它在源地址和目的地址之间传送一种称之为数据包的东西,

它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。

  • 协议信息:ICMP(Internet Control Message Protocol)

是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

层次信息:网络接入层

  • 协议信息:ARP(Address Resolution Protocol)

地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。

详细网络协议参考:http://www.colasoft.com.cn/download/protocols_map.php

1.2.3 网络传输数据组成

在网络通讯过程中,如果一个数据信息想进行传输,需要对数据进行包装,整个包装过程分为5个步骤;

每个步骤会产生不同的协议数据单元(PDU)

包装过程一:PDU-Data (数据)

以太网应用层经过编码 压缩 加密等过程产生的真实要传输的数据信息;

以太网真实数据整体大小一般不超过1452字节,如果采用UDP协议传输大小不超过1464字节;

当传输的数据大于这个范围就需要将完整的数据进行拆分传输,在接收端再进行重新组合。

包装过程二:PDU-Segment(分段)

以太网传输层传输的数据信息称为段,即数据段

以太网数据段的整体大小在1472字节以内;

其中组成部分:TCP/UDP协议包头(20字节或8字节)+ 真实数据信息(1452字节或1464字节)

序号组成部分介绍说明
01报文头部(20字节)若是TCP包头头部,包含源端口和目标端口,以及相关检验信息,占用20字节
报文头部(8字节)若是UDP包头头部,包含源端口和目标端口,不含相关检验信息,占用8字节
02数据信息(1452字节)若是应用TCP协议保证数据可靠传输,真实数据占用空间为1452字节
数据信息(1464字节)若是应用UDP协议保证数据高效传输,真实数据占用空间为1464字节

包装过程三:PDU-Packet(打包)

以太网网络层传输的数据信息称为包,即数据包

以太网数据包的整体大小在1492字节以内,某些特殊系统也可以识别大数据信息(9000字节)

其中组成部分:IP包头(20字节)+ 数据段信息 (1472字节)

序号组成部分介绍说明
01报文头部(20字节)存放接收数据设备目标IP地址信息与发送数据设备源IP地址信息;
以及其它和IP协议有关的字段信息
02数据信息(1472字节)是真实互联网中传输的数据段信息

包装过程四:PDU-Frame(成帧)

以太网链路传输的数据包称做以太帧,或者以太网数据帧;

以太网帧的整体大小必须在 64~1518 字节之间(不包含前导码),通常大小是1518字节;

其中组成部分:报头信息(14字节)+ PPOE(8字节)+ 数据包(MTU 1492)+ 帧校验(FCS 字节)

序号组成信息介绍说明
01报文头部(12字节)存放接收数据设备目标mac地址信息与发送数据设备源mac地址信息;
以及发送数据类型信息
02数据部分(1500字节)在互联网通讯过程中,1500字节由 MTU数据部分+8字节ppoe拨号信息
在局域网通讯过程中,1500字节由 MTU数据部分构成
03校验部分(4字节)主要对传输的数据信息做校验检查使用

包装过程五:PDU-bits(转为比特)

利用物理网卡发送数据信息时,会最终将数据信息转换为相应的bit信息(二进制信息);

其中组成部分为:前导码(8字节)+ MAC数据帧 + 帧间隙(12字节)

序号组成信息介绍说明
01前导码(8字节)表示告诉接收数据终端要准备开始接收数据了,8字节后面就是要接收的数据
02数据帧(1518字节)表示真实要接收的数据帧信息
03帧间隙(12字节)表示在接收大量数据帧时,使用帧间隙识别前一个帧的结束,也作为缓冲过程
1.2.4 网络数据封装解封

网络数据封装过程:

过程一:服务程序产生出需要上传的数据信息,构造出数据信息

过程二:将服务程序产生的数据信息进行封装传输层头部信息(TCP UDP头部信息),构造出数据段;

过程三:将数据段信息前面封装网络层头部信息(IP头部信息),构造成数据包;

过程四:将数据包信息前面封装链路层头部信息(LLC MAC头部信息),构造成数据帧;

过程五:将数据帧转换为终端设备网卡可以识别的二进制bit信息,构造成比特流;

网络数据解封过程:

过程一:接收数据终端网卡识别比特流数据信息,并将比特流数据信息转换为数据帧;

过程二:识别数据帧信息中的头部信息,核实目标mac地址信息是否正确,随之将数据帧拆解为数据包;

过程三:识别数据包信息中的头部信息,核实目标ip地址信息是否正确,随之将数据包拆解为数据段;

过程四:识别数据段信息中的头部信息,核实目标UDP/TCP协议端口信息是否正确,随之拆解为数据;

过程五:服务程序识别网络传输的数据信息,并随之进行相应回复响应;

1.2.5 网络数据传输原理

局域网数据传输原理:

通讯过程说明:在局域网中,当主机A想和主机B进行远程连接通讯时,基本过程原理如下:

过程一:由主机A(数据发送端)进行数据构建的封装过程,然后利用网卡设备将数据发送到局域网数据交换设备

过程二:局域网交换设备获取中转数据后,会拆解数据获取链路层的mac头部信息,与自身构建的mac表进行比较

过程三:局域网交换设备获取中转数据后,会根据比较后mac表记录信息,将拆解后数据再次封装好从相应接口转发

过程四:由主机B(数据接收端)进行数据读取的解封过程,然后根据封装头部的目标信息确认是否可以接收数据

说明:数据通讯的过程一定是双向的,反之数据发送的过程只是将源目信息进行对调调整即可。

互联网数据传输原理:

通讯过程说明:在互联网中,当主机A想和主机B进行远程连接通讯时,基本过程原理如下:

过程一:由主机A(数据发送端)进行数据构建的封装过程,然后利用网卡设备将数据发送到局域网数据交换设备

过程二:局域网交换设备获取中转数据后,会拆解数据获取链路层的mac头部信息,与自身构建的mac表进行比较

过程三:局域网交换设备获取中转数据后,会根据比较后mac表记录信息,将拆解后数据再次封装好从相应接口转发

过程四:互联网路由设备获取中转数据后,会拆解数据获取链路层和网络层头部信息,与自身构建路由表进行比较

过程五:互联网路由设备获取中转数据后,会根据比较后路由表记录信息,将拆解候数据再次封装好从相应接口转发

过程六:局域网交换设备获取中转数据后,会拆解数据获取链路层的mac头部信息,与自身构建的mac表进行比较

过程七:局域网交换设备获取中转数据后,会根据比较后mac表记录信息,将拆解后数据再次封装好从相应接口转发

过程八:由主机B(数据接收端)进行数据读取的解封过程,然后根据封装头部的目标信息确认是否可以接收数据

说明:数据包在经过路由设备进行中转时,源数据包中的链路层头部地址信息会发生改变,其余信息不变。

1.3 网络硬件设备介绍

1.3.1 网络硬件设备交换机

交换机概念作用:

交换机(switch)是一种用于局域网数据中转的网络设备,可以为接入交换机的任意两个网络节点提供独享网络通路

最常见的交换机是以太网交换机,其它常见的还有电话语音交换机和光纤交换机等。

交换机企业中的主要应用:

  • 局域网环境中的终端设备的接入
  • 以太网数据帧的交换,根据目的mac地址转发数据帧
  • 学习mac地址,并维护mac地址表
  • 可以防止交换网络(局域网环境)产生环路

交换机工作机制:

交换机的工作机制相对比较简单,实质上只要关注以下两点,就可以基本掌握交换机的工作方式:

  • 交换机识别数据地址信息;
  • 交换机内置地址表的构建;

01. 交换机识别数据地址信息:

利用交换机作为数据传输的中转设备,数据是否能够正常传输到目标终端设备上就会变得尤为关键;

其中交换机就会识别中转数据包链路层(二层)中的MAC头部信息,从而获取源目MAC地址信息;

MAC地址信息简介:

  • MAC地址有48位,通常被表示为点分十六进制数;
  • MAC地址全球唯一,由IEEE对OUI进行管理和分配;
  • MAC地址由两部分组成,分别是供应商代码和序列号;
序号地址划分含义描述
01MAC地址前24位代表该网卡设备供应厂商代码标识
02MAC地址后24位代表由网卡设备功能厂商自行分配

02. 交换机内置地址表的构建:

交换机在连接设备之后会构建mac表,从而控制二层(数据链路层)数据包的有效传输。

交换机在连接设备之后构建mac表的整个过程:

步骤一:

初始情况下交换机的MAC地址表是空的

步骤二:

PC1发送一个数据帧给PC4,暂且假设PC1已经知道PC4的MAC地址

步骤三:

交换机在收到数据帧后,将数据帧的源mac地址学习到mac地址表中,并与接收该帧的接口FE0/1关联。

步骤四:

交换机在MAC地址表中查询数据帧的目的MAC地址;

发现没有匹配的表项,因此将数据帧从除了其入站接口之外的所有接口泛洪出去(交换机所有接口在一个广播域)。

步骤五:

PC2及PC3收到数据帧后将其丢弃,因为这些数据帧并非发送给自己;PC4则收下数据帧。

现在PC4要回复数据给PC1

步骤六:

交换机收到了数据帧,将帧头中的源MAC地址学习到MAC表中,并与接口F0/4关联。

步骤七:

随后交换机在MAC表中查找数据帧的目的MAC地址,发现有一个匹配的表项,出接口是Fa0/1;

于是将数据帧转发到Fa0/1口

根据以上交换机识别数据地址信息交换机内置地址表的构建情况说明,可以整体描述交换机的工作原理;

当然交换机在企业运行工作过程中还需要一些其他的功能应用,但对于运维人员可以不用过多关注。

1.3.2 网络硬件设备路由器

路由器概念作用:

路由器(Router)是连接因特网中各局域网和广域网的设备,会根据信道的情况自动选择和设定路由;

以最佳路径,按前后顺序发送信号,最终实现不同网络区域之间的设备可以实现相互通讯需求。

路由器企业中的主要应用:

  • 网络互连:路由器支持各种局域网和广域网接口,主要用于互连局域网和广域网,实现不同网络互相通信;
  • 数据处理:提供包括分组过滤、分组转发、优先级、复用、加密、压缩和防火墙等功能;
  • 网络管理:路由器提供包括路由器配置管理、性能管理、容错管理和流量控制等功能。

路由器工作机制:

路由器的工作机制相对比较复杂,简单学习只要关注以下两点,就可以基本掌握路由器的工作方式:

  • 路由器识别数据地址信息;
  • 路由器内置路由表的构建;

01. 路由器识别数据地址信息:

利用路由器作为数据传输的中转设备,进行数据中转时不能再使用MAC地址作为目标终端的识别信息;

因为若仍旧利用MAC地址进行识别,会造成广播风暴问题的产生,本身路由器是可以有效隔离广播风暴的;

而且通过上面讲解的互联网数据通讯原理的过程,链路层封装的MAC地址信息会在跨网络环境通讯时变化;

因此路由器主要会识别中转数据包网络层(三层)中的IP头部信息,从而获取源目IP地址信息;

IP地址信息简介:

  • IP地址是由32位二进制数字序列组成的数字序列,采用点将32位数字进行分割为4段;
  • IP地址在实际应用环境会划分为两种类型:公网地址和私网地址
  • IP地址在信息的构成主要会包含网络地址部分和主机地址部分

02. 路由器内置路由表的构建:

路由器在连接设备之后会构建路由表,从而控制三层(网络层)数据包的有效传输。

 

 

1

# 利用命令查看

2

R1# show ip route

3

-- 针对cisco路由器的查看命令,不同品牌路由器略有不同

通过以上命令信息查看后,会获取以下信息:

路由器在连接设备之后构建路由表的方式主要常见的有三种情况:

  • 直连路由信息构建:主要是路由器连接哪个网络环境自动获取的网路路由条目信息;
  • 静态路由信息构建:主要是路由器管理人员根据网络拓扑自行手动规划配置的信息;
  • 动态路由信息构建:主要是路由器管理人员根据网络拓扑使设备自主学习路由信息;

01. 直连路由信息构建

 

根据上图信息,当路由器连接不同的网络环境设备,就会自动添加直连路由信息,断开自动删除直连路由信息;

02. 静态路由信息构建

静态路由的出现主要为了解决跨越多个路由器进行远距离通讯的问题:

为了解决远距离通讯的问题,需要采用手工配置方式为路由器配置添加指定的路由条目:

03. 动态路由信息构建

动态路由的出现主要为了解决静态路由在大型网络架构中配置过于复杂的问题;

并且利用动态路由可以实现路由器之间自主学习路由条目信息;

总之通过在路由器上运行动态路由协议,使得路由器之间能够交互“用于路由计算的信息”;

从而使路由器之间动态的“学习”到网络中的路由。

动态路由学习过程:

步骤一:

在没有进行动态路由协议配置时,路由器之间只能获取直连路由条目信息:

步骤二:

在已经进行动态路由协议配置后,路由器之间初次进行路由信息交换过程(路由学习过程):

步骤三:

初次进行路由信息交换过程后,再下一个路由更新到来会,会再次学习未知的路由信息,只到没有可学习的为止。

当所有路由表包含相同网络可达性信息,网路路由进入一个稳定状态,将这种状态称为路由收敛完成;

只有当无新路由信息被更新时才称为收敛结束,在网络达到收敛前无法完全正常工作。

说明:路由具体学习过程和学习效率也和具体配置动态的路由协议有关,这部分知识运维人员作为了解即可。

1.4 网络通讯协议应用

1.4.1 网络通讯协议概述
01. 网络通讯协议:TCP

TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议;

为了实现面向连接,在发送数据之前必须在两端建立连接,建立连接的方法是“三次握手”;

为了实现保证可靠性,会依靠TCP报文中的段编号以及确认号;

简单来说就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收;

然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);

如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

TCP协议具体报文结构如下:

报文结构重点信息说明:

  • Source Port Number【源端口】

字段说明:(占用16bit,即2字节)

表示网络访问来源处的端口号;即指定了发送端的传输层协议端口信息(一般采用随机生成)

  • Destination Port Number【目标端口】

字段说明:(占用 16bit,即2字节)

表示网络访问目的处的端口号;即指定了接受端的传输层协议端口信息(根据访问的服务进行指定)

信息说明:

以上信息可以看出,源端口和目标端口都是占用了16bit/2字节,因此也可以通过计算得知源目端口号的范围;

是2的16次方=65536,没错,是65536个。

但是为什么我们经常看到网上说可用端口最大65535个呢,也就是2^16-1个。

因为端口号是从0开始算的,0-65535那就是65536个。

而0端口是保留端口,无论是TCP还是UDP都是不用使用的

  • Sequence Number【序号】

字段说明:(占用32bit,即4字节)

每一个TCP报文段都会有一个序号,序号字段的值其实是本报文段所发送的数据的第一个字节的序号。

这是因为TCP是面向连接的可靠服务,其每一个字节都会对应一个序号,通过序号来确保服务的可靠性和有序性。

  • Acknowledgement Number【确认号】 接收端向发送反馈的序号 100 <-反馈101 101 <-反馈102 102 <-103

字段说明:(占用32bit,即4字节)

确认号,是期望收到对方的下一个报文段的数据的第一个字节的序号,可以有效核实传输的数据是否准确。

  • Control bits【控制位/控制字段】

字段说明:(占用6bit)

控制位主要用于控制网络通讯的连接状态和通讯情况

控制位信息说明: A --> B -->

占用bit数/控制位作用说明
(1bit)紧急字段URG此字段告诉系统此报文段中有紧急数据,应尽快传送。当URG=1时
(1bit)确认字段ACK当ACK=1时,表示确认,且确认号有效;当ACK=0时,确认号字段无效。
(1bit)推送字段PSH当PSH=1时,则报文段会被尽快地交付给目的方,不会对这样的报文段使用缓存策略。
(1bit)复位字段RST当RST=1时,表明TCP连接中出现了严重差错,必须释放连接,然后再重新建立连接。
(1bit)同步字段SYN当SYN=1时,表示发起一个连接请求。
(1bit)终止字段FIN当FIN=1时,表明此报文段的发送端的数据已发送完成,并要求释放连接。
02. 网络通讯协议:UDP

UDP协议全称是用户报文协议是一种无连接的、高效的、基于流媒体的传输层通信协议;

UDP根据自身的报文结构信息,传输数据信息宗旨为尽力而为,主要保证了数据传输高效性;

UDP协议本身是不具有对传输数据的验证机制的,因此无法保证数据传输的可靠性。

UDP协议具体报文结构如下:

报文结构重点信息说明:

  • Source Port Number【源端口】

字段说明:(占用16bit,即2字节)

表示网络访问来源处的端口号;即指定了发送端的传输层协议端口信息(一般采用随机生成)

  • Destination Port Number【目标端口】

字段说明:(占用 16bit,即2字节)

表示网络访问目的处的端口号;即指定了接受端的传输层协议端口信息(根据访问的服务进行指定)

03. 网络通讯协议:DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中;

主要作用是集中管理分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息;

并能够提升地址的使用率。

DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。

DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息;

以实现网络主机地址信息的动态配置。

DHCP协议具有功能如下:

  • 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
  • DHCP应当可以给用户分配永久固定的IP地址。
  • DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
  • DHCP服务器应当向现有的BOOTP客户端提供服务。
04. 网络通讯协议:DNS

DNS(DomainName System)称为域名系统,在网站运行中主要作用是负责把网站域名解析为对应的IP地址。

简单来说,我们日常访问网站的实质是访问互联网公司的服务器设备,根据网络通讯原理就需要IP地址信息;

但是我们在浏览网站页面信息时,若利用IP地址进行访问对用户的记忆要求就比较严格;

因此可以借助DNS域名系统,将网站服务器的IP地址与一些名称信息进行关联,用户只需记住网站域名名称即可;

后续借助DNS域名系统会将域名名称信息自动解析为IP地址信息,继而满足网络通讯的要求。

DNS域名系统层次结构。

域名系统是具有层次结构的,从上向下依次是根域、顶级域、二级域,二级域向下可以是主机名或三级域:

序号层次信息介绍说明
01根域"."一般位于域名信息的最右侧,默认一般不用书写出来
IPv4根域服务器,全球只有13台,由Network Solution组织进行管理运作
02顶级域顶级域由Internet名字注册授权机构管理,不能分配给企业、组织或给个人使用
顶级域由:组织域和国家或地区域
组织域包含:.com .net .gov .org等
国家或地区域包含:.cn .hk .tk .uk等
.cn域名由CINNIC组织管理,并且规定.cn域名下不能申请二级域名,必须包含组织域
03二级域名可以注册给个人 组织 企业使用的
04主机名/三级域名主机名就是网站服务名称信息:www blog bbs edu等
主机名+二级域名+顶级域名=完全合格域名(FQDN)
继续换分子域构成一个三级域名的域名后缀

说明:FQDN完全合格域名会和服务器IP地址建立对应关系,在DNS中将这种对应关系可以称为A记录。

05. 网络通讯协议:ARP

ARP(Address Resolution Protocol)即地址解析协议, 用于实现建立IP 地址到 MAC 地址的映射关系;

在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出;

所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。

通常应用程序更关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。

06. 网络通讯协议:FTP

FTP(file transfer Protocol)即文件传输协议,作用是完成各主机之间文件共享的协议;

FTP协议是工作于应用层的协议,是基于TCP协议来实现数据的传输的可靠性;

FTP采用CS模式进行访问,拥有专用客户端,可以向服务器端发送大量请求的ftp相关的命令

1.4.2 网络通讯协议原理
01. 通讯建立断开原理(TCP)

TCP协议的工作原理想了解掌握,必须了解以下两点知识,也是作为技术人员排查网络通讯问题的根本:

  • 网络通讯建立过程:三次握手
  • 网络通讯断开过程:四次挥手

网络建立三次握手过程简述:

过程一:第一次握手

主机A向主机B发送建立TCP连接的请求报文,其中报文中包含重要TCP字段信息是:

源端口目标端口序列号确认号控制字段
----100(随机)N/ASYN=1

过程二:第二次握手

主机B回复主机A发送的TCP连接的请求报文,其中报文中包含重要TCP字段信息是:

源端口目标端口序列号确认号控制字段
----300(随机)101SYN=1 ACK=1

过程三:第三次握手

主机A收到主机B发送的TCP报文回复信息后,会再次发送确认的TCP报文信息,其中包含重要TCP字段信息是:

源端口目标端口序列号确认号控制字段
----101(随机)301ACK=1

利用抓包工具抓取三次握手过程:

网络断开四次挥手过程简述:

过程一:第一次挥手

主机A向主机B发送断开TCP连接请求的报文,其中报文中包含重要TCP字段信息是:

源端口目标端口序列号确认号控制字段
----3000(延续之前的)1001FIN=1 ACK=1

过程二:第二次挥手

主机B会回复主机A发送的TCP断开请求报文,其中报文中包含重要TCP字段信息是:

源端口目标端口序列号确认号控制字段
----1001(延续之前的)3001ACK=1

过程三:第三次挥手

主机B在回复完A的TCP断开请求确认控制字段后,不会马上就进行TCP连接的断开;

主机B会先确保断开前,所有传输到A的数据是否已经传输完毕,再向主机A发送断开连接的TCP报文:

源端口目标端口序列号确认号控制字段
----1001(延续之前的)3001FIN=1 ACK=1

过程四:第四次握手

主机A收到主机B的TCP断开请求后,会回复主机B的断开请求,发送最后一次的TCP确认报文:

源端口目标端口序列号确认号控制字段
----3001(延续之前的)1002ACK=1

利用抓包工具抓取三次握手过程:

02. 网络地址获取原理(DHCP)

利用DHCP协议搭建的DHCP服务器可以实现在局域网中动态的给客户端主机分配IP地址,具体原理过程:

阶段一:发现阶段-DHCP客户机寻找DHCP服务器的阶段

DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息,

来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。

网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

阶段二:提供阶段-DHCP服务器提供IP地址的阶段

在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应;

从尚未出租的IP地址中挑选一个分配给DHCP客户机;

向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。

阶段三:选择阶段-DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。

如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息;

则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息;

该信息中包含向它所选定的DHCP服务器请求IP地址的内容。

并且要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。

阶段四:确认阶段-DHCP服务器确认所提供的IP地址的阶段。

当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后;

便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息;

告诉DHCP客户机可以使用它所提供的IP地址,然后DHCP客户机便将其TCP/IP协议与网卡绑定;

另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。

阶段五:重新登录

以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了;

而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。

当DHCP服务器收到这信息后,会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。

如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),

则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。

当原来的DHCP客户机收到此DHCP nack否认信息后,就必须重新发送DHCP discover发现信息来请求新的IP地址

阶段六:更新租约

DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。

如果DHCP客户机要延长其IP租约,则必须更新其IP租约。

DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

阶段过程参考链接:https://www.cnblogs.com/hll16/p/11942997.html

03. 网络域名解析原理(DNS)

利用DNS域名解析系统获取真实网站服务器IP地址的原理过程如下:

步骤一:本地寻找域名解析对应IP地址

在本地主机上的hosts文件和本地的缓存记录中,寻找访问网站域名对应的IP地址解析记录。

步骤二:请求本地域名服务器获取域名解析对应IP地址

向网卡中配置的本地DNS服务器获取访问网站域名对应的IP地址解析记录。

步骤三:请求互联网根域名服务器

根据域名FQDN信息向根域名服务器发出请求,从根域名服务器获取对应顶级域名服务器信息;

步骤四:请求顶级域名服务器

根据域名FQDN信息向顶级域名服务器发出请求,从顶级域名服务器获取对应二级域名服务器信息;

步骤五:请求二级域名服务器

根据域名FQDN信息向二级域名服务器发出请求,从二级域名服务器获取对应主机记录信息(A记录);

从而获得域名解析的IP地址信息

步骤六:本地DNS服务器保存解析记录并做回复

本地DNS服务器接收到相应二级域名服务器响应的A记录信息后,会把A记录信息保存在自己的服务器中;

然后再将获取的A记录解析信息发送给请求域名解析的主机。

步骤七:主机缓存DNS解析记录信息

主机会对解析后的A记录信息进行缓存,并利用获取到的网站服务器IP地址信息,进行封装数据包发起访问。

04. 网络地址解析原理(ARP)

网络地址解析原理的过程主要分为,ARP原理之请求应答过程和ARP原理之广播请求单播应答过程;

通过这两种请求应答过程即可了解掌握ARP协议的应用原理过程。

  • ARP原理之请求应答过程

同一个局域网里面,当PC1需要跟PC2进行通信时,此时PC1是如何处理的?

根据OSI数据封装顺序,发送方会自顶向下(从应用层到物理层)封装数据,然后发送出去;

这里以PC1 ping PC2的过程举例。PC1封装数据并且对外发送数据时,出现了"failed",即数据封装失败了!

给PC1指令-"ping ip2",这就告知了目的IP,此时PC1便有了通信需要的源目IP地址;

但是PC1仍然没有通信需要的目的MAC地址。

这就好比要寄一个快递,如果在快递单上仅仅写了收件人的姓名(IP),却没有写收件人的地址(MAC),

那么这个快递就没法寄出,因为信息不完整。

现在PC1已经有了PC2的IP地址信息,如何获取到PC2的MAC地址呢?此时,ARP协议就派上用场了。

当PC1和PC2在进行数据传输前,需要先进行一次ARP请求和回复过程,从而PC1和PC2便具有了对方MAC信息

PC1在真正进行通信之前,会利用ARP请求和回复过程构建出本地的ARP缓存表,表里存放IP和MAC地址映射关系;

利用构建好的映射关系,获取到目标IP对应的MAC地址信息,最终完成数据封装过程,实现了数据的标准化传输。

  • ARP原理之广播请求单播回应

在一个有多个主机的局域网中,PC1若想将ARP请求包顺利发送给PC2,且PC2还需将ARP回应包发给PC1;

整个通讯过程要比两台主机之间通讯过程更加复杂。

在多主机的局域网中,ARP协议就需要采用以太网的"广播"功能:将请求包以广播的形式发送;

交换机设备收到广播包时,会将此数据发给同一局域网的其他所有主机。

广播包特征说明:

  • 二层广播包:二层封装是目的MAC是全f(ffff.ffff.ffff...)
  • 三层广播包:三层封装时目的IP二进制表示为全1,例如:255.255.255.255;

PC1发送的请求广播包同时被其他主机收到,PC3和PC4收到之后(发现不是访问自己)则丢弃,

PC2收到后根据请求包里面的信息(有自己IP地址),判断是给自己的,所以不会丢弃,而是返回ARP回应包。

PC2在收到请求之后,就可以将PC1的IP和MAC映射信息存储在本地的ARP缓存表;

既然知道PC1在哪里,就可以返回ARP单播回应包。

简单总结:

ARP协议通过"一问一答"实现交互,但是"问"和"答"都有讲究,"问"是通过广播形式实现,"答"是通过单播形式。

05. 网络文件传输原理(FTP)

在实现FTP文件数据传输过程中,通常会出现两种网络连接方式:

  • 控制连接:主要用于在服务端监听tcp协议的21端口,实现客户端和服务端建立控制连接
  • 数据连接:主要实现服务端和客户端之间的数据传输,涉及监听的端口情况比较复杂

在建立数据连接过程中,会出现两种模式:

  • 主动模式(服务端->客户端)

服务端会利用20号端口,主动向客户端发出数据传输请求,并先连2002端口,没有连2003依次类推

但是客户端会拥有防火墙的概念,将服务端的请求屏蔽掉,因此产生了被动模式

  • 被动模式(客户端->服务端)

服务端会先发送一个通知报文,让客户端根据报文告知的随机端口向服务端发起数据连接请求;

由于是客户端到服务端的访问,所以服务端返回的数据包信息时可以穿越防火墙的;

这种机制称为防火墙连接追踪功能。

简而言之:

利用控制链路可以实现连接管理FTP服务器,利用数据连接可以保证文件数据的正常传输;

1.4.3 网络服务协议应用
01. 网络地址获取服务搭建(DHCP)

步骤一:服务环境架构规划

主机类型操作系统IP地址
DHCP服务器CentOS 710.0.0.101
DHCP客户端CentOS 7自动获取

需要注意,由于VMware Workstation虚拟软件自带DHCP服务,为了避免与DHCP服务器功能产生冲突;

应该先将虚拟软件中的DHCP功能关闭:

步骤二:服务程序安装部署

在DHCP服务端主机上部署安装DHCP程序软件:

 

 

1

[root@xiaoq ~]# yum install -y dhcp

2

[root@xiaoq ~]# cat /etc/dhcp/dhcpd.conf 

3

# DHCP Server Configuration file.

4

#   see /usr/share/doc/dhcp*/dhcpd.conf.example

5

#   see dhcpd.conf(5) man page

6

-- 查看dhcp服务配置信息,从而确认dhcp服务程序是否安装成功

步骤三:服务程序配置调整

需要对DHCP服务的配置文件进行编写,可以参考/usr/share/doc/dhcp*/dhcpd.conf.example模板文件配置;

 

 

1

# dhcp服务配置文件大致配置

2

[root@xiaoq ~]# vim /etc/dhcp/dhcpd.conf 

3

ddns-update-style none;

4

ignore client-updates;

5

-- 全局配置参数信息

6

subnet 10.0.0.0 netmask 255.255.255.0 { 

7

-- 子网网段声明信息

8

        range 10.0.0.20 10.0.0.100;

9

        option routers 10.0.0.254;

10

        option domain-name-servers 223.5.5.5,114.114.114.114;

11

-- 地址配置选项信息

12

        default-lease-time 86400;

13

        max-lease-time 518400;

14

-- 地址配置参数信息

15

        host fantasia {

16

        hardware ethernet 00:0c:29:eb:31:23;

17

        fixed-address 10.0.0.88;

18

        }

19

}

一般标准的DHCP服务配置文件应该包含:全局配置参数、子网网段声明、地址配置选项以及地址配置参数:

  • 全局配置参数:用于定义dhcpd服务程序的整体运行参数;
  • 子网网段声明:用于配置整个子网段的地址属性;

DHCP配置文件中的常用配置信息总结:

序号参数解释说明
01ddns-update-style [type]定义DNS服务动态更新的类型,类型包括:
none 不支持动态 interim 互动更新模式 ad-hoc 特殊更新模式
02[allow|ignore] client-updates允许/忽略客户端更新DNS记录
03default-lease-time [second]获取地址后的默认超时时间
04max-lease-time [second]获取地址后的最大超时时间
05option domain-name-servers定义DNS服务器地址
06option domain-name定义DNS域名
07range定义用于分配的IP地址池
08option subnet-mask定义客户端的子网掩码
09option routers定义客户端的网关地址
10broadcase-addess定义客户端的广播地址
11ntp-server定义客户端的网络时间服务器(NTP)
12nis-servers定义客户端的NIS域服务器的地址
13Hardware指定网卡接口的类型与MAC地址
14server-name向DHCP客户端通知DHCP服务器的主机名
15fixed-address将某个固定的IP地址分配给指定主机
16time-offset指定客户端与格林尼治时间的偏移差

企业环境DHCP服务配置文件真实配置信息:

 

 

1

[root@xiaoq ~]# vim /etc/dhcp/dhcpd.conf 

2

ddns-update-style none;

3

ignore client-updates;

4

subnet 10.0.0.0 netmask 255.255.255.0 { 

5

        range 10.0.0.20 10.0.0.100;

6

        option subnet-mask 255.255.255.0;

7

        option routers 10.0.0.254;

8

        option domain-name-servers 223.5.5.5;

9

        default-lease-time 21600;

10

        max-lease-time 43200;

11

}

实际配置信息解读:

序号参数作用说明
01ddns-update-style none;设置DNS服务不自动进行动态更新
02ignore client-updates;忽略客户端更新DNS记录
03subnet 10.0.0.0 netmask 255.255.255.0局域网网段设置为:10.0.0.0/24
04range 10.0.0.20 10.0.0.100;IP地址池为10.0.0.20-100(约80个IP地址)
05option subnet-mask 255.255.255.0;定义客户端默认的子网掩码
06option routers 10.0.0.254;定义客户端的网关地址
07option domain-name-servers 223.5.5.5;定义客户端的DNS地址
08default-lease-time 21600;定义默认租约时间(单位:秒)
09max-lease-time 43200;定义最大预约时间(单位:秒)

步骤四:服务程序启动检查

服务程序安装和配置完毕后,可以启动DHCP服务程序,在检查启动成功后,设置好开机自启:

 

 

1

[root@xiaoq ~]# systemctl start dhcpd

2

[root@xiaoq ~]# systemctl status dhcpd

3

[root@xiaoq ~]# systemctl enable dhcpd

步骤五:客户端主机进行测试

进入DHCP客户端主机上,并将网卡设置调整为利用DHCP获取地址信息,随之检查是否可以获取相应IP地址:

 

 

1

# 配置网卡采用DHCP模式

2

[root@xiaoq ~]# nmtui

在没有正确配置DHCP服务器时,DHCP客户端获取的IP地址信息:

在已经正确配置DHCP服务器时,DHCP客户端获取的IP地址信息:

步骤六:客户端主机地址绑定(进阶配置)

获取DHCP客户端主机mac地址信息:

 

 

1

[root@xiaoq ~]# cat /sys/class/net/eth0/address 

2

00:0c:29:31:0b:c8

配置DHCP服务端主机IP地址绑定MAC地址信息:

 

 

1

[root@xiaoq ~]# cat /etc/dhcp/dhcpd.conf 

2

ddns-update-style none;

3

ignore client-updates;

4

subnet 10.0.0.0 netmask 255.255.255.0 { 

5

        range 10.0.0.20 10.0.0.100;

6

        option subnet-mask 255.255.255.0;

7

        option routers 10.0.0.254;

8

        option domain-name-servers 223.5.5.5;

9

        default-lease-time 21600;

10

        max-lease-time 43200;

11

        host linuxxiaoQ {

12

          hardware ethernet 00:0c:29:31:0b:c8;

13

          --- 识别DHCP客户端mac地址信息

14

          fixed-address 10.0.0.88;

15

          --- 进行mac地址主机与IP地址绑定 

16

        }

17

}

查看DHCP客户端主机获取的IP地址信息:

02. 网络域名解析服务搭建(DNS)

步骤一:服务环境架构规划

主机类型操作系统IP地址
DNS服务器CentOS 710.0.0.101
DNS客户端CentOS 7指定DNS服务为10.0.0.101

声明:DNS系统架构是一个比较庞大的系统环境,涉猎的技术点多种多样,本章节知识从基础应用层面做实战应用讲解。

步骤二:服务程序安装部署

BIND(Berkeley Internet Name Domain,伯克利因特域名服务)服务是全球范围内使用最广泛;

最安全可靠且高效的域名解析服务程序。

DNS域名解析服务作为互联网基础设施服务,其责任之重可想而知,建议生成环境添加chroot扩展包,

俗称牢笼机制,以便有效地限制bind服务程序仅能对自身的配置文件进行操作,确保服务器的安全。

 

 

1

[root@xiaoq ~]# yum install bind-chroot -y

步骤三:服务程序配置过程

如果所有域名和IP地址的对应关系都写入到某个配置文件中,估计要有上千万条的参数,既不利于程序的执行效率

也不方便日后的修改和维护。因此在bind服务程序中有下面三个比较关键的文件:

  • 主配置文件(/etc/named.conf)

    用来定义bind服务程序的运行。

  • 区域配置文件(/etc/named.rfc1912.zones)

    用来保存域名和IP地址对应关系的所在位置,对应着每个域和相应IP地址所在的具体位置。

  • 数据配置文件目录(/var/named)

    该目录用来保存域名和IP地址真实对应关系的数据配置文件。

编写主配置文件信息:/etc/named.conf

 

 

1

[root@xiaoq ~]# vim /etc/named.conf 

2

listen-on port 53 { any; }; 

3

-- 表示服务器上的所有IP地址均可提供DNS域名解析服务

4

allow-query     { any; };       

5

-- 表示允许所有主机对本服务器发送DNS查询请求

01. 正向解析实验配置过程:

在DNS域名解析服务中,正向解析是指根据域名(主机名)查找到对应的IP地址。

简单来说:就是用户输入域名后,bind服务程序会自动进行查找,并将匹配到的IP地址返给用户。

第一步:编辑区域配置文件(/etc/named.rfc1912.zones)

 

 

1

[root@xiaoq ~]# vim /etc/named.rfc1912.zones

2

zone "linuxxiaoq.com" IN {

3

   type master;

4

   -- 定义dns服务类型为master;一般三种类型 hint根区域 master主区域 slave辅助区域

5

   file "linuxxiaoq.com.zone";   

6

   -- 域名与IP地址解析规则保存的文件位置

7

   allow-update {none;};

8

   -- 允许哪些客户机动态更新解析信息

9

};

第二步:编辑数据配置文件

从/var/named目录中复制一份正向解析的模板文件,然后把域名和IP地址的对应数据填写数据配置文件中并保存

 

1

[root@xiaoq ~]# cd /var/named/

2

[root@xiaoq named]# cp -a named.localhost linuxxiaoq.com.zone

3

[root@xiaoq named]# vim linuxxiaoq.com.zone

4

$TTL 1D

5

-- 表示生存周期为1天

6

@       IN SOA  linuxxiaoq.com. root.linuxxiaoq.com. (

7

--  授权信息开始 DNS区域的地址     域名管理员的邮箱

8

                                         0       ; serial

9

                                                    -- 更新序列号

10

                                        1D      ; refresh

11

                                                    -- 更新时间

12

                                        1H      ; retry

13

                                                    -- 重试延迟

14

                                        1W      ; expire

15

                                                    -- 失效时间

16

                                        3H )    ; minimum

17

                                                    -- 无效解析记录的缓存时间

18

          NS            ns.linuxxiaoq.com.       -- 域名服务记录

19

ns      IN A          10.0.0.10                        -- 地址记录(ns.linuxxiaoq.com.)

20

          IN MX 10  mail.linuxxiaoq.com     -- 邮箱交换记录

21

mail   IN A         10.0.0.10                         -- 地址记录(mail.linuxxiaoq.com)

22

www  IN A         10.0.0.10                         -- 地址记录(www.linuxxiaoq.com)

23

bbs     IN A        10.0.0.20                         -- 地址记录(bbs.linuxxiaoq.com)

24

25

# 配置文件编写完毕需要重启服务程序

26

[root@xiaoq named]# systemctl start named

第三步:客户端测试解析效果

修改DNS服务客户端网卡DNS地址信息,指向到DNS服务器地址上,解析指定域名信息,查看获取的解析记录信息:

 

 

1

# 查看客户端指定的DNS服务器地址

2

[root@xiaoq ~]# cat /etc/resolv.conf

3

# Generated by NetworkManager

4

search edu

5

nameserver 10.0.0.101

6

7

# 进行域名信息访问测试

8

[root@xiaoq ~]# nslookup 

9

> www.linuxxiaoq.com

10

Server:     10.0.0.101

11

Address:    10.0.0.101#53

12

13

Name:   www.linuxxiaoq.com

14

Address: 10.0.0.10

15

> bbs.linuxxiaoq.com

16

Server:     10.0.0.101

17

Address:    10.0.0.101#53

18

19

Name:   bbs.linuxxiaoq.com

20

Address: 10.0.0.20

02. 反向解析实验配置过程:

在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息;

一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件;

也可以针对某个IP地址进行反向解析,大致判断出有多少个网站运行在上面。

第一步:编辑区域配置文件(/etc/named.rfc1912.zones)

 

 

1

[root@xiaoq ~]# vim /etc/named.rfc1912.zones

2

zone "linuxxiaoq.com" IN {

3

   type master;

4

   file "linuxxiaoq.com.zone";

5

   allow-update {none;};

6

};

7

zone "0.0.10.in-addr.arpa" IN {   

8

-- 表示10.0.0.0/24网段的反向解析区域

9

   type master;

10

   file "10.0.0.arpa";

11

};

第二步:编辑数据配置文件

从/var/named目录中复制一份反向解析的模板文件,然后把下面的参数填写到文件中。

 

 

1

[root@xiaoq ~]# cd /var/named/

2

[root@xiaoq named]# cp -a named.localhost 10.0.0.arpa

3

[root@xiaoq named]# vim 10.0.0.arpa

4

$TTL 1D

5

@       IN SOA  linuxxiaoq.com. root.linuxxiaoq.com. (

6

                                         0       ; serial

7

                                        1D      ; refresh

8

                                        1H      ; retry

9

                                        1W      ; expire

10

                                        3H )    ; minimum

11

          NS            ns.linuxxiaoq.com.

12

ns      A              10.0.0.10

13

10      PTR          ns.linuxxiaoq.com               

14

10      PTR          mail.linuxxiaoq.com        -- 10.0.0.10 对应的域名信息     

15

10      PTR          www.linuxxiaoq.com    

16

20      PTR          bbs.linuxxiaoq.com         -- 10.0.0.20 对应的域名信息

17

18

# 配置文件编写完毕需要重启服务程序

19

[root@xiaoq named]# systemctl restart named

第三步:客户端测试解析效果

修改DNS服务客户端网卡DNS地址信息,指向到DNS服务器地址上,解析指定域名信息,查看获取的解析记录信息:

 

 

1

[root@xiaoq ~]# nslookup 

2

> 10.0.0.10

3

10.0.0.10.in-addr.arpa  name = ns.linuxxiaoq.com.0.0.10.in-addr.arpa.

4

10.0.0.10.in-addr.arpa  name = mail.linuxxiaoq.com.0.0.10.in-addr.arpa.

5

10.0.0.10.in-addr.arpa  name = www.linuxxiaoq.com.0.0.10.in-addr.arpa.

6

> 10.0.0.20

7

20.0.0.10.in-addr.arpa  name = bbs.linuxxiaoq.com.0.0.10.in-addr.arpa.

8

> 

03. 分离解析实验配置过程:(进阶配置)

使用DNS服务的分离解析功能,即可让位于不同地理范围内的访问者通过访问相同的网址,而从不同的服务器获取到相同的数据。

中国 www.xiaoq.com --> DNS服务器 10.0.0.10 ---> 10.0.0.15 页面信息

美国 www.xiaoq.com --> DNS服务器 20.0.0.10 ---> 20.0.0.15 页面信息

主机名称操作系统IP地址信息
DNS服务器RHEL 7北京网络:10.0.0.10
美国网络:20.0.0.10
国内访问者windows 1010.0.0.1
国外访问者windows 1020.0.0.1

第一步:编辑服务主配置文件

 

 

1

[root@xiaoq ~]# vim /etc/named.conf 

2

listen-on port 53 { any; };

3

-- 表示服务器上的所有IP地址均可提供DNS域名解析服务

4

allow-query     { any; };

5

-- 表示允许所有主机对本服务器发送DNS查询请求

6

#zone "." IN {

7

#       type hint;

8

#       file "named.ca";

9

#};

10

-- 配置DNS分离解析功能与DNS根服务器配置参数有冲突,所以需要将以上信息注释

第二步:编辑区域配置文件

首先需要将原有的区域配置文件中的内容数据清空,然后按照以下格式写入参数信息:

 

 

1

[root@xiaoq etc]# cat named.rfc1912.zones

2

acl "china" { 10.0.0.0/24; };

3

acl "american" { 20.0.0.0/24; };

4

-- 利用acl参数分别定义两个变量名称(china与american),需要匹配IP地址时只需写入两个变量名称即可

5

view "china"{

6

  match-clients { "china"; };

7

  zone "linuxxiaoq.com" {

8

    type master;

9

    file "linuxxiaoq.com.china";

10

  };

11

};

12

-- 通过判断用户的IP地址是否是中国的,然后去加载相应的数据配置文件:linuxxiaoq.com.china

13

-- 当把相应的IP地址分别写入到数据配置文件后,即实现DNS的分离解析功能

14

15

view "american"{

16

  match-clients { "american"; };

17

  zone "linuxxiaoq.com" {

18

    type master;

19

    file "linuxxiaoq.com.american";

20

  };

21

};

22

-- 通过判断用户的IP地址是否是美国的,然后去加载相应的数据配置文件:linuxxiaoq.com.american

23

-- 当把相应的IP地址分别写入到数据配置文件后,即实现DNS的分离解析功能

利用上面区域配置文件配置信息,最终可以实现:

  • 当中国的用户访问linuxxiaoq.com域名时,便会按照linuxxiaoq.com.china数据配置文件内的IP地址找到对应的网站服务器;
  • 当美国的用户访问linuxxiaoq.com域名时,便会按照linuxxiaoq.com.american数据配置文件内的IP地址找到对应的网站服务器;

第三步:建立数据配置文件

分别通过模板文件创建出两份不同名称的区域数据文件,其名称应与上面区域配置文件中的参数相对应:

 

 

1

[root@xiaoq etc]# cd /var/named/

2

You have new mail in /var/spool/mail/root

3

[root@xiaoq named]# cp -a named.localhost linuxxiaoq.com.china

4

[root@xiaoq named]# cp -a named.localhost linuxxiaoq.com.american

5

6

# 编写中国DNS数据文件信息

7

[root@xiaoq named]# cat linuxxiaoq.com.china 

8

$TTL 1D

9

-- 生存周期为1天

10

@   IN SOA  linuxxiaoq.com root.linuxxiaoq.com (

11

                          -- DNS区域地址   域名管理员的邮箱

12

                    0   ; serial        -- 更新序列号

13

                    1D  ; refresh               -- 更新时间

14

                    1H  ; retry                   -- 重试延时 

15

                    1W  ; expire                -- 失效时间 

16

                    3H )   ; minimum          -- 无效解析记录的缓存时间

17

        NS  ns.linuxxiaoq.com.                           -- 域名服务器记录

18

ns         IN A    10.0.0.10                                          -- 地址记录(ns.linuxxiaoq.com)

19

www     IN A    10.0.0.15                                          -- 地址记录(www.linuxxiaoq.com)

20

21

[root@xiaoq named]# vim linuxxiaoq.com.american

22

$TTL 1D

23

-- 生存周期为1天

24

@   IN SOA  linuxxiaoq.com root.linuxxiaoq.com (

25

                          -- DNS区域地址   域名管理员的邮箱

26

                    0   ; serial        -- 更新序列号

27

                    1D  ; refresh               -- 更新时间

28

                    1H  ; retry                   -- 重试延时 

29

                    1W  ; expire                -- 失效时间 

30

                    3H )   ; minimum          -- 无效解析记录的缓存时间

31

        NS  ns.linuxxiaoq.com.                           -- 域名服务器记录

32

ns         IN A    20.0.0.10                                          -- 地址记录(ns.linuxxiaoq.com)

33

www     IN A    20.0.0.15                                          -- 地址记录(www.linuxxiaoq.com)

第四步:重新启动named服务程序,验证结果

将客户端主机的IP地址分别设置为10.0.0.1和20.0.0.1,将DNS地址分别设置为DNS服务器主机的两个IP地址;

尝试使用nslookup命令解析域名时就能清晰地看到解析结果:

 

 

1

# 在DNS服务器上重启named服务

2

[root@xiaoq ~]# cat /etc/resolv.conf

3

4

# 模拟国内主机进行测试

5

[root@xiaoq ~]# cat /etc/resolv.conf

6

# Generated by NetworkManager

7

search edu

8

nameserver 10.0.0.10

9

[root@xiaoq ~]# nslookup 

10

> www.linuxxiaoq.com

11

Server:     10.0.0.10

12

Address:    10.0.0.10#53

13

14

Name:   www.linuxxiaoq.com

15

Address: 10.0.0.15

16

17

# 模拟国外主机进行测试

18

[root@xiaoq ~]# cat /etc/resolv.conf

19

# Generated by NetworkManager

20

search edu

21

nameserver 20.0.0.10

22

[root@xiaoq ~]# nslookup 

23

> www.linuxxiaoq.com

24

Server:     20.0.0.10

25

Address:    20.0.0.10#53

26

27

Name:   www.linuxxiaoq.com

28

Address: 20.0.0.15
03. 网络地址解析应用设置(ARP)

ARP解析的数据信息可以使数据封装过程中,快速查询到IP地址对应的MAC地址信息,并且可以在一定程度上减少广播包的产生;

在企业应用环境中,一般会采用两种方式应用arp协议功能:

  • 动态ARP协议功能:(默认)

动态ARP协议配置属于默认配置,可以让主机之间自动的去发现通讯主机的MAC地址信息,并且会定期的更新IP和MAC解析记录;

比较适合于企业办公的场景,当主机IP地址发生变更后,也会随之更新ARP表信息,从而提高网络便捷性;

从安全角度分析,安全性不高,容易出现arp地址欺骗行为。

  • 静态ARP协议功能:

静态ARP协议配置属于人为配置,可以让主机之间设置的IP地址和MAC地址关系建立静态绑定,并且不会定期发生变化更新;

比较适合于数据中心的场景,当主机IP地址发生变更后,必须人为改动ARP表信息,从而提高网络安全性;

从便捷监督分析,便捷性不高,无形增加arp表的维护难度。

静态ARP协议配置过程:

第一步:获取默认ARP表解析记录

在进行静态绑定ARP表之前,建议先采用动态方式获取默认ARP表的信息,为静态绑定提供参考依据:

 

 

1

[root@xiaoq ~]# arp -a

2

? (10.0.0.1) at 00:50:56:c0:00:08 [ether] on eth0

3

gateway (10.0.0.254) at 00:50:56:f6:15:33 [ether] on eth0

4

? (10.0.0.88) at 00:0c:29:31:0b:c8 [ether] on eth0

第二步:静态绑定ARP表解析记录

 

 

1

[root@xiaoq ~]# arp -s 10.0.0.1 00:50:56:c0:00:08

2

[root@xiaoq ~]# arp -a

3

? (10.0.0.1) at 00:50:56:c0:00:08 [ether] PERM on eth0

4

gateway (10.0.0.254) at 00:50:56:f6:15:33 [ether] on eth0

5

? (10.0.0.88) at 00:0c:29:31:0b:c8 [ether] on eth0

一定设置了ARP静态绑定,ARP条目信息就不会消失,也不会随着主机或地址的更换发生变更调整。

随之,当局域网环境发生变更调整后,为了能保证数据的通讯,需要网络管理人员人为进行改动调整,增加了网络运维难度。

如果想删除静态绑定的信息可以使用下面命令:

 

 

1

[root@xiaoq ~]# arp -d 10.0.0.1

2

[root@xiaoq ~]# arp -a

3

? (10.0.0.1) at 00:50:56:c0:00:08 [ether] on eth0

4

gateway (10.0.0.254) at 00:50:56:f6:15:33 [ether] on eth0

5

? (10.0.0.88) at 00:0c:29:31:0b:c8 [ether] on eth0
04. 网络文件存储服务搭建(FTP)

vsftpd(very sercure ftp daemon,非常安全的FTP守护进程)是一款运行在Linux操作系统上的FTP服务程序,完全开源且免费;

具有很高的安全性、传输速度;以及支持虚拟用户验证等其他FTP服务程序不具备的特点。

步骤一:服务环境架构规划

主机类型操作系统IP地址
FTP服务器CentOS 710.0.0.101
FTP客户端CentOS 710.0.0.88

步骤二:服务程序安装部署

 

 

1

[root@xiaoq ~]# yum install -y vsftpd

2

-- ftp服务端程序安装

3

[root@xiaoq ~]# yum install -y ftp

4

-- 在Linux系统中,ftp以命令行界面方式管理ftp传输数据,需要安装好客户端工具(客户端安装即可)

步骤三:服务程序配置介绍

vsftpd服务程序的主机配置文件:/etc/vsftpd/vsftpd.conf,其中内容大部分为注释信息,经过精简化处理后,具体内容如下:

 

 

1

[root@xiaoq ~]# mv /etc/vsftpd/vsftpd.conf{,.bak}

2

[root@xiaoq ~]# grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf     

3

[root@xiaoq ~]# cat /etc/vsftpd/vsftpd.conf

4

anonymous_enable=YES

5

local_enable=YES

6

write_enable=YES

7

local_umask=022

8

dirmessage_enable=YES

9

xferlog_enable=YES

10

connect_from_port_20=YES

11

xferlog_std_format=YES

12

listen=NO

13

listen_ipv6=YES

14

pam_service_name=vsftpd

15

userlist_enable=YES

16

tcp_wrappers=YES

配置文件具体配置参数说明:

序号配置参数解释说明
01listen=[YES|NO]是否以独立运行的方式监听服务
02listen_address=IP地址设置要监听的IP地址
03listen_port=21设置FTP服务的监听端口
04download_enable=[YES|NO]是否允许下载文件
05userlist_enable=[YES|NO]
userlist_deny=[YES|NO]
设置用户列表为“允许”还是“禁止”操作
06max_clients=0最大客户端连接数,0为不限制
07max_per_ip=0同一IP地址的最大连接数,0为不限制
08anonymous_enable=[YES|NO]是否允许匿名用户访问
09anon_upload_enable=[YES|NO]是否允许匿名用户上传文件
10anon_umask=022匿名用户上传文件的umask值
11anon_root=/var/ftp匿名用户的FTP根目录
12anon_mkdir_write_enable=[YES|NO]是否允许匿名用户创建目录
13anon_other_write_enable=[YES|NO]是否开放匿名用户的其他写入权限
比如 重命名 删除等操作权限
14anon_max_rate=0匿名用户的最大传输速率(字节/秒),0为不限制
15local_enable=[YES|NO]是否允许本地用户登录FTP
16local_umask=022本地用户上传文件的umask值
17local_root=/var/ftp本地用户的FTP根目录
18chroot_local_user=[YES|NO]是否将用户权限禁锢在FTP目录,以确保安全
19local_max_rate=0本地用户最大传输速率(字节/秒),0为不限制

步骤四:服务程序应用模式

vsftpd作为更安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP服务器上:

  • 匿名用户模式:

是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。

  • 本地用户模式:

是通过linux系统本地的账户密码信息进行认证的模式,相较于匿名用户模式更安全,而且配置起来也很简单;

但如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。

  • 虚拟用户模式:

是三种模式中最安全的一种认证模式,需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息;

这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。

这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

01. 匿名用户模式配置方法:

在vsftpd服务程序中,匿名用户模式是最不安全的一种认证模式,任何人都可以无需密码验证而直接登录到FTP服务器;

这种模式一般用来访问不重要的公开文件数据。

vsftpd服务程序默认开启了匿名用户模式,只需要开放匿名用户的上传、下载文件的权限,以及用户创建 删除 更改名称的权限;

说明:针对匿名用户模式会有潜在危险,一些特定权限的开放建议在学习练习环境配置即可,不建议在生产环境中应用。

可以向匿名用户开放的权限参数信息说明:

序号参数信息作用说明
01anonymous_enable=YES允许匿名访问模式
02anon_umask=022匿名用户上传文件的umask值
03anon_upload_enable=YES允许匿名用户上传文件
04anon_mkdir_write_enable=YES允许匿名用户创建目录
05anon_other_write_enable=YES允许匿名用户修改目录名称或删除目录

具体配置文件编辑信息:

 

 

1

[root@xiaoq ~]# cat /etc/vsftpd/vsftpd.conf

2

anonymous_enable=YES

3

anon_umask=022

4

anon_upload_enable=YES

5

anon_mkdir_write_enable=YES

6

anon_other_write_enable=YES

7

-- 匿名用户配置信息

8

local_enable=YES

9

write_enable=YES

10

local_umask=022

11

dirmessage_enable=YES

12

xferlog_enable=YES

13

connect_from_port_20=YES

14

xferlog_std_format=YES

15

listen=NO

16

listen_ipv6=YES

17

pam_service_name=vsftpd

18

userlist_enable=YES

19

tcp_wrappers=YES

20

21

[root@xiaoq ~]# ls -ld /var/ftp/pub/

22

drwxr-xr-x 2 root root 6 Jun 10  2021 /var/ftp/pub/

23

[root@xiaoq ~]# chown -R ftp /var/ftp/pub/

24

[root@xiaoq ~]# ls -ld /var/ftp/pub/

25

drwxr-xr-x 2 ftp root 6 Jun 10  2021 /var/ftp/pub/

26

-- 想让匿名用户能操作管理连接后的根目录,需要对根目录进行属主用户调整

配置完后后,重启vsftpd服务并设置开机自动启动:

 

 

1

[root@xiaoq ~]# systemctl restart vsftpd

2

[root@xiaoq ~]# systemctl enable vsftpd

在客户端执行ftp命令连接到远程的FTP服务器进行测试:

 

 

1

[root@xiaoq ~]# ftp 10.0.0.101

2

Connected to 10.0.0.101 (10.0.0.101).

3

220 (vsFTPd 3.0.2)

4

Name (10.0.0.101:root): anonymous 

5

-- 以匿名用户建立连接

6

331 Please specify the password.

7

Password:

8

-- 无需密码即可连接

9

230 Login successful.

10

Remote system type is UNIX.

11

Using binary mode to transfer files.

12

ftp> cd pub

13

250 Directory successfully changed.

14

-- 可以切换目录信息

15

ftp> pwd

16

257 "/pub"

17

ftp> mkdir files

18

257 "/pub/files" created

19

-- 可以创建目录

20

ftp> rename files database

21

350 Ready for RNTO.

22

250 Rename successful.

23

-- 可以对目录名称修改

24

ftp> rmdir database

25

250 Remove directory operation successful.

26

-- 可以删除目录信息

27

ftp> exit

28

221 Goodbye. 

02. 本地用户模式配置方法:

相较于匿名用户模式,本地用户模式更加安全,而且配置也更加简单。

本地用户模式使用的权限参数信息说明:

序号参数信息作用说明
01anonymous_enable=NO禁止匿名访问模式
02local_enable=YES允许本地用户模式
03write_enable=YES设置可写权限
04local_umask=022本地用户模式创建文件的umask值
05userlist_enable=YES启用“禁止用户名单”,名单文件为ftpusers和user_list
06userlist_deny=YES开启用户作用名单文件功能

具体配置文件编辑信息:

 

 

1

[root@xiaoq ~]# vim /etc/vsftpd/vsftpd.conf

2

anonymous_enable=NO

3

local_enable=YES

4

write_enable=YES

5

local_umask=022

6

-- 本地用户配置信息

7

dirmessage_enable=YES

8

xferlog_enable=YES

9

connect_from_port_20=YES

10

xferlog_std_format=YES

11

listen=NO

12

listen_ipv6=YES

13

pam_service_name=vsftpd

14

userlist_enable=YES

15

tcp_wrappers=YES

配置完后后,重启vsftpd服务并设置开机自动启动:

 

 

1

[root@xiaoq ~]# systemctl restart vsftpd

2

[root@xiaoq ~]# systemctl enable vsftpd

按照上面配置信息,目前已经完全可以使用本地用户的身份登录FTP服务器了,但使用root管理员登录后,系统会提示如下信息:

 

 

1

[root@xiaoq ~]# ftp 10.0.0.101

2

Connected to 10.0.0.101 (10.0.0.101).

3

220 (vsFTPd 3.0.2)

4

Name (10.0.0.101:root): root

5

530 Permission denied.

6

Login failed.

出现以上错误信息的原因是因为vsftpd服务程序所在的目录中默认存放着两个名为“用户名单”的文件(ftpusers和user_list);

vsftp服务程序目录中的这两个文件里面写有某个用户的名称,就不再允许这个用户登录到FTP服务器上:

 

 

1

[root@xiaoq ~]# cat /etc/vsftpd/user_list 

2

# vsftpd userlist

3

# If userlist_deny=NO, only allow users in this file

4

# If userlist_deny=YES (default), never allow users in this file, and

5

# do not even prompt for a password.

6

# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers

7

# for users that are denied.

8

root

9

bin

10

daemon

11

adm

12

lp

13

sync

14

shutdown

15

halt

16

mail

17

news

18

uucp

19

operator

20

games

21

nobody

22

[root@xiaoq ~]# cat /etc/vsftpd/ftpusers  

23

# Users that are not allowed to login via ftp

24

root

25

bin

26

daemon

27

adm

28

lp

29

sync

30

shutdown

31

halt

32

mail

33

news

34

uucp

35

operator

36

games

37

nobody

vsftpd服务程序为了保证服务器的安全性默认禁止了root管理员和大多数系统用户的登录行为;

这样可以有效地避免黑客通过FTP服务对root管理员密码进行暴力破解。

处理方式:可以将指定root或系统用户从文件中删除,或使用清单中没有的本地用户进行登录FTP

 

 

1

[root@xiaoq ~]# ftp 10.0.0.101

2

Connected to 10.0.0.101 (10.0.0.101).

3

220 (vsFTPd 3.0.2)

4

Name (10.0.0.101:root): xiaoQ

5

331 Please specify the password.

6

Password:

7

230 Login successful.

8

Remote system type is UNIX.

9

Using binary mode to transfer files.

10

ftp> mkdir files

11

257 "/home/xiaoQ/files" created

12

ftp> rename files database

13

350 Ready for RNTO.

14

250 Rename successful.

15

ftp> rmdir database

16

250 Remove directory operation successful.

17

ftp> exit

18

221 Goodbye.

03. 虚拟用户模式配置方法:

虚拟用户模式是三种模式中最安全的一种认证模式,但配置流程也会稍微复杂一些。

步骤一:创建用于进行FTP认证的用户数据库文件

配置文件中奇数行为认证用户名称信息,偶数行为密码信息:

 

 

1

[root@xiaoq vsftpd]# cd /etc/vsftpd/

2

[root@xiaoq vsftpd]# cat vuser.list 

3

xiaoQ01          --- 用户信息

4

oldboy123      --- 密码信息

5

xiaoQ02

6

oldboy123

由于明文信息既不安全,也不符合让vsftpd服务直接加载的的格式,因此需要使用db_load命令用哈希算法将明文文件转为数据库文件;

并且降低转换后的数据库文件权限,最后再把原始的明文信息文件删除:

 

 

1

[root@xiaoq vsftpd]# db_load -T -t hash -f vuser.list vuser.db

2

[root@xiaoq vsftpd]# file vuser.db 

3

vuser.db: Berkeley DB (Hash, version 9, native byte-order)

4

[root@xiaoq vsftpd]# chmod 600 vuser.db 

5

[root@xiaoq vsftpd]# rm -f vuser.list 

步骤二:创建vsftpd服务程序用户存储文件的根目录以及虚拟用户映射的系统本地用户

FTP服务用于存储文件的根目录指的是:当虚拟用户登录后所访问的默认位置。

建立用户映射的目的是便于虚拟用户操作文件时,可以借用真实的用户属性信息。

 

 

1

[root@xiaoq vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual

2

[root@xiaoq vsftpd]# ls -ld /var/ftproot/

3

drwx------ 2 virtual virtual 76 Mar 21 22:34 /var/ftproot/

4

[root@xiaoq vsftpd]# chmod -R 755 /var/ftproot/

步骤三:建立用于虚拟用户登录验证PAM文件

简单来说,PAM是一种安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式,而不必对应程序进行任何修改。

新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的 “db=”参数为使用db_load命令生成的数据库文件路径;

 

 

1

[root@xiaoq vsftpd]# vim /etc/pam.d/vsftpd.vu

2

auth        required  pam_userdb.so db=/etc/vsftpd/vuser

3

account  required  pam_userdb.so db=/etc/vsftpd/vuser

4

-- 数据库文件的后缀信息可以不用写

步骤四:为虚拟用户设置不同的权限

虽然账户xiaoQ01和xiaoQ02都是用于vsftpd服务程序认证的虚拟账户,但在实际企业环境中可能会有不同的权限的应用:

  • xiaoQ01 允许上传 创建 修改 查看 删除文件
  • xiaoQ02 只允许查看文件
 

 

1

[root@xiaoq vsftpd]# mkdir /etc/vsftpd/vusers_dir

2

[root@xiaoq vsftpd]#  cd /etc/vsftpd/vusers_dir

3

[root@xiaoq vusers_dir]# touch xiaoQ02

4

[root@xiaoq vusers_dir]# vim xiaoQ01

5

anon_upload_enable=YES

6

anon_mkdir_write_enable=YES

7

anon_other_write_enable=YES

8

# 可选配置参数信息

9

anon_umask=022

10

--- 配置后可以让虚拟用户上传的数据信息权限为644 不添加默认为600

步骤五:编写ftp服务程序配置文件

匿名用户模式使用的权限参数信息说明:

序号参数信息作用说明
01anonymous_enable=NO禁止匿名访问模式
02local_enable=YES允许本地用户模式
03guest_enable=YES开启虚拟用户模式
04guest_username=virtual指定虚拟用户账户
05pam_service_name=vsftpd.vu指定需要加载PAM认证文件信息
06allow_writeable_chroot=YES允许对禁锢的FTP根目录执行写入操作,并且不拒绝用户的登录请求
07user_config_dir=/etc/vsftpd/vusers_dir定义加载虚拟用户不同权限配置文件的存放路径

具体配置文件编辑信息:

 

 

1

[root@xiaoq vsftpd]# cat /etc/vsftpd/vsftpd.conf

2

anonymous_enable=NO

3

local_enable=YES

4

guest_enable=YES

5

guest_username=virtual

6

allow_writeable_chroot=YES

7

-- 虚拟用户模式配置信息

8

write_enable=YES

9

local_umask=022

10

dirmessage_enable=YES

11

xferlog_enable=YES

12

connect_from_port_20=YES

13

xferlog_std_format=YES

14

listen=NO

15

listen_ipv6=YES

16

pam_service_name=vsftpd.vu

17

-- 虚拟用户模式配置信息

18

userlist_enable=YES

19

tcp_wrappers=YES

20

user_config_dir=/etc/vsftpd/vusers_dir

21

-- 虚拟用户模式配置信息

配置完后后,重启vsftpd服务并设置开机自动启动:

 

 

1

[root@xiaoq ~]# systemctl restart vsftpd

2

[root@xiaoq ~]# systemctl enable vsftpd

步骤六:使用虚拟用户登录进行验证配置过程

 

 

1

# xiaoQ01登录FTP操作过程

2

[root@xiaoq ~]# ftp 10.0.0.101

3

Connected to 10.0.0.101 (10.0.0.101).

4

220 (vsFTPd 3.0.2)

5

Name (10.0.0.101:root): xiaoQ01

6

331 Please specify the password.

7

Password:

8

230 Login successful.

9

Remote system type is UNIX.

10

Using binary mode to transfer files.

11

ftp> mkdir files

12

257 "/files" created

13

ftp> rename files database

14

350 Ready for RNTO.

15

250 Rename successful.

16

ftp> rmdir database

17

250 Remove directory operation successful.

18

ftp> exit

19

221 Goodbye.

20

21

# xiaoQ02登录FTP操作过程

22

[root@xiaoq ~]# ftp 10.0.0.101

23

Connected to 10.0.0.101 (10.0.0.101).

24

220 (vsFTPd 3.0.2)

25

Name (10.0.0.101:root): xiaoQ02

26

331 Please specify the password.

27

Password:

28

230 Login successful.

29

Remote system type is UNIX.

30

Using binary mode to transfer files.

31

ftp> mkdir files

32

550 Permission denied.

步骤四:服务程序文件传输

当用户使用三种模式连接到指定FTP服务器上后,可以使用FTP控制命令实现文件的传输(下载/上传)

具体常用FTP控制命令:

序号命令解释说明
01cd切换服务端路径信息
02pwd查看服务端当前路径信息
03lcd切换客户端路径信息
04ls查看服务端路径下数据信息
05put上传数据文件信息
06get下载数据文件信息
07help获取命令帮助信息
08exit退出ftp控制模式状态

1.5 网络地址规划说明

1.5.1 网络地址概念介绍

IP地址是由32位二进制数字序列组成的数字序列,采用点将32位数字进行分割为4段,每段8位的二进制数,但二进制数不便于记忆,

因此转换为10进制数显示,即点分十进制。

IP地址二进制与十进制转换算法:

根据第两张表的信息进行数据的逻辑总结可以得知如下结论:

因此可以得知对于点分十进制而言,对应的每个数值即为下图所示:

根据上面说到的将32位数字分为4端,即每段8位数字;通过上图也可以得知主机地址的初步理解算法

1.5.2 网络地址分类介绍

01. 按IP地址范围划分

根据上面的内容可以得知,IP地址是根据2的次方进行求得的;

而转变思路,也可以利用2的次方进行ip地址类型的表示,即一个IP地址是由2的32次方求得,因此2的32次方的范围为:

 

 

1

0.0.0.0 --->0.0.0.1--->...--->255.255.255.255

但是如果随着ipv4地址的随意使用,会使IP地址变的没有规律的使用,变的凌乱,并且还会造成地址的浪费;

因此需要对ipv4地址进行一定的规划管理和控制使用,所以将IP地址的范围划分为5个类别:

ABC三类分配给互联网用户所使用;D类型做为组播使用;E类型作为科学研究使用,进行保留

根据地址的类型划分,具体地址使用情况为:

类型使用范围排除信息
A类1.0.0.0~126.0.0.00.0.0.0 和 127.0.0.0保留
B类128.0.0.0~191.254.0.0128.0.0.0 和 191.255.0.0保留
C类192.0.1.0~223.255.254.0192.0.0.0 和 223.255.255.0保留
D类224.0.0.0~239.255.255.255
E类240.0.0.0~255.255.255.254255.255.255.255 用于广播

特殊IP地址说明:

  • 127.0.0.1

表示回环地址,进行测试使用,验证本地的TCP协议簇安装的是否正确。

  • 0.0.0.0

主机位全为0的称为是网络地址(网段地址)

  • 255.255.255.255

主机位全为1的称为是广播地址,即向所有人发出信息

02. 按IP地址用途划分

分为公网与私网地址,其中私网地址又称为局域网地址;

公网地址:全球唯一的IP地址,可以出现在公网路由表中,主要用于互联网访问使用;

私网地址:重复使用的IP地址,禁止出现在公网路由表中,主要用于局域网访问使用;

私网地址常规使用范围:

类型私网网段私网地址访问
A类10.0.0.0/810.0.0.0~10.255.255.255
B类172.16.0.0/12172.16.0.0~172.31.255.255
C类192.168.0.0/16192.168.0.0~192.168.255.255
169.254.0.0/16169.254.0.0~169.254.255.255

其他地址称为公网地址,一般会由运营商进行分配,常见配置公网地址的环境为IDC机房,以及企业路由器设备的外连接口上。

划分私网和公网的原因:

划分私网ip地址的作用主要是避免地址的枯竭,对于一般不同局域网环境中,地址实际是可以重复使用的,不必要仍保持唯一性;

就类似于人的身份证和护照的关系一样,默认私网地址只在本局域网中有效识别,但一旦出局域网到达公网,就没有任何意义了;

因此为解决这种问题,就出现了一种技术称为NAT,即地址的映射技术。

NAT技术参考链接:NAT技术介绍-CSDN博客

03. 按网络通信方式划分

  • 单播地址(主机地址)

就是点到点的通讯,例如A-B的通信方式;一般终端设备上配置的有效地址就是单播地址

  • 组播地址 100 1-50

也是一对多的方式,但是可以根据需要进行接收,如果不想接收可以进行过滤掉;一般常见的都是D类地址

  • 广播地址 100 1

在一定的范围内,所有成员都会收到的信息,称为广播信息,并且每个成员都要收取,都要进行处理。

用于向局域网络中的所有主机发送数据的特殊地址。广播地址使用该网络范围内的最大地址,即主机位全部为1的地址。

  • 网络地址

表示在网络的IPv4主机地址范围内,最小地址保留为网络地址,此地址的主机部分的每个主机位均为0;

一般作为路由条目出现,来区分不同的网络区域。

知识总结:

  • 0和255作为主机的地址,是不能进行分配使用的,只有0-255之间的地址可以进行分配为主机地址使用;
  • 根据主机地址范围取值,可以引入一个公式:
 

 

1

# 可以分配的主机地址个数 = 2的N次方 - 2

2

# 以192.168.12.0/24的网络为例:主机位占用了8位

3

192.168.12. (2的8次方 - 2) = 192.168.12.1 ~ 192.168.12.254

4

-- N次方的N表示有多少个主机位

5

-- -2就表示减去网络地址和广播地址,剩余的就是可分配的主机地址
1.5.3 网络地址子网划分

网络掩码概念:

网络掩码与IP地址搭配使用,用于描述一个IP地址中的网络部分及主机部分,根据划分后的主机部分,随之可得出可拥有的主机范围;

网络掩码32bits,与32bits的IP地址一一对应,掩码中为1的位对应IP地址中的网络位,掩码中为0的位对应IP地址中的主机位。

常规A B C三种主类地址的掩码为:/8(255.0.0.0) /16(255.255.0.0)/24(255.255.255.0)

子网划分背景:

为什么要划分子网?(也就是引入一个子网的概念)

对于利用私网地址进行分配地址时,其实无需子网划分概念的,但是如果使用公网地址环境中,如果不做子网划分会带来以下问题:

  • 会非常的浪费地址空间,有可能只有两台主机或者一台,就分配一个B类或A地址;
  • 会出现大量的局域网地址,同时向一个网关发送请求,引起网关设备的负载过高;
  • 会引起一个网络区域内的大量广播数据传送,形成广播风暴

子网划分作用:

子网划分简单理解,就是将一个大的网络结构切成几块,划分成几个小的网络区域;

  • 有效的避免地址的浪费,使一个大的地址空间更加弹性和更加灵活的进行分配;
  • 减少网关设备所承载的负载量;
  • 将一个大的广播域划分成几个小的广播域环境,减少广播包对设备网络性能的影响;

子网划分方式:

根据掩码的变化进行子网划分,调整相应的主机位变为网络位,对主机位进行缩减,从而产生出子网位,随之生成多个子网;

具体实现方式为:

以一个B类地址:172.16.0.0/16划分子网为例,默认B类掩码为/16

当掩码信息变为/18后,即表示出现了子网划分,生成子网掩码:

网络位向右移动,占用主机位,即向主机位借位,生成新的网络位

子网划分结论:

  • 判断ip地址类型,找掩码

根据上面所学的ip地址分类规划,可以得知默认的主类网络地址掩码信息

  • 变更掩码,出子网

根据默认的掩码规划信息,将掩码信息进行调整变更,即进行子网划分

  • 已知子网,获得子网号

根据借用的主机位,可以判断出可用的子网信息

  • 已知子网号,算取主机段

根据剩余的主机位,可以判断出可用的主机地址

  • 根据主机段,得出广播号

得出主机范围,即也就得出了网络地址和广播地址

1.6 系统网络通讯优化

企业服务器在进行网络通讯过程中,为了避免网络性能瓶颈对网络通讯的影响,在实际工作中会对系统内核中网络参数进行优化调整;

从而提升网络性能,增加服务器中网络服务的稳定性与高效性。

进行优化的根本目的:

提高安全性:避免恶意的网络攻击行为对系统网络资源造成影响;

提高并发性:使服务器设备可以承载更多的客户端主机的访问;

说明:对系统网络性能做优化其实最根本的目的,就是保证服务端在各种条件情况下能更加稳定的运行,处理相关网络业务。

1.6.1 网络连接状态介绍
01. 三次握手过程状态变化:

过程一:第一次握手

客户端主机向服务端主机发送建立TCP连接的请求报文

握手前的状态变化:

握手过程客户端状态执行动作
握手前closed准备发送TCP报文:包含SYN=1控制字段
服务端状态
closed->listen启动服务程序,创建socket(网络连接信息),激活可访问的监听端口信息

说明:socket就是网络连接的信息,会包含协议信息 源IP地址 源端口 目标IP地址 目标端口信息--五元组概念

握手后的状态变化:

握手过程客户端状态执行动作
握手后closed->syn_sent已经发出TCP报文:包含SYN=1控制字段
服务端状态
listen已经接收TCP报文,获悉客户端主机想要建立连接

过程二:第二次握手

服务端主机向客户端主机发送的TCP连接的请求报文

握手后的状态变化:

握手过程客户端状态执行动作
握手后syn_sent接收回复TCP报文:包含SYN=1 ACK=1控制字段
服务端状态
listen->syn_rcvd接收请求建立连接TCP报文,并已回复响应建立连接TCP报文

过程三:第三次握手

客户端主机收到服务端主机发送的TCP报文回复信息后,会再次发送确认的TCP报文信息。

握手后的状态变化:

握手过程客户端状态执行动作
握手后syn_sent->established发出确认TCP报文:包含ACK=1控制字段,最终进入建立连接状态
服务端状态
syn_rcvd->established接收确认TCP报文,最终进入建立连接状态

至此三次握手过程结束,作为建立连接的客户端和响应连接的服务端,总共出现5种状态的变迁,分别总结为:

客户端主机:closed->syn_sent->established

服务端主机:closed->listen->syn_rcvd->established

知识补充说明:

SYN泛洪攻击说明:(借助了三次握手的缺陷产生的)

A(攻击者)发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当这个服务器返回ACK以后,A不再进行确认;

那这个连接就处在了一个挂起的状态,也就是半连接的意思,服务器收不到最后确认的消息,还会重复发送ACK给A;

A就对服务器发送大量非法的TCP连接,由于每一个都没法完成握手的机制,所以就会消耗服务器的内存,导致服务器死机;

如果这些半连接的握手请求是恶意程序发出,并且持续不断,那么就会导致服务端较长时间内丧失服务功能;

最后就形成DoS攻击的一种方式称为SYN泛洪攻击。

SYN泛洪攻击防御:

最常用的一个手段就是优化主机系统设置,降低SYN timeout时间,使得主机尽快释放半连接的占用或者采用SYN cookie设置,

如果短时间内收到了某个IP的重复SYN请求,就认为受到了攻击。可以合理的采用防火墙设置等外部网络进行拦截。

参考链接:一文讲尽ddos syn泛洪攻击方式-CSDN博客

02. 四次挥手过程状态变化:

过程一:第一次挥手

客户端主机向服务端主机发送断开TCP连接请求的报文。

挥手后的状态变化:

握手过程客户端状态执行动作
握手后established->fin_wait1发送TCP请求断开连接报文:包含FIN=1控制字段
服务端状态
established->closed_wait接收TCP请求断开连接报文

过程二:第二次挥手

服务端主机会回复客户端主机发送的TCP断开请求报文。

挥手后的状态变化:

握手过程客户端状态执行动作
握手后fin_wait1->fin_wait2接收TCP确认断开连接报文:包含ACK=1控制字段
服务端状态
closed_wait发送TCP确认断开连接报文

过程三:第三次挥手

服务端主机在回复完客户端主机的TCP断开请求确认控制字段后,不会马上就进行TCP连接的断开;

服务端主机会先确保断开前,所有传输到客户端主机的数据是否已经传输完毕,再向客户端主机发送断开连接的TCP报文;

挥手后的状态变化:

握手过程客户端状态执行动作
握手后fin_wait2接收TCP响应断开连接报文:包含FIN=1 ACK=1控制字段
服务端状态
closed_wait->last_ack发送TCP响应断开连接报文

过程四:第四次握手

客户端主机收到服务端主机的TCP断开请求后,会回复服务端主机的断开请求,发送最后一次的TCP确认报文

挥手后的状态变化:

握手过程客户端状态执行动作
握手后fin_wait2->time_wait发送TCP确认断开连接报文:包含ACK=1控制字段
time_wait->closed经过2MSL(Maximum Segment Lifetime)周期后,自动变为关闭状态
服务端状态
last_ack->closed接收TCP响应断开连接报文,自动释放掉已经建立的连接

至此四次握手过程结束,作为连接断开的客户端和响应断开连接的服务端,总共出现5种状态的变迁,分别总结为:

客户端主机:established->fin_wait1->fin_wait2->time_wait->closed

服务端主机:established->closed_wait->last_ack->closed

特殊情况:三次挥手过程状态变化

过程一:第一次挥手

客户端主机向服务端主机发送断开TCP连接请求的报文。

挥手后的状态变化:

握手过程客户端状态执行动作
握手后established->fin_wait1发送TCP请求断开连接报文:包含FIN=1控制字段
服务端状态
established->closed_wait接收TCP请求断开连接报文

过程二:第二次挥手

服务端主机会回复客户端主机发送的TCP断开请求报文。

挥手后的状态变化:

握手过程客户端状态执行动作
握手后fin_wait1->closing接收TCP响应断开连接报文:包含ACK=1 FIN=1控制字段
服务端状态
closed_wait->last_ack发送TCP响应断开连接报文

过程三:第三次握手

客户端主机收到服务端主机的TCP断开请求后,会回复服务端主机的断开请求,发送最后一次的TCP确认报文

握手过程客户端状态执行动作
握手后closing->time_wait发送TCP确认断开连接报文:包含ACK=1控制字段
time_wait->closed经过2MSL(Maximum Segment Lifetime)周期后,自动变为关闭状态
服务端状态
last_ack->closed接收TCP响应断开连接报文,自动释放掉已经建立的连接

利用抓包工具抓取三次挥手过程:

至此三次握手过程结束,作为连接断开的客户端和响应断开连接的服务端,总共出现5种状态的变迁,分别总结为:

客户端主机:established->fin_wait1->closing->time_wait->closed

服务端主机:established->closed_wait->last_ack->closed

整体从连接建立到连接断开的三次握手和四次挥手过程中,总共出现了十一种状态的变迁:

知识补充说明:

高并发访问对服务器网络资源影响:(借助了四次挥手的缺陷产生的)

高并发访问过程就是在某一时间段内,有大量的相同或不同客户端向服务端发起访问,同时建立大量的连接;

若此时由服务端主动发起断开连接请求,想释放更多的连接资源让更多用户访问,就会出现大量time_wait状态连接;

从而在一定程度上,对新的连接建立造成了延迟,使的更多用户访问过程变得缓慢。

因此也需要从内核优化层面,减少time_wait的产生或缩短time_wait时间,从而加快连接资源的释放。

参考链接:TIME_WAIT过多的危害以及解决TIME_AWAIT过多方案_docker timewait太多-CSDN博客

1.6.1 系统通讯内核优化

所谓Linux服务器内核参数优化,主要是指在Linux系统中针对业务服务应用而进行的系统内核参数调整,优化并无一定的标准;

下面以生产环境下Linux常见的网络资源的内核优化为例进行说明。

具体优化参数说明:

01. 优化参数-net.ipv4.tcp_fin_timeout

作用简述:

表示套接字有本端要求关闭,这个参数决定了它保持在FIN_WAIT_2状态的时间,默认值是60s

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout 

2

60

02. 优化参数-net.ipv4.tcp_tw_reuse

作用简述:

表示开启重用,允许将TIME_WAIT sockets重新用于新的TCP连接,默认值为0,表示关闭

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/ipv4/tcp_tw_reuse    

2

0

03. 优化参数-net.ipv4.tcp_tw_recycle

作用简述:

表示开启TCP连接中TIME_WAIT sockets的快速回收机制,默认为0表示关闭

当开启了这个配置后,TIME_WAIT不用再等待2MSL的时间进行释放连接;

而是一个RTO(retransmission timeout,数据包重传的timeout时间)的时间,远小于2MSL时间长度。

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/ipv4/tcp_tw_recycle 

2

0

说明:reusers和recycle这两个参数都是为防止生产环境下web squid等业务服务器产生time_wait网络状态数量过多设置的。

04. 优化参数-net.ipv4.tcp_keepalive_time

作用简述:

表示当keepalived启用时,TCP发送Keepalive消息的频度。默认是2小时,建议改为10分钟

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/ipv4/tcp_keepalive_time 

2

7200

05. 优化参数-net.ipv4.ip_local_port_range

作用简述:

该选项用来设定允许系统打开的端口范围,即用于向外连接的端口范围

服务器A ---> 服务器B

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/ipv4/ip_local_port_range 

2

32768   60999

06. 优化参数-net.ipv4.tcp_max_syn_backlog

作用简述:

表示SYN队列的长度,默认为128,建议加大队列的长度为8192或更多,这样可以容纳更多等待连接的网络连接数;

该参数为服务器端用于记录那些尚未收到客户端确认信息的连接请求最大值。

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/ipv4/tcp_max_syn_backlog 

2

128

07. 优化参数-net.ipv4.tcp_max_tw_buckets

作用简述:

表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数值,TIME_WAIT套接字将立刻被清除并打印警告信息。

默认为180000(早期系统版本),对于apache nginx等服务器来说可以将其调低一点,如果改为5000~30000;

不同业务的服务器也可以给大一点,比如LVS squid可以将其调高一点。

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/ipv4/tcp_max_tw_buckets  

2

4096

08. 优化参数-net.ipv4.tcp_syn_retries

作用简述:

表示在内核放弃建立连接之前发送SYN包的数量,默认值是6次;

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/ipv4/tcp_syn_retries    

2

6

09. 优化参数-net.ipv4.tcp_synack_retries

作用简述:

参数值决定了内核放弃连接之前发送SYN+ACK包的数量,默认值为5。

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/ipv4/tcp_synack_retries 

2

5

10. 优化参数-net.ipv4.tcp_max_orphans

作用简述:

用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上(系统所能处理不属于任何进程的TCP套接字最大数量);

被动建立端发送了SYN+ACK后状态转为SYN_RCVD,这时TCP连接就不属于某个进程了;

如果超过这个数值,孤立连接将立即被复位并打印出警告信息;主要是为了抵御简单的DoS攻击,早期系统默认是 65536;

建议不能过分依靠这个限制缩减这个参数值,更多的情况是增加这个值。

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/ipv4/tcp_max_orphans 

2

4096

11. 优化参数-net.core.somaxconn

作用简述:

用于调节系统同时发起的TCP连接数,在高并发的请求中,默认的值可能会导致链接超时或重传,默认值是128

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/core/somaxconn       

2

128

12. 优化参数-net.core.netdev_max_backlog

作用简述:

表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包最大数;

图示说明:

默认配置:

 

 

1

[root@xiaoq ~]# cat /proc/sys/net/core/netdev_max_backlog 

2

1000

常见内核网络优化参数参考:tcp_syn_retries等参数详解_tcp retries-CSDN博客

临时调整:直接对优化参数的配置文件进行改动(建议不要这样调整)

永久调整:直接修改系统内核配置信息

以上内核优化参数具有优化方法:

 

 

1

# 参数优化配置建议

2

[root@xiaoq ~]# cat /etc/sysctl.conf

3

net.ipv4.tcp_fin_timeout = 2

4

net.ipv4.tcp_tw_reuse = 1

5

net.ipv4.tcp_tw_recycle = 1

6

net.ipv4.tcp_keepalive_time = 600

7

net.ipv4.ip_local_port_range = 4000 65000

8

net.ipv4.tcp_max_syn_backlog = 16384

9

net.ipv4.tcp_max_tw_buckets = 36000

10

net.ipv4.tcp_syn_retries = 1

11

net.ipv4.tcp_synack_retries = 1

12

net.ipv4.tcp_max_orphans = 16384

13

net.core.somaxconn = 16384

14

net.core.netdev_max_backlog = 16384

15

16

# 加载内核配置信息

17

[root@xiaoq ~]# sysctl -p

18

net.ipv4.tcp_fin_timeout = 2

19

net.ipv4.tcp_tw_reuse = 1

20

net.ipv4.tcp_tw_recycle = 1

21

net.ipv4.tcp_keepalive_time = 600

22

net.ipv4.ip_local_port_range = 4000 65000

23

net.ipv4.tcp_max_syn_backlog = 16384

24

net.ipv4.tcp_max_tw_buckets = 36000

25

net.ipv4.tcp_syn_retries = 1

26

net.ipv4.tcp_synack_retries = 1

27

net.ipv4.tcp_max_orphans = 16384

28

net.core.somaxconn = 16384

29

net.core.netdev_max_backlog = 16384

说明:以上配置优化信息只作为参考模板,理解优化参数作用后,需结合企业实际需求进行灵活调整。

1.7 系统网络知识应用

1.7.1 系统网络命令总结

01. 常用命令命令-ping

功能说明:

ping命令主要用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息;

若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

Linux系统下的ping命令与Windows系统下的ping命令稍有不同。

Windows下运行ping命令一般会发出4个请求就结束运行该命令;

而Linux下不会自动终止,此时需要按CTR+C终止或者使用-c参数为ping命令指定发送的请求数目。

语法格式:

 

 

1

ping [参数] [目标主机]

常用参数:

序号参数信息解释说明
01-c指定发送报文的次数
02-i指定收发信息的间隔时间
03-I(大写字母i)使用指定的网络接口发出数据包
04-q不显示指令执行过程
05-s设置测试数据包的大小
06-f表示极限ping,ping过程中不显示任何信息,效率更高

实践操作:

实践操作-01: 检测与指定网站的连通性

 

 

1

[root@xiaoq ~]# ping www.baidu.com

2

PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data.

3

64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=1 ttl=128 time=7.66 ms

4

64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=2 ttl=128 time=7.94 ms

5

64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=3 ttl=128 time=13.1 ms

6

64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=4 ttl=128 time=8.22 ms

7

^C

8

--- www.a.shifen.com ping statistics ---

9

4 packets transmitted, 4 received, 0% packet loss, time 3007ms

10

rtt min/avg/max/mdev = 7.669/9.244/13.134/2.257 ms

实践操作-02: 指定ping的间隔时间并设置ping次数

 

 

1

[root@xiaoq ~]# ping -c 4 -i 3 www.baidu.com

2

PING www.a.shifen.com (220.181.38.149) 56(84) bytes of data.

3

64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=1 ttl=128 time=6.90 ms

4

64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=2 ttl=128 time=6.68 ms

5

64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=3 ttl=128 time=7.37 ms

6

64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=4 ttl=128 time=7.68 ms

7

8

--- www.a.shifen.com ping statistics ---

9

4 packets transmitted, 4 received, 0% packet loss, time 9016ms

10

rtt min/avg/max/mdev = 6.688/7.164/7.685/0.395 ms

实践操作-03: 利用极限ping实现大量数据包测试

 

 

1

[root@xiaoq ~]# ping -c 1000 -f www.baidu.com

2

PING www.a.shifen.com (220.181.38.149) 56(84) bytes of data.

3

  

4

--- www.a.shifen.com ping statistics ---

5

1000 packets transmitted, 1000 received, 0% packet loss, time 7138ms

6

rtt min/avg/max/mdev = 5.648/7.015/18.914/0.889 ms, pipe 2, ipg/ewma 7.145/8.068 ms

实践操作-04:利用ping命令获取网站解析的IP地址

 

 

1

[root@xiaoq ~]# ping -c 1 www.baidu.com|grep from|cut -d " " -f 4

2

220.181.38.149

02. 常用命令命令-telnet

功能说明:

telnet命令用于登录远程主机,对远程主机进行管理;除此之外还可以对远程主机服务的端口进行测试;

telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。

语法格式:

 

 

1

telnet [参数] [目标主机] [端口]

实践操作:

实践操作-01: 直接远程登录主机

 

 

1

[root@xiaoq ~]# telnet 10.0.0.101

2

Connecting to 10.0.0.101:23...

3

Connection established.

4

To escape to local shell, press 'Ctrl+Alt+]'.

5

xiaoQ Linux

6

xiaoq login: 

实践操作-02: 测试远程主机服务端口

 

 

1

[root@xiaoq ~]# telnet 10.0.0.101 22

2

Trying 10.0.0.101...

3

Connected to 10.0.0.101.

4

Escape character is '^]'.

5

SSH-2.0-OpenSSH_7.4

6

7

[root@xiaoq ~]# telnet 10.0.0.101 24

8

Trying 10.0.0.101...

9

telnet: connect to address 10.0.0.101: Connection refused

03. 常用命令命令-wget

功能说明:

wget命令用来从指定的URL下载文件。

在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,会不断的尝试直到整个文件下载完毕;

如果是服务器打断下载过程,会再次联到服务器上从停止的地方继续下载。对那些限定了链接时间的服务器上下载大文件非常有用。

支持HTTP,HTTPS和FTP协议,可以使用HTTP代理;并且支持自动下载,可以在用户退出系统的之后在后台执行。

语法格式:

 

 

1

wget [参数] [地址信息]

常用参数:

序号参数信息解释说明
01-b表示启动下载过程后在后台进行执行
02-O表示指定下载文件后保存的本地路径和名称信息
03-c表示采用断点续传方式进行下载
04--limit-rate表示指定数据下载的速率

实践操作:

实践操作-01:直接下载单个文件信息

 

 

1

[root@xiaoq ~]# wget http://www.baidu.com/index.html

实践操作-02:指定下载数据保存路径和名称

 

 

1

[root@xiaoq ~]# wget -O /tmp/xiao.html http://www.baidu.com/index.html

实践操作-03:采用断点续传方式进行数据下载

 

 

1

[root@xiaoq ~]# wget -c /tmp/xiao.mp4 http://www.baidu.com/xiaoQ.mp4

实践操作-04:采用后台执行下载数据任务

 

 

1

[root@xiaoq ~]# wget -b /tmp/xiao.html http://www.baidu.com/xiaoQ.mp4

实践操作-05:采用指定下载速率下载数据

 

 

1

[root@xiaoq ~]# wget --limit-rate=1k -O /tmp/xiao.html http://www.baidu.com/index.html

04. 常用命令命令-netstat/ss

功能说明:

netstat是一个监控TCP/IP网络的非常有用的工具;

用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

语法格式:

 

 

1

netstat [参数]

常用参数:

序号参数信息解释说明
01-a显示所有连线中的socket信息
02-p显示正在使用socket的程序进程号和进程名称
03-u显示以UDP传输协议建立的网络连接情况
04-t显示以TCP传输协议建立的网络连接情况
05-n显示信息中所有内容以数字方式呈现
06-l显示监听状态的socket信息
07-r显示系统路由表信息

实践操作:

实践操作-01:显示详细的网络状况

 

 

1

[root@xiaoq ~]# netstat -a

实践操作-02:显示开启运行网络服务程序

 

 

1

[root@xiaoq ~]# netstat -lntup 

实际操作-03:显示主机建立的网络连接

 

 

1

[root@xiaoq ~]# netstat -tun

05. 常用命令命令-nmcli

功能说明:

nmcli命令是可以完成网卡上的所有配置,并可以写入配置文件中,可以管理系统中的NetworkManager网络管理组件。

语法格式:

 

 

1

nmcli [参数] [网卡信息]

实践操作:

实践操作-01:利用命令查看网络信息

 

 

1

# 查看NetworkManager总体运行情况:

2

[root@xiaoq ~]# nmcli general status

3

STATE          CONNECTIVITY     WIFI-HW       WIFI        WWAN-HW       WWAN    

4

connected             full              enabled    enabled       enabled        enabled 

5

6

# 显示所有网卡情况

7

[root@xiaoq ~]# nmcli connection show 

8

NAME  UUID                                                               TYPE      DEVICE 

9

eth0  8842933a-81a3-44b0-9dcf-5a5346cb87d6  ethernet  eth0   

10

-- 由于测试主机只有一块网卡,就显示一块网卡信息,若有多块网卡服务器会显示所有网卡信息

11

12

# 显示激活网卡情况

13

[root@xiaoq ~]# nmcli connection show --active

14

NAME  UUID                                                               TYPE      DEVICE 

15

eth0  8842933a-81a3-44b0-9dcf-5a5346cb87d6  ethernet  eth0   

16

17

# 显示所有网络设备状态

18

[root@xiaoq ~]# nmcli device show 

实践操作-02:利用命令启动和停止网络接口

 

 

1

# 采用逻辑方式启动或停止网络连接

2

[root@xiaoq ~]# nmcli connection up id eth0

3

[root@xiaoq ~]# nmcli connection down id eth0

4

-- 类似于将网卡的驱动进行了卸载

5

6

# 采用物理方式启动或停止网络连接

7

[root@xiaoq ~]# nmcli dev connect  eth0

8

[root@xiaoq ~]# nmcli dev disconnect eth0

9

-- 类似于直接将网卡进行关闭

实践操作-03:利用命令配置网卡信息

 

 

1

# 添加动态以太网连接

2

[root@xiaoq ~]# nmcli connection add type ethernet con-name my-office ifname eth0

3

-- 为设备eth0创建一个名为my-office的动态连接配置文件

4

-- 该配置文件会保存到/etc/NetworkManager/system-connections/目录中

5

[root@xiaoq ~]# nmcli connection up my-office

6

-- 使用命令激活以太网my-office连接

7

8

# 添加静态以太网连接

9

[root@xiaoq ~]# nmcli connection add type ethernet con-name test-lab ifname eth0 ipv4 10.0.0.100/24 gw4 10.0.0.254

10

-- 使用命令创建使用IPv4地址和网关的静态以太网连接

11

[root@xiaoq ~]# nmcli connection modify test-lab ipv4.dns 223.6.6.6

12

-- 使用命令设定IPv4 DNS服务器地址

13

[root@xiaoq ~]# nmcli connection up test-lab ifname eth0

14

-- 使用命令激活以太网test-lab连接

说明:nmcli了解知道即可,在习惯了nmtui和直接编辑网卡文件后,此方法个人觉得有些麻烦。

06. 常用命令命令-traceroute

功能说明:

traceroute命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。

A主机 B路由设备 C路由设备 D主机

通过命令可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。

当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,

但基本上来说大部分时候所走的路由是相同的。

说明:默认此命令若不存在系统中,可以使用 yum insatll -y traceroute 命令进行安装。

语法格式:

 

 

1

traceroute [参数] [域名或者IP]

实践操作:

实践操作-01:直接探测访问目录路径信息

 

 

1

[root@xiaoq ~]# traceroute www.baidu.com

实际操作-02:探测时只显示IP地址信息,不解析查找名称信息

 

 

1

[root@xiaoq ~]# traceroute -n www.baidu.com

07. 常用命令命令-tcpdump

功能说明:

tcpdump命令是一款sniffer工具,是linux上的抓包工具;嗅探器:可以打印出所有经过网络接口的数据包的头信息。

tcpdump命令需要以root身份运行,是linux下使用最广泛的网络协议分析工具。

说明:默认此命令若不存在系统中,可以使用 yum insatll -y tcpdump 命令进行安装。

语法格式:

 

 

1

tcpdump [参数]

常用参数:

序号参数信息解释说明
01-i表示interface的含义,表示告诉tcpdump应该去监听哪一个网卡上的数据包信息。
02-nn表示当tcpdump遇到协议号或端口号时,不要将这些号码转换成对应的协议名称或端口名称。
03-X表示把协议头和包内容都原原本本的显示出来,会以16进制和ASCII的形式显示
04-c表示利用tcpdump命令只抓取多少个数据包进行分析
05-w表示将抓取的所有数据包存储到指定文件中,便于使用其他软件进行分析。
06-r表示在Linux系统中直接读取保存的文件

实践操作:

实践操作-01:抓取访问DNS服务的数据包

 

 

1

[root@xiaoq ~]#  tcpdump -i eth0 -nn -X -c 5  'port 53'  

实践操作-02:抓取数据包信息进行保存和读取

 

 

1

# 抓取的数据包保存过程

2

[root@xiaoq ~]# tcpdump -i eth0 -nn -X -c 5  'port 53' -w /tmp/package.pkg

3

[root@xiaoq ~]# ll /tmp/package.pkg 

4

-rw-r--r-- 1 tcpdump tcpdump 631 Mar 23 23:19 /tmp/package.pkg

5

6

# 抓取的数据包读取过程

7

[root@xiaoq ~]# tcpdump -r  /tmp/package.pkg

1.7.2 系统网络路由配置

在系统中进行路由配置,可以改变系统的路由表信息,随之改变系统发送数据的传输路径。

在系统常见的路由配置方法主要有3种:

  • 缺省网卡路由配置(静态默认路由配置)
  • 静态网段路由配置
  • 静态主机路由配置

01 缺省网关路由配置:

概述介绍:

默认网关就是数据包不匹配任何设定的路由规则,最后默认流经的地址关口;是保证主机和外网通讯的必要设置。

配置方法:

 

 

1

# 利用route命令进行配置

2

[root@xiaoq ~]# route add default gw 10.0.0.254

3

-- 表示添加路由信息

4

[root@xiaoq ~]# route del default gw 10.0.0.254

5

-- 表示删除路由信息

6

[root@xiaoq ~]# route -n

7

-- 表示查看路由信息

8

9

# 利用ip route命令进行配置

10

[root@xiaoq ~]# ip route add default via 10.0.0.254

11

-- 表示添加路由信息

12

[root@xiaoq ~]# ip route del default via 10.0.0.254

13

-- 表示删除路由信息

14

[root@xiaoq ~]# ip route show

15

-- 表示查看路由信息

说明:此配置主要用于测试,一般在网卡配置文件中设置 DEFROUTE=yes 参数信息,就会自动添加缺省网关路由配置信息

02 静态网段路由配置:

概述介绍:

去往某一网络或网段的路由;一般多网段之间互相通信,希望建立一条优先路由,而不想通过默认网关时就可以配置网络路由。

配置方法:

 

 

1

# 利用route命令进行配置

2

[root@xiaoq ~]# route add -net 172.16.1.0 netmask 255.255.255.0 gw 192.168.1.1

3

-- 表示添加一条去往目标172.16.1.0/24网段的静态路由,经过网关192.168.1.1发出

4

[root@xiaoq ~]# route del -net 172.16.1.0 netmask 255.255.255.0 gw 192.168.1.1

5

-- 表示删除指定静态路由信息

6

7

# 利用ip route命令进行配置

8

[root@xiaoq ~]# ip route add 172.16.1.0/24 via 192.168.1.1

9

-- 表示添加一条去往目标172.16.1.0/24网段的静态路由,经过网关192.168.1.1发出

10

[root@xiaoq ~]# ip route del 172.16.1.0/24 via 192.168.1.1

11

-- 表示删除指定静态路由信息

以上配置信息在重启网络服务时都会失效,如果想进行永久保存,需要编写静态网段路由配置文件:

方式一:编写route-eth0文件

 

 

1

[root@xiaoq ~]# vi /etc/sysconfig/network-scripts/route-eth0

2

172.16.1.0/24 via 192.168.1.1

3

-- 写到配置里,重启网络服务和重启系统都会生效!

方式二:编写static-routes文件

 

 

1

[root@xiaoq ~]# vi /etc/sysconfig/static-routes

2

any net 172.16.1.0/24 gw 192.168.1.1

3

-- 写到配置里,重启网络服务和重启系统都会生效!

方式三:编写rc.local文件

 

 

1

[root@xiaoq ~]# vi /etc/rc.local

2

route add -net 172.16.1.0/24 gw 192.168.1.1

3

-- 写到配置里,重启系统会生效!

03 静态主机路由配置:

概述介绍:

表示指定访问某个具体的主机应如何进行路由发送数据,相较于网段路由的颗粒度更加精细。

配置方法:

 

 

1

# 利用route命令进行配置

2

[root@xiaoq ~]# route add -host 172.16.1.10 gw 192.168.1.1

3

-- 表示添加一条去往目标172.16.1.10主机的静态路由,经过网关192.168.1.1发出

4

[root@xiaoq ~]# route del -host  172.16.1.10 gw 192.168.1.1

5

-- 表示删除指定静态路由信息

6

7

# 利用ip route命令进行配置

8

[root@xiaoq ~]# ip route add 172.16.1.10/32 via 192.168.1.1

9

-- 表示添加一条去往目标172.16.1.10主机的静态路由,经过网关192.168.1.1发出

10

[root@xiaoq ~]# ip route del 172.16.1.10/32 via 192.168.1.1

11

-- 表示删除指定静态路由信息

以上配置信息在重启网络服务时都会失效,如果想进行永久保存,需要编写静态网段路由配置文件:

方式一:编写route-eth0文件

 

 

1

[root@xiaoq ~]# vi /etc/sysconfig/network-scripts/route-eth0

2

172.16.1.10/32 via 192.168.1.1

3

-- 写到配置里,重启网络服务和重启系统都会生效!

方式二:编写static-routes文件

 

 

1

[root@xiaoq ~]# vi /etc/sysconfig/static-routes

2

any host 172.16.1.10 gw 192.168.1.1

3

-- 写到配置里,重启网络服务和重启系统都会生效!

方式三:编写rc.local文件

 

 

1

[root@xiaoq ~]# vi /etc/rc.local

2

route add -host 172.16.1.0 gw 192.168.1.1

3

-- 写到配置里,重启系统会生效!

说明:静态网段路由配置和静态主机路由配置,在企业实战环境中多出现在物理服务器有多块网卡的情况。

1.7.3 系统网卡绑定设置

概念介绍:

网卡(接口)绑定是将多块网卡逻辑地连接到一起从而允许故障转移或者提高网卡吞吐率的方法。

Linux 绑定驱动程序提供了一种将多个网卡聚合到一个逻辑的绑定接口的方法。

在Centos7以后就开始选择team,即链路聚合的方式进行双网卡的绑定,但也向后的兼容之前版本的bond模式;

实践应用:

步骤一:系统添加多个网卡(至少两个)

在虚拟软件中设置添加多个网卡设备:

系统启动后,此时新添加的网卡上是没有相关地址配置信息的:

 

 

1

# 获取新添加网卡配置信息

2

[root@xiaoq ~]# ip a

3

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

4

    link/ether 00:0c:29:19:74:6f brd ff:ff:ff:ff:ff:ff

5

    inet6 fe80::5c4d:e21c:253b:5963/64 scope link noprefixroute 

6

       valid_lft forever preferred_lft forever

7

4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

8

    link/ether 00:0c:29:19:74:79 brd ff:ff:ff:ff:ff:ff

9

    inet6 fe80::5e23:94b3:1d1e:11a9/64 scope link noprefixroute 

10

       valid_lft forever preferred_lft forever

11

-- 没有任何地址信息配置

12

说明:切记不要在有配置信息的网卡上进行绑定配置,否则无法进行聚合配置,并会影响原有网卡的网络通讯。

步骤二:配置之前信息确认

在进行网卡绑定之前,需要对网卡的信息情况进行查看确认,以免后续绑定配置出现异常:

 

 

1

# 查看网卡硬件设备状态

2

[root@xiaoq ~]# nmcli device status

3

DEVICE  TYPE      STATE                                                       CONNECTION         

4

eth0    ethernet  connected                                                eth0               

5

eth1    ethernet  connecting (getting IP configuration)  Wired connection 1 

6

eth2    ethernet  connecting (getting IP configuration)  Wired connection 2 

7

lo        loopback  unmanaged  

8

或者

9

[root@xiaoq ~]# nmcli device status

10

DEVICE  TYPE      STATE         CONNECTION 

11

eth0    ethernet  connected     eth0       

12

eth1    ethernet  disconnected  --         

13

eth2    ethernet  disconnected  --         

14

lo        loopback  unmanaged    --   

15

-- 由于网卡没有地址信息,所以默认无法激活

16

17

# 删除默认网卡的名称信息

18

[root@xiaoq ~]# nmcli connection delete Wired\ connection\ 1

19

Connection 'Wired connection 1' (92bc98c3-5405-3735-a350-d893426ce6f0) successfully deleted.

20

[root@xiaoq ~]# nmcli connection delete Wired\ connection\ 2

21

Connection 'Wired connection 2' (470900ef-9f58-3545-b15c-f517604ea6ca) successfully deleted.

步骤三:创建网卡聚合链路

 

 

1

# 采用主备模式配置

2

[root@xiaoq ~]# nmcli connection add type team con-name team1 ifname team1 config '{"runner":{"name":"activebackup"}}'

3

Connection 'team1' (15331b5b-253a-459a-b44c-81a6845166c0) successfully added.

4

--- 创建一个逻辑的聚合链路,网络类型为tarm表示聚合链路,并设置聚合链路的逻辑名称为team1

5

[root@xiaoq ~]# nmcli device status

6

DEVICE  TYPE      STATE                                                      CONNECTION 

7

eth0      ethernet  connected                                                eth0       

8

team1   team        connecting (getting IP configuration)  team1      

9

eth1      ethernet  disconnected                                            --         

10

eth2      ethernet  disconnected                                            --         

11

lo          loopback  unmanaged                                              --    

12

-- 显示team1信息,表示聚合链路逻辑网卡创建完成

13

[root@xiaoq ~]# nmcli connection show

14

NAME   UUID                                                               TYPE         DEVICE 

15

team1  00c5373f-5a98-47ac-9a28-f9ddbf81442e    team        team1  

16

eth0     8842933a-81a3-44b0-9dcf-5a5346cb87d6  ethernet  eth0  

team链路聚合应用模式说明:

序号聚合模式参数解释说明
01广播模式:broadcast表示数据通过所有网口传输
02随机模式:random表示数据随机通过所有网口传输
03轮训模式:roundrobin表示数据依次通过所有网口传输
04主备模式:activebakup表示使用一个网口或链路,而其他网口或链路作为备份保留
05负载模式:loadbalance表示监控流量并使用哈希函数以尝试在选择端口传输数据的时候达到完美均衡。
主动模式:是智能判断进行负载均衡;
被动模式:是随机判断进行负载均衡。
06协议模式:lacp表示采用lacp链路聚合协议实现链路聚合,此种模式需要交换设备支持lacp协议。

说明:以上模式可以可以通过命令 man teamd.conf 获取更详细信息

以上几种配置模式的json书写配置格式:

 

 

1

# 广播模式:broadcast

2

config {"runner": {"name": "broadcast"},}

3

4

# 随机模式:random

5

config {"runner": {"name": "random"},}

6

7

# 轮训模式:roundrobin

8

config {"runner": {"name": "roundrobin"},}

9

10

# 主备模式:activebakup

11

config {"runner": {"name": "random"},}

12

13

# 负载模式:loadbalance

14

config {"runner": {"name": "loadbalance","tx_hash": ["eth", "ipv4", "ipv6"],"tx_balancer": {"name": "basic"}}}

15

-- 表示负载均衡主动模式

16

config {"runner": {"name": "loadbalance","tx_hash": ["eth", "ipv4", "ipv6"]}}                                                       }

17

-- 表示负载均衡被动模式

18

19

# 协议模式:lacp

20

config {"runner": {"name": "lacp","active": true,"fast_rate": true,"tx_hash": ["eth", "ipv4", "ipv6"]}}

官方链接地址:

8.13. Configure teamd Runners Red Hat Enterprise Linux 7 | Red Hat Customer Portal

步骤四:聚合链路添加网卡

将两个网卡添加到这个team1中并查看网卡状态

 

 

1

# 网卡添加到链路聚合中

2

[root@xiaoq ~]# nmcli connection add type team-slave con-name eth1 ifname eth1 master team1

3

Connection 'eth1' (f9370786-b573-4269-b8db-88bae695e29c) successfully added.

4

[root@xiaoq ~]# nmcli connection add type team-slave con-name eth2 ifname eth2 master team1

5

Connection 'eth2' (abe6e95a-1415-4132-afeb-304716f7f157) successfully added.

6

# 查看网卡状态信息

7

[root@xiaoq ~]# nmcli device status

8

DEVICE  TYPE      STATE            CONNECTION 

9

eth0    ethernet  connected        eth0       

10

eth1    ethernet  disconnected    --         

11

eth2    ethernet  disconnected    --         

12

lo        loopback  unmanaged       --         

13

[root@xiaoq ~]# nmcli connection show 

14

NAME                                 UUID                                  TYPE      DEVICE 

15

eth0     8842933a-81a3-44b0-9dcf-5a5346cb87d6  ethernet  eth0   

16

eth1     f9370786-b573-4269-b8db-88bae695e29c  ethernet   --     

17

eth2     abe6e95a-1415-4132-afeb-304716f7f157    ethernet   --     

18

team1  00c5373f-5a98-47ac-9a28-f9ddbf81442e     team         -- 

步骤五:配置聚合网卡地址

 

 

1

[root@xiaoq ~]# cat /etc/sysconfig/network-scripts/ifcfg-team1 

2

TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"

3

PROXY_METHOD=none

4

BROWSER_ONLY=no

5

---

6

BOOTPROTO=static

7

IPADDR1=172.16.1.100

8

PREFIX1=24

9

--- 链路聚合网卡关键配置信息

10

DEFROUTE=yes

11

IPV4_FAILURE_FATAL=no

12

IPV6INIT=yes

13

IPV6_AUTOCONF=yes

14

IPV6_DEFROUTE=yes

15

IPV6_FAILURE_FATAL=no

16

IPV6_ADDR_GEN_MODE=stable-privacy

17

NAME=team1

18

UUID=00c5373f-5a98-47ac-9a28-f9ddbf81442e

19

DEVICE=team1

20

ONBOOT=yes

21

DEVICETYPE=Team

步骤六:重启网络服务程序

 

 

1

[root@xiaoq ~]# systemctl restart network

2

3

# 查看网卡状态信息

4

[root@xiaoq ~]# systemctl status network

5

* network.service - LSB: Bring up/down networking

6

   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)

7

   Active: active (exited) since Thu 2022-03-24 18:56:32 CST; 8s ago

8

     Docs: man:systemd-sysv-generator(8)

9

  Process: 4046 ExecStop=/etc/rc.d/init.d/network stop (code=exited, status=0/SUCCESS)

10

  Process: 4258 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)

11

-- 省略部分信息 --

12

13

# 查看网卡地址信息

14

[root@xiaoq ~]# ip add

15

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team1 state UP group default qlen 1000

16

    link/ether 00:0c:29:19:74:6f brd ff:ff:ff:ff:ff:ff

17

4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team1 state UP group default qlen 1000

18

    link/ether 00:0c:29:19:74:6f brd ff:ff:ff:ff:ff:ff

19

20: team1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

20

    link/ether 00:0c:29:19:74:6f brd ff:ff:ff:ff:ff:ff

21

    inet 172.16.1.100/24 brd 172.16.1.255 scope global noprefixroute team1

22

       valid_lft forever preferred_lft forever

23

    inet6 fe80::175c:4f07:873d:3e92/64 scope link noprefixroute 

24

       valid_lft forever preferred_lft forever

已经发现链路聚合网卡被激活,获取到配置的地址信息,继续查看链路聚合网卡team1的状态信息:

 

 

1

[root@xiaoq ~]# teamdctl team1 state

2

setup:

3

  runner: activebackup

4

ports:

5

  eth1

6

    link watches:

7

      link summary: up

8

      instance[link_watch_0]:

9

        name: ethtool

10

        link: up

11

        down count: 0

12

  eth2

13

    link watches:

14

      link summary: up

15

      instance[link_watch_0]:

16

        name: ethtool

17

        link: up

18

        down count: 0

19

runner:

20

  active port: eth1

21

-- 查看链路聚合网卡状态,可以看到eth1是当前主接口

步骤七:模拟故障链路切换

 

 

1

[root@xiaoq ~]# ifdown eth1

2

Device 'eth1' successfully disconnected.

3

[root@xiaoq ~]# teamdctl team1 state

4

setup:

5

  runner: activebackup

6

ports:

7

  eth2

8

    link watches:

9

      link summary: up

10

      instance[link_watch_0]:

11

        name: ethtool

12

        link: up

13

        down count: 0

14

runner:

15

  active port: eth2

16

-- 当主机接口eth1出现故障时,发现通过故障转移机制,已经切换为eth2为主接口

步骤八:模拟故障恢复过程

 

 

1

[root@xiaoq ~]# ifup eth1

2

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/45)

3

[root@xiaoq ~]# teamdctl team1 state

4

setup:

5

  runner: activebackup

6

ports:

7

  eth1

8

    link watches:

9

      link summary: up

10

      instance[link_watch_0]:

11

        name: ethtool

12

        link: up

13

        down count: 0

14

  eth2

15

    link watches:

16

      link summary: up

17

      instance[link_watch_0]:

18

        name: ethtool

19

        link: up

20

        down count: 0

21

runner:

22

  active port: eth2

23

-- 当故障接口恢复后,也不会抢占主接口,从而避免网络抖动

说明:整体链路聚合配置了解配置过程即可,主要在有物理服务器主机上会进行配置应用,一般企业云主机上不用过多关注。

1.8 网路知识企业应用

1.8.1 企业上网原理解析

实际物理环境上网原理:

  • 终端设备需要获取或配置通信过程的地址信息(公网地址或私网地址);
  • 终端设备需要和局域网内主机进行数据通讯时,会利用ARP协议和交换机设备,实现数据的转发过程;
  • 终端设备需要和局域网外主机进行数据通讯时,会利用路由协议和路由器设备,实现数据的转发过程;
  • 终端设备配置的地址为私网地址时,会使用NAT技术实现和公网地址主机进行通讯;
  • 终端设备在进行上网时,需要经过运营商的拨号处理,只有拨号成功才能正常联网。

教学虚拟环境上网原理:

  • 虚拟网络环境通讯:

    内部网络通讯机制:需要将多个虚拟主机的虚拟网卡选择为相同的,并且IP地址网段必须设置为相同的。

    外部网络通讯机制:需要将多个虚拟主机的虚拟网卡设定合理并统一的网关地址信息,根据默认路由进行通讯。

  • 物理网络环境通讯:

    虚拟主机内部通讯:需要将物理主机上添加好正确的虚拟网卡,并设置好合理地址信息,实现与虚拟主机通讯;

    虚拟主机外部通讯:需要将物理主机上设置好正确的物理网卡,并确保虚拟软件的通讯模式是否是NAT或桥接模式。

1.8.2 用户访问网站解析

  1. 客户端主机在浏览器中输入需要访问的网站域名地址信息;

  2. 客户端主机会先查询本地DNS解析记录或缓存记录,获取域名对应IP地址信息;

  3. 客户端主机向本地DNS服务器进行询问域名对应的IP地址信息(递归查询过程);

  4. 本地DNS服务器会帮助客户端向根域名服务器 顶级域名服务器 二级域名服务器进行查询;

    获取域名对应IP地址信息(迭代查询过程),并将获取的A记录信息进行保存,再发送给客户端;

  5. 客户端主机获取到域名对应IP地址信息后,会根据IP地址进行封装数据包,利用路由器根据路由协议进行转发数据;

  6. 最终数据会被发送到最终的网站服务器上,网站服务器解封数据包信息,获取最终的应用层数据,并作出响应;

  7. 客户端主机获取到网站服务器上的响应数据信息后,最后会完成连接建立过程,实现更多数据信息的传递。

1.8.3 企业常见网络异常

访问网站服务异常排查思路:

  • 客户端利用命令进行网络连通测试
  • 客户端检测网关链路通讯是否正常
  • 客户端检查域名解析服务是否正常
  • 客户端检查局域网通讯设备的状态
  • 客户端咨询运营商是否有网络限制

访问网站页面缓慢排查思路:

  • 54
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
计算机网络基础知识点包括网络的作用范围(广域网、城域网、局域网)、网络使用者(公用网络、专用网络)、计算机网络的层次结构、IP网际协议的作用、虚拟互联网络的产生以及IP地址的分类。 在计算机网络中,广域网(WAN)覆盖的范围最广,可以连接不同地区或国家的计算机网络;城域网(MAN)覆盖的范围相对较小,通常连接同一城市的计算机网络;而局域网(LAN)覆盖的范围最小,通常只连接同一建筑物或场所的计算机网络。 根据网络使用者的不同,可以分为公用网络和专用网络。公用网络是指向公众提供服务的网络,如互联网;而专用网络是指为特定组织或机构提供服务的网络,如公司内部的局域网。 计算机网络的层次结构是指将网络协议分为若干层次,每一层都有自己的功能和任务。常见的网络层次结构有OSI参考模型和TCP/IP协议族。这些层次结构可以帮助设计和管理复杂的计算机网络,简化网络通信的过程。 IP网际协议是Internet网络层最核心的协议,它负责在网络中传输数据包,并且提供了唯一标识网络中主机或路由器的IP地址。IP协议的使用屏蔽了物理网络之间的差异,通过虚拟互联网络的形式,使得主机在连接网络时无需关注网络细节。 IP地址是用于标识网络中的主机或路由器的唯一地址。根据IP地址的分类,可以将IP地址分为A类、B类、C类,分别用于标识大型网络、中型网络和小型网络。同时,D类地址用于组广播地址,而E类地址为保留地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值