马哥Linux

13-网络协议和管理

2020-03-06  本文已影响0人  Liang_JC

本章内容

◆ 网络概念
◆ OSI模型
◆ 网络设备
◆ TCP/IP
◆ IP地址
◆ 配置网络
◆ 实现网络组
◆ 测试网络
◆ 网络工具

什么是网络

image.png

资源共享的功能和优点

● 数据和应用程序
● 资源
● 网络存储
● 备份设备
image.png

常见的网络物理组件

image.png

网络应用程序

● Web 浏览器(Chrome、 IE、 Firefox等)
● 即时消息(QQ、微信、钉钉等)
● 电子邮件(Outlook、 foxmail 等)
● 协作(视频会议、 VNC、 Netmeeting、 WebEx 等)
● web网络服务(apache,nginx,IIS)
● 文件网络服务(ftp ,nfs,samba)
● 数据库服务( MySQL,MariaDB,MongoDB)
● 中间件服务(Tomcat,JBoss)
● 安全服务(Netfilter)

用户应用程序对网络的影响

● 批处理应用程序
● FTP、 TFTP、库存更新
● 无需直接人工交互
● 带宽很重要,但并非关键性因素
● 交互式应用程序
● 库存查询、数据库更新
● 人机交互
● 因为用户需等待响应,所以响应时间很重要,但并非关键性因素,除非要等待很长时间
● 实时应用程序
● VoIP、视频
● 人与人的交互
● 端到端的延时至关重要

网络的特征

● 速度
● 成本
● 安全性
● 可用性
● 可扩展性
● 可靠性
● 拓扑

ethtool eth0        #接口信息查看
mii-tool eth0       #物理连接状态 

物理拓扑分类

逻辑拓扑

总线拓扑

星型拓扑

扩展星型拓扑

环拓扑

双环拓扑

全网状拓扑

部分网状拓扑

OSI(Open System Interconnection)

OSI 模型的七层结构

image.png
image.png
image.png
image.png
image.png
image.png
image.png

OSI 七层模型

image.png

数据封装

image.png

数据解封

image.png

对等通信

PDU

● PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位
● 物理层的 PDU是数据位 bit
● 数据链路层的 PDU是数据帧 frame
● 网络层的PDU是数据包 packet
● 传输层的 PDU是数据段 segment
● 其他更高层次的PDU是消息 message

三种通讯模式

image.png
image.png
image.png

局域网 Local Area Network

image.png

LAN 组成

● Computers
● PCs
● Servers
● Interconnections
● NICs
● Media
● Network devices
● Hubs
● Switches
● Routers
● Protocols
● Ethernet
● IP
● ARP
● DHCP
image.png

网络线缆和接口

image.png

非屏蔽式双绞线UTP

image.png

UTP

image.png
image.png

RJ-45 Connector和Jack

image.png

1000BASE-T GBIC

Fiber-Optic GBICs

Short wavelength (1000BASE-SX)
Long wavelength/long haul (1000BASE-LX/LH)
Extended distance (1000BASE-ZX)
image.png

网络适配器

image.png

LAN 标准

image.png

Ethernet Frame结构

image.png

数据链路层

image.png

MAC地址

image.png
image.png

Hub集线器

Hub:多端口中继器
Hub并不记忆该信息包是由哪个MAC地址发出,哪个MAC地址在Hub的哪个端口
Hub的特点:
    共享带宽
    半双工
image.png

以太网桥

交换式以太网的优势
    扩展了网络带宽
    分割了网络冲突域,使网络冲突被限制在最小的范围内
    交换机作为更加智能的交换设备,能够提供更多用户所要求的功能:优先级、虚拟网、远程检测……

以太网桥的工作原理

● 以太网桥监听数据帧中源MAC地址,学习MAC,建立MAC表
● 对于未知MAC地址,网桥将转发到除接收该帧的端口之外的所有端口
● 当网桥接到一个数据帧时,如果该帧的目的位于接收端口所在网段上,它就过滤掉该数据帧;如果目的MAC地址在位于另外一个端口,网桥就将该帧转发到该端口
● 当网桥接到广播帧时候,它立即转发到除接收端口之外的所有其他端口
image.png
image.png
image.png
image.png
image.png

集线器Hub和交换机Switch

● 集线器属于OSI的第一层物理层设备,而网桥属于OSI的第二层数据链路层设备
● 从工作方式来看,集线器是一种广播模式,所有端口在一个冲突域里面。网桥的可以通过端口隔离冲突
● Hub是所有共享总线和共享带宽。网桥每个端口占一个带宽

路由器Router

为了实现路由,路由器需要做下列事情:
    分隔广播域
    选择路由表中到达目标最好的路径
    维护和检查路由信息
    连接广域网

路由

image.png

VLAN

● 分隔广播域
● 安全
● 灵活管理
VLAN = 广播域= 逻辑网络 (Subnet)

IEEE 802.1Q 帧结构

image.png
image.png

VLAN 标签各字段含义

    ● TPID:Tag Protocol Identifier(标签协议标识符),2Byte,表示帧类型,取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃,各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时, 为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致
   ●  PRI:Priority,3bit,表示数据帧的802.1p(是IEEE 802.1Q的扩展协议)优先级。取值范围为0~7,值越大优先级越高。当网络阻塞时,交换机优先发送优先级高的数据帧
   ●  CFI:Canonical Format Indicator(标准格式指示位),1bit,表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。 CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0
    ● VID:VLAN ID,12bit,表示该数据帧所属VLAN的编号。 VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094

分层的网络架构

image.png

TCP/IP 协议栈

● Transmission Control Protocol/Internet Protocol传输控制协议/因特网互联协议
● TCP/IP是一个Protocol Stack,包括TCP、 IP、 UDP、ICMP、 RIP、 TELNET、 FTP、 SMTP、 ARP等许多协议
● 最早发源于美国国防部(缩写为DoD)的因特网的前身ARPA网项目,1983年1月1日,TCP/IP取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互联网工程任务组负责维护
● 共定义了四层
● 和OSI参考模型的分层有对应关系

TCP/IP 协议栈和 OSI 模型

image.png

TCP/IP 应用层

image.png

传输层

image.png

可靠性 vs.高效性

image.png

TCP特性

● 工作在传输层
● 面向连接协议
● 全双工协议
● 半关闭
● 错误检查
● 将数据打包成段,排序
● 确认机制
● 数据恢复,重传
● 流量控制,滑动窗口
● 拥塞控制,慢启动和拥塞避免算法
● 更多关于tcp的内核参数,可参看man 7 tcp

cat /etc/services        #查看端口对应服务
lsof -i :6010    #6010端口谁在用

TCP包头

image.png
● 源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个
● 序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始
● 确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送方:我希望你(指发送方)下次发送的数据的第一个字节数据的编号为此确认号
● 数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节
● URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgentpointer)只有当URG=1时才有效
● ACK:表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
● PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
● RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段
● SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。 SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
● FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段    
● 窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据,由Window size value * Window size scaling factor(此值在三次握手阶段TCP选项Window scale协商得到)得出此值
● 校验和:提供额外的可靠性
● 紧急指针:标记紧急数据在数据字段中的位置
● 选项部分:其最大长度可根据TCP首部长度进行推算。 TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节
常见选项:
    最大报文段长度:Maxium Segment Size,MSS,通常1460字节
    窗口扩大:Window Scale
    时间戳: Timestamps

TCP包头选项

● 1 最大报文段长度MSS(Maximum Segment Size)
      指明自己期望对方发送TCP报文段时那个数据字段的长度。比如:1460字节。数据字段的长度加上TCP首部的长度才等于整个TCP报文段的长度。 MSS不宜设的太大也不宜设的太小。若选择太小,极端情况下,TCP报文段只含有1字节数据,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。这样,网络的利用率就不会超过1/41。若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段。当传输出错时还要进行重传,这些也都会使开销增大。因此MSS应尽可能大,只要在IP层传输时不需要再分片就行。在连接建立过程中,双方都把自己能够支持的MSS写入这一字段。 MSS只出现在SYN报文中。即:MSS出现在SYN=1的报文段中MTU和MSS值的关系:MTU=MSS+IP Header+TCP Header通信双方最终的MSS值=较小MTU-IP Header-TCP Header
● 2 窗口扩大
    为了扩大窗口,由于TCP首部的窗口大小字段长度是16位,所以其表示的最大数是65535。但是随着时延和带宽比较大的通信产生(如卫星通信),需要更大的窗口来满足性能和吞吐率,所以产生了这个窗口扩大选项
● 3 时间戳
    可以用来计算RTT(往返时间),发送方发送TCP报文时,把当前的时间值放入时间戳字段,接收方收到后发送确认报文时,把这个时间戳字段的值复制到确认报文中当发送方收到确认报文后即可计算出RTT。也可以用来防止回绕序号PAWS,也可以说可以用来区分相同序列号的不同报文。因为序列号用32为表示,每2^32个序列号就会产生回绕,那么使用时间戳字段就很容易区分相同序列号的不同报文

映射第四层到应用程序

image.png

TCP协议PORT

● 传输层通过port号,确定应用层协议
● Port number:
● tcp:传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后拆除链路
    0-65535
● udp:User Datagram Protocol,无连接的协议
    0-65535
● IANA:互联网数字分配机构(负责域名,数字资源,协议分配)
    0-1023:系统端口或特权端口(仅管理员可用) ,众所周知,永久的分配给固定的
    系统应用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
    1024-49151:用户端口或注册端口,但要求并不严格,分配给程序注册为某应
    用使用,1433/tcp(SqlServer), 1521/tcp(oracle),3306/tcp(mysql),11211/tcp/udp(memcached)
    49152-65535:动态端口或私有端口,客户端程序随机使用的端口
    其范围的定义:/proc/sys/net/ipv4/ip_local_port_range

TCP端口号

image.png

TCP序列和确认号

image.png

TCP确认

固定窗口

image.png

TCP滑动窗口

image.png

建立连接

image.png

TCP三次握手

image.png

TCP四次挥手

image.png

有限状态机FSM:Finite State Machine

● CLOSED 没有任何连接状态
● LISTEN 侦听状态,等待来自远方TCP端口的连接请求
● SYN-SENT 在发送连接请求后,等待对方确认
● SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
● ESTABLISHED 代表传输连接建立,双方进入数据传送状态
● FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
● FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
● TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
● CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
● LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
● CLOSING 双方同时尝试关闭传输连接,等待对方确认

有限状态机

● 客户端先发送一个FIN给服务端,自己进入了FIN_WAIT_1状态,这时等待接收服务端的报文,该报文会有三种可能:
    只有服务端的ACK
    只有服务端的FIN
    基于服务端的ACK,又有FIN
● 1、只收到服务器的ACK,客户端会进入FIN_WAIT_2状态,后续当收到服务端
    的FIN时,回应发送一个ACK,会进入到TIME_WAIT状态,这个状态会持续
    2MSL(TCP报文段在网络中的最大生存时间, RFC 1122标准的建议值是2min).
    客户端等待2MSL,是为了当最后一个ACK丢失时,可以再发送一次。因为服务
    端在等待超时后会再发送一个FIN给客户端,进而客户端知道ACK已丢失
● 2、只有服务端的FIN时,回应一个ACK给服务端,进入CLOSING状态,然后接收到服务端的ACK时,进入TIME_WAIT状态
● 3、同时收到服务端的ACK和FIN,直接进入TIME_WAIT状态

客户端的典型状态转移

● 客户端通过connect系统调用主动与服务器建立连接connect系统调用首先给服务器发送一个同步报文段,使连接转移到SYN_SENT状态
● 此后connect系统调用可能因为如下两个原因失败返回:
    1、如果connect连接的目标端口不存在(未被任何进程监听),或者该端口仍
        被处于TIME_WAIT状态的连接所占用(见后文),则服务器将给客户端发送一
        个复位报文段,connect调用失败。
    2、如果目标端口存在,但connect在超时时间内未收到服务器的确认报文段,则connect调用失败。
        connect调用失败将使连接立即返回到初始的CLOSED状态。如果客户端成功收
        到服务器的同步报文段和确认,则connect调用成功返回,连接转移至
        ESTABLISHED状态
● 当客户端执行主动关闭时,它将向服务器发送一个结束报文段,同时连接进入
    FIN_WAIT_1状态。若此时客户端收到服务器专门用于确认目的的确认报文段,
    则连接转移至FIN_WAIT_2状态。当客户端处于FIN_WAIT_2状态时,服务器处
    于CLOSE_WAIT状态,这一对状态是可能发生半关闭的状态。此时如果服务器
    也关闭连接(发送结束报文段),则客户端将给予确认并进入TIME_WAIT状态
● 客户端从FIN_WAIT_1状态可能直接进入TIME_WAIT状态(不经过FIN_WAIT_2
    状态),前提是处于FIN_WAIT_1状态的服务器直接收到带确认信息的结束报文
    段(而不是先收到确认报文段,再收到结束报文段)
● 处于FIN_WAIT_2状态的客户端需要等待服务器发送结束报文段,才能转移至
    TIME_WAIT状态,否则它将一直停留在这个状态。如果不是为了在半关闭状态
    下继续接收数据,连接长时间地停留在FIN_WAIT_2状态并无益处。连接停留在
    FIN_WAIT_2状态的情况可能发生在:客户端执行半关闭后,未等服务器关闭连
    接就强行退出了。此时客户端连接由内核来接管,可称之为孤儿连接(和孤儿
    进程类似)
● Linux为了防止孤儿连接长时间存留在内核中,定义了两个内核参数:
    /proc/sys/net/ipv4/tcp_max_orphans 指定内核能接管的孤儿连接数目
    /proc/sys/net/ipv4/tcp_fin_timeout 指定孤儿连接在内核中生存的时间

有限状态机

image.png

TCP协议中的三次握手和四次挥手

image.png

客户机端的三次握手和四次挥手

image.png

服务器端的三次握手和四次挥手

image.png

sync半连接和accept全连接队列

image.png

TCP超时重传

● 异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务
● TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为
    每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时
    启动。如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置
    定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是
    TCP的重传策略
● 与TCP超时重传相关的两个内核参数:
● /proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3
● /proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)

拥塞控制

● 网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,
    若对网络中某一资源的需求超过了该资源所能提供的可承受的能力,网络的性
    能就会变坏。 此情况称为拥塞
● TCP为提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性。
即所谓的拥塞控制
● TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:
    慢启动(slow start)、拥塞避免(congestion avoidance)、快速重传(fast
    retransmit)和快速恢复(fast recovery)。拥塞控制算法在Linux下有多种实
    现,比如reno算法、 vegas算法和cubic算法等。它们或者部分或者全部实现了
    上述四个部分
● 当前所使用的拥塞控制算法
    /proc/sys/net/ipv4/tcp_congestion_control    

UDP特性

● 工作在传输层
● 提供不可靠的网络访问
● 非面向连接协议
● 有限的错误检查
● 传输性能高
● 无数据恢复特性
● 更多关于udp的内核参数,可参看man 7 udp

tcpdump -i eth0 -nn icmp    #捕抓icmp情况

cat /proc/sys/net/ipv4/ip_default_ttl    #ttl默认值

arp -n        #arp表
ip neigh    #arp表
route -n    #看网关

UDP包头

image.png

Internet层

image.png

Internet Control Message Protocol

image.png

Address Resolution Protocol

image.png

ARP

image.png

ARP 表

[root@magedu ~]#ip neigh
192.168.1.110 dev eth0 lladdr 60:02:b4:e3:8a:c0 STALE
192.168.1.156 dev eth0 lladdr 50:01:d9:8a:1d:3f STALE
192.168.1.114 dev eth0 lladdr 40:8d:5c:e1:97:34 STALE
192.168.1.118 dev eth0 lladdr 94:65:2d:38:44:82 STALE
[root@magedu ~]#arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.1.110 ether 60:02:b4:e3:8a:c0 C eth0
192.168.1.156 ether 50:01:d9:8a:1d:3f C eth0
192.168.1.114 ether 40:8d:5c:e1:97:34 C eth0
192.168.1.118 ether 94:65:2d:38:44:82 C eth0

默认网关

image.png

反向ARP

image.png

Internet 协议特征

● 运行于 OSI 网络层
● 面向无连接的协议
● 独立处理数据包
● 分层编址
● 尽力而为传输
● 无数据恢复功能

IP PDU 报头

image.png
 ● 版本:占4位,指 IP 协议的版本目前的IP协议版本号为4
 ● 首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部长度的最大值是60字节
 ● 区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.后改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下不使用
● 总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535 字节.总长度必须不超过最大传送单元 MTU
● 标识:占16位,它是一个计数器,通常,每发送一个报文,该值会加1, 也用于数据包分片,在同一个包的若干分片中,该值是相同的
● 标志(flag):占3位,目前只有后两位有意义
● DF: Don’t Fragment 中间的一位,只有当 DF=0 时才允许分片
● MF: More Fragment 最后一位,MF=1表示后面还有分片,MF=0 表示最后一个分片
● 片偏移:占12位,指较长的分组在分片后,该分片在原分组中的相对位置.片偏移以8个字节为偏移单位
● 生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
● 协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为TCP 协议, 17表示为 UDP 协议
● 首部检验和:占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验
码而采用简单的计算方法
● 源地址和目的地址:都各占4字节,分别记录源地址和目的地址

IP PDU 报头示例

● 片偏移以8个字节为偏移单位,假定MTU=1500
● 三个包标识 ID都相同,三个包DF都为0,前两个MF=1,最后一个MF=0
image.png

协议域

image.png

主机到主机的包传递

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

IP地址

● 它们可唯一标识 IP 网络中的每台设备
● 每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
● IP地址由两部分组成
    网络ID:
        标识网络
        每个网段分配一个网络ID
    主机 ID:
        标识单个主机
        由组织分配给各设备

IPv4地址格式:点分十进制记法

image.png

IP地址分类

image.png
● A类:
    0 000 0000 - 0 111 1111: 1-127
    网络数:126, 127
    每个网络中的主机数:2^24-2
    默认子网掩码:255.0.0.0
    私网地址:10.0.0.0
● B类:
    10 00 0000 - 10 11 1111:128-191
    网络数:2^14
    每个网络中的主机数:2^16-2
    默认子网掩码:255.255.0.0
    私网地址:172.16.0.0-172.31.0.0
● C类:
    110 0 0000 - 110 1 1111: 192-223
    网络数:2^21
    每个网络中的主机数:2^8-2
    默认子网掩码:255.255.255.0
    私网地址:192.168.0.0-192.168.255.0
● D类:组播
    1110 0000 - 1110 1111: 224-239
● E类:保留未使用
    240-255

公共IP地址

image.png

私有IP地址

image.png

特殊地址

● 0.0.0.0
    0.0.0.0不是一个真正意义上的IP地址。它表示所有不清楚的主机和目的网络
● 255.255.255.255
    限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机
● 127.0.0.1~127.255.255.254
    本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1” 的 数据包
● 224.0.0.0到239.255.255.255
    组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。 224.0.0.5指OSPF
    路由器,地址多用于一些特定的程序以及多媒体程序
● 169.254.x.x
    如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址

保留地址

image.png

子网掩码

image.png

有子网的子网络掩码

image.png

子网掩码的八位

image.png

可变长度子网掩码

image.png

Subnet地址

image.png

优化IP地址分配

image.png

跨网络通信

● 跨网络通信:路由
● 路由分类:
    主机路由
    网络路由
    默认路由
● 优先级:精度越高,优先级越高

动态主机配置协议DHCP

image.png

基本网络配置

● 将Linux主机接入到网络,需要配置网络相关设置
● 一般包括如下内容:
    主机名
    IP/netmask
    路由:默认网关
    DNS服务器
        主DNS服务器
        次DNS服务器
        第三DNS服务器

CentOS 6 网卡名称

● 接口命名方式:CentOS 6
    以太网:eth[0,1,2,...]
    ppp:ppp[0,1,2,...]
● 网络接口识别并命名相关的udev配置文件:
    /etc/udev/rules.d/70-persistent-net.rules
● 查看网卡:
    dmesg |grep –i eth
    ethtool -i eth0
● 卸载网卡驱动:
    modprobe -r e1000
    rmmod e1000
● 装载网卡驱动:
    modprobe e1000

网络配置方式

● 静态指定:
    ifconfig, route, netstat
    ip: object {link, addr, route}, ss, tc
    system-config-network-tui,setup(centos6可配IP,centos7不支持)
    配置文件
● 动态分配:
    DHCP: Dynamic Host Configuration Protocol

配置网络接口

● ifconfig命令
    ifconfig [interface]
        ifconfig -a
        ifconfig IFACE [up|down]
    ifconfig interface [aftype] options | address ...
    ifconfig IFACE IP/netmask [up]
    ifconfig IFACE IP netmask NETMASK
    注意:立即生效
    启用混杂模式:[-]promisc

service NetworkManager restart
ifconfig eth1 0.0.0.0        #清除IP地址
ifconfig eth1 down/up
ifconfig eth1 1.1.1.1/24
ifconfig eth1:123 2.2.2.2/24    #子接口
ifconfig eth1:234 3.3.3.3/24
ifconfig eth1:123 down            #删除子接口
ifconfig eth1:234 down

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts        #打开ping广播
ping -b 192.168.3.255

route命令

● 路由管理命令
● 查看:route -n
● 添加:route add
    route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
● 目标:192.168.1.3 网关:172.16.0.1
    route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
● 目标:192.168.0.0 网关:172.16.0.1
    route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
    route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0

● 默认路由,网关:172.16.0.1
    route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
    route add default gw 172.16.0.1
● 删除:route del
    route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
● 目标:192.168.1.3 网关:172.16.0.1
    route del -host 192.168.1.3
● 目标:192.168.0.0 网关:172.16.0.1
    route del -net 192.168.0.0 netmask 255.255.255.0

route add -net 0.0.0.0/0 gw 192.168.37.254        #默认路由
/etc/sysconfig/network-scripts/                    #网络配置文件
service network restart                            #centos6重启网络服务
service NetworkManager restart                    #centos6重启网络服务(这服务会跟network冲突)
 
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=192.168.37.6
PREFIX=24 | NETMASK=255.255.255.0
GATEWAY=192.168.3.200 | NETWORK=
ONBOOT=yes
 
systemctl restart network                        #centos7重启网络

tcpdump -i eth0 -nn icmp        #抓包查看

echo 1 > /pro/sys/net/ipv4/ip_forward    #临时开启转发功能
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf && sysctl -p    #永久启转发

 #路由追踪
 traceroute ip
 tracepath ip
 mtr ip        #实时

配置动态路由

通过守护进程获取动态路由
    安装quagga包
    支持多种路由协议:RIP、 OSPF和BGP
    命令vtysh配置
    
yum install quagga
cd /etc/quagga
mv ospfd.conf.sample ospf.conf    #这配置文件影响服务启动
service ospfd start
vtysh

netstat命令

显示网络连接:
    netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--
    numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
        -t: tcp协议相关
        -u: udp协议相关
        -w: raw socket相关
        -l: 处于监听状态
        -a: 所有状态
        -n: 以数字显示IP和端口
        -e:扩展格式
        -p: 显示相关进程及PID

netstat命令

常用组合:
    -tan, -uan, -tnl, -unl
显示路由表:
    netstat {--route|-r} [--numeric|-n]
    -r: 显示内核路由表
    -n: 数字格式
显示接口统计数据:
    netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p]
    [--numeric|-n]
    netstat -i            #查看网络接口流量
    netstat –I=IFACE
    ifconfig -s eth0
    
wacth -n1 netstat -i        #实时每秒刷新netstat -i
ping -s 65507 192.168.37.7 -f        #-f泛洪,一种攻击手段
netstat –I=eth1                #指定网口查看

ip命令

配置Linux网络属性:ip 命令
ip - show / manipulate routing, devices, policy routing and tunnels
    ip [ OPTIONS ] OBJECT { COMMAND | help }
    OBJECT := { link | addr | route }
    ip link - network device configuration
        set dev IFACE
    可设置属性:
        up and down:激活或禁用指定接口
        ifup/ifdown
    show [dev IFACE]:指定接口
        [up]:仅显示处于激活状态的接口
        
#centos6 支持tab补齐ip命令的方法
yum install bash-completion


ip addr { add | del } IFADDR dev STRING
    [label LABEL]:添加地址时指明网卡别名
    [scope {global|link|host}]:指明作用域
        global: 全局可用
        link: 仅链接可用
        host: 本机可用
    [broadcast ADDRESS]:指明广播地址
ip address show - look at protocol addresses
    [dev DEVICE]
    [label PATTERN]
    [primary and secondary]
ip addr flush 使用格式同show
    ip addr add 172.16.100.100/16 dev eth0 label eth0:0
    ip addr del 172.16.100.100/16 dev eth0 label eth0:0
    ip addr flush dev eth0 label eth0:0

ip addr                                    #查看ip地址
ip addr add 1.1.1.1/24 dev eth1            #配置ip地址
ip addr add 2.2.2.2/24 dev eth1 label eth1:2
ip addr del 2.2.2.2/24 dev eth1
ip flush dev eth1                         #删除所有ip地址

#Centos7改网卡名称命令
ip link set eth1 down
ip link set eth1 name ens11
ip link set eth1 up


ip route - routing table management
    添加路由:ip route add
    ip route add TARGET via GW dev IFACE src SOURCE_IP
        TARGET:
            主机路由:IP
            网络路由:NETWORK/MASK
        ip route add 192.168.0.0/24 via 172.16.0.1
        ip route add 192.168.1.13 via 172.16.0.1
        添加网关:ip route add default via GW dev IFACE
        ip route add default via 172.16.0.1
    删除路由:ip route del TARGET
    显示路由:ip route show|list
    清空路由表:ip route flush [dev IFACE] [via PREFIX]
                ip route flush dev eth0

ss命令(代替netstat,效率更高)

格式:ss [OPTION]... [FILTER]
netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息
选项:
    -t: tcp协议相关
    -u: udp协议相关
    -w: 裸套接字相关
    -x:unix sock相关
    -l: listen状态的连接
    -a: 所有
    -n: 数字格式
    -p: 相关的程序及PID
    -e: 扩展的信息
    -m:内存用量
    -o:计时器信息
    
FILTER : [ state TCP-STATE ] [ EXPRESSION ]
TCP的常见状态:
    tcp finite state machine:
    LISTEN: 监听
    ESTABLISHED:已建立的连接
    FIN_WAIT_1
    FIN_WAIT_2
    SYN_SENT
    SYN_RECV
    CLOSED
EXPRESSION:
    dport =
    sport =
    示例:’ ( dport = :ssh or sport = :ssh )’
常用组合:
    -tan, -tanl, -tanlp, -uan

ss -s        #统计连接
ss -nta        #所有正在连接的tcp-ip
ss -nt        #正在连接的tcp-ip

常见用法
    ss -l 显示本地打开的所有端口
    ss -pl 显示每个进程具体打开的socket
    ss -t -a 显示所有tcp socket
    ss -u -a 显示所有的UDP Socekt
    ss -o state established '( dport = :ssh or sport = :ssh )' 显示所有已建立的ssh连接
    ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接
    ss -s 列出当前socket详细信息

网络配置文件

● IP、 MASK、 GW、 DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
● 路由相关的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
● /etc/sysconfig/network-scripts/ifcfg-IFACE:
    说明参考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
    DEVICE:此配置文件应用到的设备
    HWADDR:对应的设备的MAC地址
    BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static,
    none, bootp
    NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受
    NM控制;建议CentOS6为“no”
    
● ONBOOT:在系统引导时是否激活此设备
● TYPE:接口类型;常见有的Ethernet, Bridge
● UUID:设备的惟一标识
● IPADDR:指明IP地址
● NETMASK:子网掩码
● GATEWAY: 默认网关
● DNS1:第一个DNS服务器指向
● DNS2:第二个DNS服务器指向
● USERCTL:普通用户是否可控制此设备
● PEERDNS:如果BOOTPROTO的值为“dhcp” ,YES将允许dhcp server分配
         的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf

● 设备配置被保存在文本文件中
    /etc/sysconfig/network-scripts/ifcfg-<name>
    帮助文档列出完整选项列表:/usr/share/doc/initcripts-*/sysconfig.txt
image.png

主机名和本地解析器

● 配置当前主机的主机名:
    hostname [HOSTNAME]
    /etc/sysconfig/network
        HOSTNAME=
● 解析器执行正向和逆向查询
● /etc/hosts
    本地主机名数据库和IP地址的映像
    对小型独立网络有用
    通常,在使用DNS前检查
    getent hosts 查看/etc/hosts 内容
    
vim /etc/sysconfig/network        #修改主机名称
hostname centos66                #临时修改名称
修改完后在/etc/hosts加上
127.0.0.1 centos66

dns名字解析

/etc/resolv.conf
    nameserver DNS_SERVER_IP1
    nameserver DNS_SERVER_IP2
    nameserver DNS_SERVER_IP3
    search magedu.com
/etc/nsswitch.conf
    与/etc/hosts相比优先于DNS
正向解析:FQDN-->IP
    dig -t A FQDN
    host -t A FQDN
反向解析:IP-->FQDN
    dig -x IP
    host -t PTR IP
    
echo "DOMAIN=magedu.com" >> /etc/sysconfig/network-script/ifcfg-eth0
ping www = ping www.magedu.com

路由表网络配置文件

/etc/sysconfig/network-scripts/route-IFACE
注意:需service network restart生效
两种风格:
    (1) TARGET via GW
    如:10.0.0.0/8 via 172.16.0.1
    (2) 每三行定义一条路由
    ADDRESS#=TARGET
    NETMASK#=mask
    GATEWAY#=GW

网卡别名

对虚拟主机有用
将多个IP地址绑定到一个NIC上
    eth0:1 、 eth0:2、 eth0:3
ifconfig命令:
    ifconfig eth0:0 192.168.1.100/24 up
    ifconfig eth0:0 down
ip命令:
    ip addr add 172.16.1.2/16 dev eth0
    ip addr add 172.16.1.1/16 dev eth0 label eth0:0
    ip addr add 172.16.1.2/16 dev eth0 label eth0:0
    ip addr del 172.16.1.1/16 dev eth0 label eth0:0
    ip addr flush dev eth0 label eth0:0

设备别名

为每个设备别名生成独立的接口配置文件
    关闭NetworkManager服务
    ifcfg-ethX:xxx
    必须使用静态联网
        DEVICE=eth0:0
        IPADDR=10.10.10.10
        NETMASK=255.0.0.0
        ONPARENT=yes
注意:service network restart 生效
参考:/usr/share/doc/initscripts-*/sysconfig.txt

vim /etc/sysconfig/networ-script/ifcfg-eth1:1
DEVICE=eth1:1
IPADDR=10.10.10.10
NETMASK=255.0.0.0
ONPARENT=yes

网络接口配置-bonding

Bonding
    将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直
    接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供
    连接,物理网卡的被修改为相同的MAC地址

Bonding工作模式

Mode 0 (balance-rr)
    轮转(Round-robin)策略:从头到尾顺序的在每一个slave
    接口上面发送数据包。本模式提供负载均衡和容错的能力
Mode 1 (active-backup)
    活动-备份(主备)策略:只有一个slave被激活,当且仅当活动的slave接口
    失败时才会激活其他slave.为了避免交换机发生混乱此时绑定的MAC地址只有
    一个外部端口上可见
Mode 3 (broadcast)
    广播策略:在所有的slave接口上传送所有的报文,提供容错能力
active-backup、 balance-tlb 和 balance-alb 模式不需要交换机的任何特    殊配置。
    其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、 2 和 3 中使用
    EtherChannel,但在模式4中需要 LACP和EtherChannel

Bonding配置

创建bonding设备的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0
    DEVICE=bond0
    BOOTPROTO=none
    IPADDR=192.168.37.100
    PREFIX=24
    BONDING_OPTS="miimon=100 mode=0"
/etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
查看bond0状态:/proc/net/bonding/bond0

Bonding配置

miimon 是用来进行链路监测的。如果miimon=100,那么系统每100ms 监测
一次链路连接状态,如果有一条线路不通就转入另一条线路
删除bond0
    ifconfig bond0 down
    rmmod bonding
详细帮助:
    /usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt
    https://www.kernel.org/doc/Documentation/networking/bonding.txt

CentOS 7网络属性配置

CentOS 6之前,网络接口使用连续号码命名:eth0、 eth1等,当增加或删除网卡时,名称可能会发生变化
CentOS 7使用基于硬件,设备拓扑和设置类型命名:
(1) 网卡命名机制
    systemd对网络设备的命名方式
    (a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1
    (b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1
    (c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
    (d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56
    (e) 上述均不可用时,则使用传统命名机制
    
centos7改为eth的命名方式
    vim /boot/grub2/grub.cfg
    在linux16行最后追加net.ifnames=0
或者
    vim /etc/default/grub
    把
    GRUB_CMDLINE_LINUX="rhgb quiet"
    替换
    GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
    grub2-mkconfig -o /boot/grub2/grub.cfg

网卡名称

基于BIOS支持启用biosdevname软件
    内置网卡:em1,em2
    pci卡:pYpX Y:slot ,X:port
(2) 名称组成格式
    en: Ethernet 有线局域网
    wl: wlan 无线局域网
    ww: wwan无线广域网
    名称类型:
    o<index>: 集成设备的设备索引号
    s<slot>: 扩展槽的索引号
    x<MAC>: 基于MAC地址的命名
    p<bus>s<slot>: enp2s1

CentOS 7网络配置工具

CentOS7主机名
配置文件:/etc/hostname ,默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain
显示主机名信息
    hostname
    hostnamectl status
设置主机名
    hostnamectl set-hostname centos7.magedu.com        #centos7改主机名
删除文件/etc/hostname,恢复主机名localhost.localdomain
CentOS 7网络配置工具
图形工具:nm-connection-editor
字符配置tui工具:nmtui
命令行工具:nmcli

nmcli device
nmcli device show
nmcli device show eth0

nmcli connection

nmcli命令

地址配置工具:nmcli
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
    device - show and manage network interfaces
    nmcli device help
    connection - start, stop, and manage network connections
    nmcli connection help
修改IP地址等属性:
    nmcli connection modify IFACE [+|-]setting.property value
    setting.property:
    ipv4.addresses ipv4.gateway
    ipv4.dns1 ipv4.method manual | auto
修改配置文件执行生效:systemctl restart network
    nmcli con reload
nmcli命令生效: nmcli con down eth0 ;nmcli con up eth0

使用nmcli配置网络

● NeworkManager是管理和监控网络设置的守护进程
● 设备即网络接口,连接是对网络接口的配置,一个网络接口可有多个连接配置,但同时只有一个连接配置生效
显示所有包括不活动连接
    nmcli con show
显示所有活动连接
    nmcli con show --active
显示网络连接配置
    nmcli con show "System eth0“
显示设备状态
    nmcli dev status

显示网络接口属性
    nmcli dev show eth0
创建新连接default,IP自动通过dhcp获取
    nmcli con add con-name default type Ethernet ifname eth0
删除连接
    nmcli con del default
创建新连接static ,指定静态IP,不自动连接
    nmcti con add con-name static ifname eth0 autoconnect no type \
    Ethernet ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254
    
启用static连接配置
    nmcli con up static
启用default连接配置
    nmcli con up default
查看帮助
    nmcli con add help

修改连接设置
    nmcli con mod “static” connection.autoconnect no
    nmcli con mod “static” ipv4.dns 172.25.X.254
    nmcli con mod “static” +ipv4.dns 8.8.8.8
    nmcli con mod “static” -ipv4.dns 8.8.8.8
    nmcli con mod “static” ipv4.addresses “172.16.X.10/24 172.16.X.254”
    nmcli con mod “static” +ipv4.addresses 10.10.10.10/16
DNS设置,存放在/etc/resolv.conf文件中
    PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取
    等价于下面命令:
    nmcli con mod “system eth0” ipv4.ignore-auto-dns yes

nmcli命令

nmcli con mod ifcfg-* 文件
ipv4.method manual BOOTPROTO=none
ipv4.addresses “192.168.2.1/24 192.168.2.254” IPADDR0=192.168.2.1
PREFIX0=24
GATEWAY0=192.0.2.254
ipv4.dns 8.8.8.8 DNS0=8.8.8.8
ipv4.dns-search example.com DOMAIN=example.com
ipv4.ignore-auto-dns true PEERDNS=no
connection.autoconnect yes ONBOOT=yes
connection.id eth0 NAME=eth0
connection.interface-name eth0 DEVICE=eth0
802-3-ethernet.mac-address . . . HWADDR= . . .
修改连接配置后,需要重新加载配置
    nmcli con reload
    nmcli con down “system eth0” 可被自动激活
    nmcli con up “system eth0”
    nmcli dev dis eth0 禁用网卡,访止被自动激活
图形工具
    nm-connection-editor
字符工具
    nmtui
    nmtui-connect
    nmtui-edit
    nmtui-hostname

nmcli实现bonding

添加bonding接口
    nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup
    nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.37.100/24
添加从属接口
    nmcli con add type bond-slave ifname ens7 master bond0
    nmcli con add type bond-slave ifname ens3 master bond0
    注:如无为从属接口提供连接名,则该名称是接口名称加类型构成
要启动绑定,则必须首先启动从属接口
    nmcli con up bond-slave-eth0
    nmcli con up bond-slave-eth1
启动绑定
    nmcli con up mybond0

网络组Network Teaming

● 网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
● 网络组不同于旧版中bonding技术,提供更好的性能和扩展性
● 网络组由内核驱动和teamd守护进程实现.
● 多种方式runner
    broadcast        #广播
    roundrobin        #轮转
    activebackup    #主从备用
    loadbalance        #负载均衡
    lacp (implements the 802.3ad Link Aggregation Control Protocol)        #链路聚合

网络组

● 启动网络组接口不会自动启动网络组中的port接口
● 启动网络组接口中的port接口总会自动启动网络组接口
● 禁用网络组接口会自动禁用网络组中的port接口
● 没有port接口的网络组接口可以启动静态IP连接
● 启用DHCP连接时,没有port接口的网络组会等待port接口的加入

创建网络组接口

nmcli con add type team con-name CNAME ifname INAME [config JSON]
    CNAME 连接名,INAME 接口名
    JSON 指定runner方式
    格式:'{"runner": {"name": "METHOD"}}'
    METHOD 可以是broadcast, roundrobin,
        activebackup, loadbalance, lacp

创建port接口

nmcli con add type team-slave con-name CNAME ifname INAME master
    TEAM
    CNAME 连接名
    INAME 网络接口名
    TEAM 网络组接口名
连接名若不指定,默认为team-slave-IFACE
nmcli dev dis INAME
nmcli con up CNAME
    INAME 设备名 CNAME 网络组接口名或port接口

网络组示例

nmcli con add type team con-name myteam0 ifname team0 config \
'{"runner": {"name": "loadbalance"}}' ipv4.addresses 192.168.1.100/24 ipv4.method manual
nmcli con add con-name team0-eth1 type team-slave ifname eth1 master team0
nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0
nmcli con up myteam0
nmcli con up team0-eth1
nmcli con up team0-eth2
teamdctl team0 state
nmcli dev dis eth1

实验:创建网络组

ip link
nmcli con add type team con-name myteam0 ifname team0 config'{"runner": {"name": "activebackup"}}'
nmcli con mod team0 ipv4.addresses '192.168.0.100/24'
nmcli con mod team0 ipv4.method manual
nmcli con add con-name team0-port1 type team-slave ifname eth1 master team0
nmcli con add con-name team0-port2 type team-slave ifname eth2 master team0
teamdctl team0 state

ping -I team0 192.168.0.254
nmcli dev dis eno1
teamdctl team0 state
nmcli con up team0-port1
nmcli dev dis eno2
teamdctl team0 state
nmcli con up team0-port2
teamdctl team0 state

管理网络组配置文件

/etc/sysconfig/network-scripts/ifcfg-team0
    DEVICE=team0
    DEVICETYPE=Team
    TEAM_CONFIG="{\"runner\": {\"name\": \"broadcast\"}}"
    BOOTPROTO=none
    IPADDR0=172.16.0.100
    PREFIX0=24
    NAME=team0
    ONBOOT=yes
    
/etc/sysconfig/network-scripts/ifcfg-team0-eth1
    DEVICE=eth1
    DEVICETYPE=TeamPort
    TEAM_MASTER=team0
    NAME=team0-eth1
    ONBOOT=yes

删除网络组

nmcli connection down team0
teamdctl team0 state
nmcli connection show
nmcli connectioni delete team0-eth0
nmcli connectioni delete team0-eth1
nmcli connection show

网桥

● 桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网
    口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互
    相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来
    的。与网桥相连的主机就能通过交换机的报文转发而互相通信。
● 主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、 eth2桥接在一
    起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2
    接收到。而S2又会将报文转发给主机C、 D

配置实现网桥

创建软件网桥
    nmcli con add con-name mybr0 type bridge con-name br0 ifname br0
    nmcli con modify mybr0 ipv4.addresses 192.168.0.100/24 ipv4.method manual
    nmcli con add con-name br0-port0 type bridge-slave ifname eth0 master br0
查看配置文件
    cat /etc/sysconfig/network-scripts/ifcfg-br0
    cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
工具包 yum install bridge-utils
查看网桥 brctl show
查看CAM表 brctl showmacs br0
添加和删除网桥 brctl addbr | delbr br0
添加和删除网桥中网卡 brctl addif | delif eth0
注意:NetworkManager只支持以太网接口接口连接到网桥,不支持聚合接口

brctl addbr br0
brctl addif br0 eth0 eth1
brctl stp br0 on        #打开stp避免回环

测试网络工具

在命令行下测试网络的连通性
    显示主机名
        hostname
    测试网络连通性
        ping
    显示正确的路由表
        ip route
跟踪路由
    traceroute
    tracepath
    mtr
确定名称服务器使用
    nslookup
    host
    dig

Ubuntu网络配置

网卡名称:
    默认ubuntu的网卡名称和CentOS 7类似,如:ens33,ens38等
修改网卡名称为传统命名方式:
修改配置文件为下面形式
    vi /etc/default/grub
    GRUB_CMDLINE_LINUX="net.ifnames=0"
生效新的grub.cfg文件
    grub-mkconfig -o /boot/grub/grub.cfg
reboot

Ubuntu网络配置

官网文档:
https://help.ubuntu.com/lts/serverguide/network-configuration.html.zh-CN
配置自动获取IP
    cat /etc/netplan/01-netcfg.yaml
    network:
    version: 2
    renderer: networkd
    ethernets:
    ens33:
    dhcp4: yes
修改网卡配置文件后需执行命令生效:netplan apply

配置静态IP:
cat /etc/netplan/01-netcfg.yaml
network:
    version: 2
    renderer: networkd
    ethernets:
        eth0:
        addresses:
            - 192.168.6.10/24
            - 10.10.10.10/24
        gateway4: 192.168.6.1
        nameservers:
            search: [mydomain, otherdomain]
            addresses: [223.5.5.5, 8.8.8.8, 1.1.1.1]

查看ip和gateway
    ip addr
    route -n
查看DNS
    ls -l /etc/resolv.conf
    lrwxrwxrwx 1 root root 39 Dec 12 11:36 /etc/resolv.conf -
    > ../run/systemd/resolve/stub-resolv.conf
    systemd-resolve --status
修改主机名
    hostnamectl set-hostname ubuntu1804                
上一篇下一篇

猜你喜欢

热点阅读