计算机网络是一组计算机或网络设备通过有形的线缆或无形的媒介如无线,连接起来,按照一定的规则,进行通信的集合。
网络功能和优点
作用范围分类
批处理应用程序
交互式应用程序
实时应用程序
1Byts=8byts
100Mbps=102400Kbps/8=12800KBps=12.8M/s
拓扑结构一般是指由点和线排列成的几何图形
计算机网络的拓扑结构是指一个网络的通信链路和计算机结点相互连接构成的几何图形
拓扑分类
物理拓扑描述了物理设备的布线方式
逻辑拓扑描述了信息在网络中流动的方式
总线拓扑 所有设备均可接收信号
星型拓扑 通过中心点传输,单一故障点
扩展星型拓扑 比星型拓扑的复原能力更强
环拓扑 信号绕环传输,单一故障点
双环拓扑 信号沿相反方向传输,比单环的复原能力更强
全网状拓扑 容错能力强,实施成本高
部分网状拓扑 在容错能力与成本之间寻求平衡
旧模型:专有产品,由一个厂商控制应用程序和嵌入的软件
基于标准的模型:多厂商软件,分层方法
层次划分的必要性
计算机网络是曲许多硬件、软件和协议交织起来的复杂系统。由于网络设计十分复杂,如何设计、组织和实现计算机网络是一个挑战,必须要采用科学有效的方法
层次划分的方法
层次划分的优点
OSI
在制定计算机网络标准方面,起着重大作用的两大国际组织是: 国际电信联盟电信标准化部门,与国际标准组织(ISO),虽然它们工作领域不同,
但随着科学技术的发展,通信与信息处理之间的界限开始变得比较模糊,这也成了国际电信联盟电信标准化部门和ISO共同关心的领域。1984年,
ISO发布了著名的OS(Open System Interconnection
)标准,它定义了网络互联的7层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即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)等。包括Router路由器
第2层 数据链接层
数据链路层(Data Link Layer) 负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框(Data Frame)。数据链表头 (DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-F)和通用分组无线服务(GPRS)等。分为两个子层逻辑链路控制 (logical link control,LLC) 子层和介质访问控制 (Media access control,MAC)子层。包括switch交换机,网卡等
第1层 物理层
物理层(Physical Layer)在局部局域网上传送数据(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、hub集线器、中继器、网卡、主机接口卡等
向下封装->向上解封
FCS:校验位
PDU
PDU:ProtocolData Unit,协议数据单元是指对等层次之间传递的数据单位
unicast
broadcast
multicast
[root@CentOS8 ~]#ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 显示up
link/ether 00:0c:29:02:76:5a brd ff:ff:ff:ff:ff:ff
[root@CentOS8 ~]#ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 1000baseT/Full
10000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: off
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
MDI-X: Unknown
Supports Wake-on: uag
Wake-on: d
Link detected: yes 显示yes
[root@CentOS8 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:02:76:5a brd ff:ff:ff:ff:ff:ff
inet 10.0.0.201/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe02:765a/64 scope link
valid_lft forever preferred_lft forever
Local Area Network
资源共享和数据通信
IEEE(国际电子电气工程师协会)于1980年2月成立了局域网标准委员会(简称IEEE802委员会),专门从事局域网标准化工作,并制定了IEEE802标准。802标准所描述的局域网参考模型只对应OSI参考模型的数据链路层与物理层,它将数据链路层划分为逻辑链路层LLC子层和介质访问控制MAC子层
LLC子层负责向其上层提供服务
MAC子层的主要功能包括数据顿的封装/卸装,帧的寻址和识别,帧的接收与发送,链路的管理,帧的差错控等,MAC子层的存在屏蔽了不同物理链路种类的差异性
局域网标准
IEEE 802.1标准
局域网体系结构、网络互连、以及网络管理和性能测试
IEEE 802.2标准
逻辑链路控制LLC子层功能与服务
IEEE 802.3标准 主流
带冲突检测的载波侦听多路访问CSMA/CD总线介质访问控制子层与物理层规范
IEEE 802.4标准
令牌总线(Token Bus
)介质访问控制子层与物理层规范
IEEE 802.5标准
令牌环 (Token Ring
)介质访问控制子层与物理层规范
IEEE 802.6标准
城域网MAN介质访问控制子层与物理层规范
IEEE 802.7标准
宽带网络技术
IEEE802.8标准
光纤传输技术
EEE8U2.9标准
综合语音与数据局域网(IVD LAN)技术
IEEE 802.10标准
可互操作的局域网安全性规范(SILS)
IEEE 802.11标准
**无线**局域网技术
IEEE802.12标准
优先度要求的访问控制方法
IEEE802.13标准
未使用
IEEE 802.14标准
交互式电视网
IEEE80215标准
无线个人局域网(WPAN)的MAC子层和物理层规范。代表技术为蓝牙 (Bluetooth
)
IEEE 802.16标准
宽带无线局域网网络
IEEE802.20标准
移动宽带无线接入系统(MBWA,Mobile Broadband Wireless Access)
IEEE 802.22标准
无线地域网络 (Wireless RegionalArea Networks,WRAN)
无线网络标准
中国国家无线网络标准:WAPI
Twisted-Pair:双绞线
Coaxial:同轴电缆。10Base2:最大传输距离185m≈200m;10Base5=500m
上世纪80年代初,诞生了最早的网线标准(CAT),这个标准一直沿用至今,主要根据带宽和传输速率来区分,从一类网线CAT1–八类网线CAT8
一类网线:主要用于传输语音,不同于数据传输主要用于八十年代初之前的电话线缆,已淘汰
二类网线:传输带宽为1MHZ,用于语音传输,最高数据传输速率4Mbps,常见于使用4Mbps规范令牌传递协议的旧的令牌网(Token Ring),已被淘汰
三类网线:该电缆的传输带宽16MHZ,用于语音传输及最高传输速率为10Mbps的数据传输,主要用于10BASE–T,被ANSI/TIA-568.C.2作为最低使用等级。
四类网线:该类电缆的传输频率为20MHZ,用于语音传输和最高传输速率16Mbps(指的是16Mbit/s令牌环)的数据传输,主要用于基于令牌的局域网和 10BASE-T/100BASE-T。最大网段长为100m,采用RJ形式的连接器。未被广泛采用。
五类线:可溯到1995年,传输带宽为100MHZ,可支持10Mbps和100Mbps传输速率(虽然现实中与理论值有一定差距),主要用于双绞线以太网(10BASE-T/100BASE-T),目前仍可使用,不过在新网络建设中已经难看到。
超五类线:标准于2001年被提出,传输带宽为100MHZ,近距离情况下传输速率已可达1000Mbps。它具有衰减小、串扰少,比五类线增加了近端串音功率和测试要求,所以它也成为了当前应用最为厂泛的网线
六类线:继CAT5e之后,CAT6标准被提出,传输带宽为250MHZ,最适用于传输速率为1Gbps的应用。改善了在串扰以及回波损耗方面的性能,这一点对于新一代全双工的高速网络应用而言是极重要的,还有一个特点是在4个双绞线中间加了十字形的骨架
超六类线: 超六类线是六类线的改进版,发布于2008年,同样是ANSI/TIA-568C.2和ISO/IEC 11801超六类/EA级标准中规定的一种双绞线电缆,主要应用于万兆位网络中。传输频率500 MHZ,最大传输速度也可达到10Gbps在外部串扰等方面有较大改善。
七类线:该线是ISO/IEC 11801 7类/F级标准中于2002年认可的一种双绞线,它主要为了适应万兆以太网技术的应用和发展。但它不再是一种非屏蔽双绞线了,而是一种屏蔽双绞线,所以它的传输频率至少可达600 MHz.传输速率可达10Gbps。
超七类线:相对于CAT7最大区别在于,支持的频率带宽提升到了1000MHz,在国内而言,七类网线已经有很少地方使用了,超七类就更加没有广泛的进入人们的生活,目前使用范围最广的是超五类、六类等网线
八类线CAT8:相关标准由美国通信工业协会(TIA)TR-43委员会在2016年正式发布,支持2000MHZ带宽
支持40Gbps以太网络,主要应用于数据中心
非屏蔽式双绞线(Unshielded Twisted-Pair Cable UTP
)
T568B和T568A
RJ-45 Connector和Jack
UTP直通线(Straight-Through)
UTP交叉线(Crossover)
TUP直通线和交叉线
双绞线针脚定义
注:BI:双向数据;RX:接收数据;Receive Data TX:传送数据;Transmit Data
Fiber-Optic
MAC地址:media access control 媒体访问控制
作用
类型
按总线接口类型进行分类
分为ISA网卡、PCI网卡、PCI-X 网卡、PCMCIA网卡和USB网卡等几种类型
按传输介质接口分类
细同轴电缆的BNC接口网卡、粗同轴电缆AUI接口网卡、以太网双绞线R)-5接口网卡、光纤F/0接口网卡、无线网卡等
按传输速率(带宽)分类
10Mbps网卡、100Mbps以太网卡、10Mbps/100Mbps自适应网卡、1000Mbps千兆以太网卡、40Gbps自适应网卡等
repeater
实际上是一种信号再生放大器,可将变弱的信号和有失真的信号进行整形与放大,输出信号比原信号的强度将大大提高,中继器不解释、不改变收到的数字信息,而只是将其整形放大后再转发出去
优点
缺点
hub
集线器(Hub)工作在物理层,是中继器的一种形式,是一种集中连接缆线的网络组件,可以认为集线器是一个多端口的中继器,集线器能够提供多端口服务,主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上
Hub并不记忆报文是由哪个MAC地址发出,哪个MAC地址在Hub的哪个端口
Hub的特点:
Bridge
网桥(Bridge)也叫桥接器,是连接两个局域网的一种存储/转发设备,根据MAC地址表对数据进行转发,可隔离碰撞域
网桥将网络的多个网段在数据链路层连接起来,并对网络数据进行管理
网桥的内部结构
优点
缺点
switch
交换机是工作在OSI参考模型数据链路层的设备,外表和集线器相似
它通过判断数据帧的目的MAC地址,从而将数据顿从合适端口发送出去
交换机是通过MAC地址的学习和维护更新机制来实现数据顿的转发
内部结构
工作原理
集线器与交换机的比较
router
为了实现路由,路由器需要做下列事情:
以太网(Ethernet)是一种产生较早且使用相当广泛的局域网,由美国Xerox(施乐)公司的Palo Alto研究中心(简称为PARC)于20世纪70年代初期开始研究并于1975年研制成功
在局域网中,硬件地址又称为物理地址或MAC地址 (因为这种地址用在MAC中)
IEEE 802标准为局域网规定了一种48位的全球地址(一般都简称为"地址,是局域网中每一台计算机固化在网卡ROM中的地址
IEEE的注册管理机构RA负责向厂家分配地址字段的前三个字节(即高位24位)
地址字段中的后三个字节(即低位 24 位)由厂家自行指派,称为扩展标识符,必须保证生产出的话配器没有重复地址
CSMA/CD
工作原理
VLAN
虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组
这些网段具有某些共同的需求。每一个VLAN 的都有一个明确的标识符,指明发送这个的工作站是属于哪-个VLAN。虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网
可以隔离广播域
优点
虚拟局域网的实现技术
IEEE 802.1Q 帧结构
VLAN 标签各字段含义
TCP/IP
协议栈Transmission ControlProtocol/lnternet Protocol 传输控制协议/因特网互联协议
TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议
最早发源于1969年美国国防部(缩写为DoD)的因特网的前身ARPA网项目,1983年1月1日,TCP/IP取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互联网工程任务组负责维护
共定义4层,与OSI参考模型的分层有对应关系
相同点
不同点
transport
传输层TCP and UDP
Transmission Control Protocol
传输控制协议)更多关于tcp的内核参数,可参看man 7tcp
TCP包头
TCP包头常见选项:
最大报文段长度MSS(Maximum Segment Size),通常1460字节
指明自己期望对方发送TCP报文段时那个数据字段的长度。比如: 1460字节。数据字段的长度加上TCP首部的长度才等于整个TCP报文段的长度。MSS不宜设的太大也不宜设的太小。若选择太小,极端情况下,TCP报文段只含有1字节数据,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。这样,网络的利用率就不会超过1/41。若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段。当传输出错时还要进行重传,这些也都会使开销增大。因此MSS应尽可能大,只要在IP层传输时不需要再分片就行。在连接建立过程中,双方都把自己能够支持的MSS写入这一字段。MSS只出现在SYN报文中。即:MSS出现在SYN=1的报文段中
MTU和MSS倩的关系:MTUEMSS+IP Header+TCP Header
甬信双方最终的MSS值=较小MTU-IP Header-TCP Header
窗口扩大Window Scale
为了扩大窗口,由于TCP首部的窗口大小字段长度是16位,所以其表示的最大数是65535,但是随着时延和带宽比较大的通信产生(如卫星通信),需要更大的窗口来满足性能和吞吐率,所以产生了这个窗口扩大选项
时间戳Timestamps
可以用来计算RTT(往返时间),发送方发送TCP报文时,把当前的时间值放入时间戳字段,接收方收到后发送认报文时,把这个时间戳字段的值复制到确认报文中,当发送方收到确认报文后即可计算出RTT。也可以用来防止回绕序号PAWS,也可以说可以用来区分相同序列号的不同报文。因为序列号用32为表示,每2A32个序列号就会产生回绕,那么使用时间戳字段就很容易区分相同序列号的不同报文
传输层通过port号,确定应用层协议,范围0-65535
维基百科: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
IANA互联网数字分配机构负责域名,数字资源,协议分配
[root@CentOS8 ~]#cat /proc/sys/net/ipv4/ip_local_port_range
32768 60999
临时修改:
[root@CentOS8 ~]#echo 20000 60000 > /proc/sys/net/ipv4/ip_local_port_range
[root@CentOS8 ~]#cat /proc/sys/net/ipv4/ip_local_port_range
20000 60000
Linux里,/etc/services文件保存了常见服务器程序的端口号:
[root@CentOS8 ~]#grep 3306 /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
mysqlx 33060/tcp # MySQL Database Extended Interface
在Windows里,C:\Windows\System32\drivers\etc的services文件同样保存了常见程序的端口号:
例:监听与连接
TCP:
服务端:
[root@CentOS8 ~]#nc -l 9527
客户端:
[root@centos8_2 ~]#nc 10.0.0.201 9527
[root@CentOS8 ~]#ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 0 10.0.0.201:22 10.0.0.1:51460
ESTAB 0 0 10.0.0.201:9527 10.0.0.209:59712
此时可以互相发消息,因为TCP是全双工(不过,nc只能连接1个)
[root@CentOS8 ~]#nc -l 9527
hello ,C8
c8_2
[root@centos8_2 ~]#nc 10.0.0.201 9527
hello ,C8
c8_2
-------------------------------------------------------------------------------------------------
UDP:
服务端:加个-u即可
[root@CentOS8 ~]#nc -l 7777 -u
hello
客户端:
[root@centos8_2 ~]#nc 10.0.0.201 7777 -u
hello
[root@CentOS8 ~]#ss -ntu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp ESTAB 0 0 10.0.0.201:7777 10.0.0.209:58046
例:端口被占用,查看占用端口的应用程序
[root@CentOS8 ~]#ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 5 127.0.0.1:631 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
[root@CentOS8 ~]#nc -l 22
Ncat: bind to :::22: Address already in use. QUITTING.
[root@CentOS8 ~]#ss -ntlp 方法1
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=899,fd=4))
LISTEN 0 5 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=984,fd=10))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=899,fd=6))
[root@CentOS8 ~]#lsof -i :22 方法2
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 899 root 4u IPv4 28779 0t0 TCP *:ssh (LISTEN)
sshd 899 root 6u IPv6 28781 0t0 TCP *:ssh (LISTEN)
sshd 88022 root 5u IPv4 732769 0t0 TCP CentOS8.Joyce.person1:ssh->10.0.0.1:51460 (ESTABLISHED)
sshd 88024 root 5u IPv4 732785 0t0 TCP CentOS8.Joyce.person1:ssh->10.0.0.1:51461 (ESTABLISHED)
sshd 88039 root 5u IPv4 732769 0t0 TCP CentOS8.Joyce.person1:ssh->10.0.0.1:51460 (ESTABLISHED)
例:判断端口是否打开
方法1:
[root@CentOS8 ~]#echo :8008 | grep ":80\>"
[root@CentOS8 ~]#echo :80 | grep ":80\>"
:80
方法2:
[root@CentOS8 ~]#< /dev/tcp/10.0.0.201/22
[root@CentOS8 ~]#echo $?
0
[root@CentOS8 ~]#< /dev/tcp/10.0.0.201/80
-bash: connect: Connection refused
-bash: /dev/tcp/10.0.0.201/80: Connection refused
[root@CentOS8 ~]#echo $?
1
例:重定向访问百度
[root@centos8 ~]#exec 8<>/dev/tcp/www.baidu.com/80
[root@CentOS8 ~]#ll /proc/$$/fd
total 0
lrwx------ 1 root root 64 Aug 5 13:49 0 -> /dev/pts/2
lrwx------ 1 root root 64 Aug 5 13:49 1 -> /dev/pts/2
lrwx------ 1 root root 64 Aug 5 13:49 2 -> /dev/pts/2
lrwx------ 1 root root 64 Aug 5 13:49 255 -> /dev/pts/2
lr-x------ 1 root root 64 Aug 5 13:49 3 -> /var/lib/sss/mc/passwd
lrwx------ 1 root root 64 Aug 5 13:49 4 -> 'socket:[741410]'
lrwx------ 1 root root 64 Aug 5 13:57 8 -> 'socket:[753998]' 8
[root@centos8 ~]#echo -e 'GET / HTTP/1.1\n' >& 8
[root@centos8 ~]#cat <& 8
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 9508
Content-Security-Policy: frame-ancestors 'self' https://chat.baidu.com http://mirror-chat.baidu.com https://fj-chat.baidu.com https://hba-chat.baidu.com https://hbe-chat.baidu.com https://njjs-chat.baidu.com https://nj-chat.baidu.com https://hna-chat.baidu.com https://hnb-chat.baidu.com http://debug.baidu-int.com;
Content-Type: text/html
Date: Sat, 05 Aug 2023 05:56:06 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Pragma: no-cache
Server: BWS/1.1
TCP端口号通信过程
TCP序列(Sequence number)号和确认(Acknowledgment number)号
但效率较低,每次都要确定
TCP确认和固定窗口
size = 1,每一个包,即发一次确认一次,和上面基本相同
size = 3,每3个包确认一次
但size是固定的,无法修改。因此出现滑动窗口
TCP滑动窗口
可以根据Receiver的接受能力来调整自己的发送包的数量
TCP三次握手
TCP四次挥手
Finite State Machine
)虚线:服务器 ;实线:客户端
客户端先发送一个FIN给服务端,自己进入FIN_WAIT1状态,这时等待接收服务端报文,该报文会有三种可能:
客户端的典型状态转移
客户端通过connect系统调用主动与服务器建立连接connect系统调用首先给服务器发送一个同步报文段,使连接转移到SYN_SENT状态
此后connect系统调用可能因为如下两个原因失败返回:
当客户端执行主动关闭时,它将向服务器发送一个结束报文段,同时连接进入FIN_WAIT_1状态。若此时客户端收到服务器专门用于确认目的的确认报文段,则连接转移至FIN_WAIT_2状态。当客户端处于FIN_WAIT_2状态时,服务器处于CLOSE_WAIT状态,这一对状态是可能发生半关闭的状态。此时如果服务器也关闭连接(发送结束报文段),则客户端将给予确认并进入TIME_WAIT状态
客户端从FIN_WAIT_1状态可能直接进入TIME_WAIT状态(不经过FIN_WAIT_2状态,前提是处于FIN_WAIT_1状态的服务器直接收到带确认信息的结束报文段(而不是先收到确认报文段,再收到结束报文段)
处于FIN_WAIT_2状态的客户端需要等待服务器发送结束报文段,才能转移至TIME_WAIT状态,否则它将一直停留在这个状态。如果不是为了在半关闭状态下继续接收数据,连接长时间地停留在FIN_WAIT_2状态并无益处。连接停留在FIN_WAIT_2状态的情况可能发生在:客户端执行半关闭后,未等服务器关闭连接就强行退出了。此时客户端连接由内核来接管,可称之为孤儿连接(和孤儿进程类似)
Linux为了防止孤儿连接长时间存留在内核中,定义了两个内核参数:
客户机端的三次握手和四次挥手的状态转换
服务器端的三次握手和四次挥手的状态转换
sync
半连接和accept
全连接队列/proc/sys/net/ipv4/tcp_max_syn_backlog
未完成连接队列大小,默认值128,建议调整大小为1024以上/proc/sys/net/core/somaxconn
全连接队列,完成连接队列大小,默认值128,建议调整大小为1024以上异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务
TCP服务必须能够重传超时时间内末收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略与TCP超时重传相关的两个内核参数:
/proc/sys/net/ipv4/tcp_retries1
,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3/proc/sys/net/ipv4/tcp_retries2
,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可承受的能力,网络的性能就会变坏。此情况称为拥塞
TCP为提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性。即所谓的拥塞控制
TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分: 慢启动(slow start)、拥塞避免(congestion avoidance) 、快速重传 (fast retransmit) 和快速恢复 (fast recovery)。拥塞控制算法在Linux下有多种实现,比如reno算法、vegas算法和cubic算法等。它们或者部分或者全部实现了上述四个部分
当前所使用的拥塞控制算法:/proc/sys/net/ipv4/tcp_congestion_control
[root@CentOS8 ~]#cat /proc/sys/net/ipv4/tcp_congestion_control
cubic
参看帮助:man tcp
编辑文件/etc/sysctl.conf,加入以下内容: 然后执行 sysctl -p 让参数生效
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 2000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_max_orphans = 16384
net.core.somaxconn = 16384
net.core.netdev_max_back1og = 16384
作用说明:
User Datagram Protocol
用户数据段协议 )更多关于udp的内核参数,可参看man 7udp
Internet
层Internet Control Message Protocol
(Internet控制消息协议)范例: 利用icmp协议判断网络状态
[rootacentos7 ~]#ping 10.0.0.8
PING 10.0.0.8 (10.0.0.8) 56(84) bytes of data
64 bytes from 10.0.0.8: icmp_seq=1 tt1=64 time=0.307 ms
64 bytes from 10.0.0.8: icmp_seq=2 tt1=64 time=0.344 ms
64 bytes from 10.0.0.8: icmp_seq=3 tt1=64 time=0.335 ms
64 bytes from 10.0.0.8: icmp_seg=4 tt1=64 time=0.441 ms
[root@centos7 ~]#ping 10.0.0.81
PING 10.0.0.81 (10.0.0.81) 56(84) bytes of data.
From 10.0.0.7 icmp_seq=l Destination Host Unreachable
From 10.0.0.7 icmp_seq=2 Destination Host Unreachable
[root@centos7 ~]#ping 10.0.0.8
PING 10.0.0.8 (10.0.0.8) 56(84) bytes of data.
From 10.0.0.8 icmp_seq=l Destination port unreachable
From 10.0.0.8 icmp_seq=2 Destination port Unreachable
[root@centos8 ~]#ping www.magedu.org
ping: www.magedu.org: Name or service not known
[root@centos8 ~]#ping -s 65508 10.0.0.8
Error: packet size 65508 is too large. Maximum is 65507
[root@centos8 ~]#ping -s 65507 -f 10.0.0.8
PING 172.16.21.111 (172.16.21.111) 65507(65535) bytes of data.
Address Resolution Protocol
(地址解析协议)ARP
ARP 地址解析协议由互联网工程任务组(IETF)在1982年11月发布的RFC 826中描述制定,是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址,收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存
同网段的ARP
跨网段的ARP
例:ARP静态绑定(将IP和mac,防止ARP欺骗)
[root@centos8 ~]#arp -s 10.0.0.6 00:0c:29:32:80:38
[root@centos8 ~]#arp -n
Address Hwtype Hwaddress FTags Mask Iface
10.0.0.6 ether 00:0c:29:32:80:38 CM eth0
10.0.0.7 ether 00:0c:29:32:80:38 C eth0
10.0.0.1 ether 00:50:56:c0:00:08 C eth0
范例:kali 系统实现arp 欺骗上网流量劫持
#启动路由转发功能
[root@kali ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
#安装包
[root@kali ~]# apt-get install dsniff
#欺骗目标主机,本机是网关
[root@kali ~]# arpspoof -i eth0 -t 被劫持的目标主机IP 网关IP
#欺骗网关,本机是目标主机
[root@kali ~]# arpspoof -i eth0 -t 网关IP 被劫持的目标主机工P
Gratuitous ARP也称为免费ARP,无故ARP。Gratuitous ARP不同于一般的ARP请求,它并非期待得到ip对应的mac地址,而是当主机启动的时候,将发送一个Gratuitous arp请求,即请求自己的ip地址的mac地址
免费ARP可以有两个方面的作用:
Reverse Address Resolution Protocol
(反向ARP)RARP即将MAC转换成IP
Internet
协议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
Windows里ttl:128;Linux:64;某些网络设备:255
协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程,1表示为ICMP协议,2表示为IGMP 协议,6表示为TCP 协议17表示为UDP协议
首部检验和:占16位,只检验数据报的首部不检验数据部分,这里不采用 CRC 检验码而采用简单的计算方法
源地址和目的地址:都各占4字节,分别记录源地址和目的地址
例:判断IP地址冲突
[root@centos8 ~]#arping 10.0.0.6
ARPING 10.0.0.6 from 10.0.0.8 etho
Unicast reply from 10.0.0.6 [00:0C:29:E0:2F:37] 0.779ms
Unicast reply from 10.0.0.6 [00:0c:29:32:80:38] 0.798ms
Unicast reply from 10.0.0.6 [00:0C:29:32:80:38] 0.926ms
Unicast reply from 10.0.0.6 [00:0C:29:32:80:38] 0.864ms
Acsent 3 probes (1 broadcast(s))
Received 4 response(s)
协议域:
两个主机程序进行通信:
它们可唯一标识IP 网络中的每台设备,每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
IP地址由两部分组成
IPv4地址格式:点分十进制记法
网段数:2^可变网络ID的位数
主机数:2^主机ID的位数-2
A类:
B类
C类
D类:组/多播,1110 0000-1110 1111.XY.Z:224-239.X.Y.Z
E类:保留未使用,240-255
私有IP地址:不直接用于互联网,通常在局域网中使用
类 | 私有地址范围 | 数量 |
---|---|---|
A | 10.0.0.0 - 10.255.255.255 | 256个网段 |
B | 172.16.0.0 - 172.31.255.255 | 16个网段 |
C | 192.168.0.0 - 192.168.255.255 | 256个网段 |
公有IP地址:互联网上设备拥有的唯一地址
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服务器获取地址,系统会为主机分配这样地址
如:172.16.0.0网络中的两个地址
netmask
CIDR无类域间路由:目前的网络已不再按A,B,C类划分网段,可以任意指定网段的范围
CIDR无类域间路由表示法: IP/网络ID位数,如: 172.16.0.100/16
netmask子网掩码:32位(IPV4)或128位(IPV6)的数字,和IP成对使用,用来确认IP地址中的网络ID和主机ID,对应网络
ID的位为1,对应主机ID的位为0,范例:255.255.255.0
子网掩码的八位
例:
分配给120个主机使用,求子网掩码:
先算主机数:2^x-2 >= 120,得x=7,所以网络ID位数=32-7=25
所以子网掩码有25个1,即11111111 11111111 11111111 10000000
即255.255.255.128,或表示为 /25
判断对方主机是否在同一个网段:
用自已的子网掩码分别和自已的IP及对方的IP相与,比较结果,相同则同一网络,不同则不同网段
例:判断A:192.168.1.100 /24 和 B:192.168.2.100 /24 是否在同一网段
A:192.168.1.100 /24 = netmask:255.255.255.0
B:192.168.2.100 /24 = netmask:255.255.255.0
192.168.1.100 = 11000000 10101000 00000001 1100100
^255.255.255.0 = 11111111 11111111 11111111 0000000
= 11000000 10101000 00000001 0000000
= 192.168.1.0
同理:192.168.2.100 ^255.255.255.0 = 192.168.2.0 != 192.168.1.0,所以不等
例:判断A:192.168.1.100 /16 和 B:192.168.2.100 /16 是否在同一网段
A:192.168.1.100 /16 = netmask:255.255.0.0
B:192.168.2.100 /16 = netmask:255.255.0.0
192.168.1.100 = 11000000 10101000 00000001 1100100
^255.255.0.0 = 11111111 11111111 00000000 0000000
= 11000000 10101000 00000000 0000000
= 192.168.0.0
同理:192.168.2.100 ^255.255.255.0 = 192.168.0.0 == 192.168.0.0,所以等
例:判断A:192.168.1.100 /24 和 对方B:192.168.2.100 /16 是否在同一网段
A:192.168.1.100 /24 = netmask:255.255.255.0
B:192.168.2.100 /16 = netmask:255.255.0.0
192.168.1.100 = 11000000 10101000 00000001 1100100
^255.255.255.0 = 11111111 11111111 11111111 0000000
= 11000000 10101000 00000001 0000000
A = 192.168.1.0
同理:192.168.2.100 ^255.255.255.0 = 192.168.2.0 != 192.168.1.0,所以不等
#不过,如果是B访问A,则是用B的子网掩码分别与B和A的IP,这时候结果相同,则可以直接ARP广播
#因此,网络具有方向性,不同方向可能有不同的结果
注意:判断对方主机是否和自己一个网段,要用自己的子网掩码分别和自己的IP以及对方的IP与,再判断结果。
范例:
172.16.1.100/28
1. 此主机所在的网段最多有多少主机数?
2^(32-28)-2=16-2=14
2. 网络ID?
172.16.1.100 ^ 255.255.255.240
=172.16.1.01100100 ^1111 0000
=172.16.1.0110 0000
=172.16.1.96
3. 此网段中的主机中主机最小的IP?最大的IP?
172.16.1.0110 0000
0000最小,大1,即0001,172.16.1.0110 0001 = 172.16.1.97
1111最大,小1,即1110,172.16.1.0110 1110 = 172.16.1.110 = 96+2+4+8
203.110.228.200 / 28
1. 此主机所在的网段最多有多少主机数?
2^(32-28)-2=16-2=14
2. 网络ID? 200=128+64+8 = 1100 1000
203.110.228.200 ^ 255.255.255.240
=203.110.228.1100 1000 ^1111 0000
=203.110.228.1100 0000
=203.110.228.192
3. 此网段中的主机中主机最小的IP?最大的IP?
203.110.228.1100 1000
0000最小,大1,即0001, 203.110.228.1100 0001 = 203.110.228.193
1111最大,小1,即1110, 203.110.228.1100 1110 = 203.110.228.206 = 128+64+8+4+2
划分子网:将一个大的网络(主机数多)划分成多个小的网络(主机数少),主机ID位数变少,网络ID位数变多,网络ID位向主机ID位借位
可变子网掩码
Subnet地址
例:
10.0.0.0 /
借1位:
10.0 000 0000.0.0/8
10.1 000 0000.0.0/8
未分时最小的IP地址10.0 000 0000.0.1
最大10.1 111 1111.255.254
网络ID向主机ID借1位,划分了2^1=2个子网
第一个子网网络ID:10.0.0.0/9 = 10.0000 0000.0.0/9
第二个子网网络ID:10.128.0.0/9 = 10.1000 0000.0.0/9
每个子网主机个数:2^23-2=
借2位:
10.00 00 0000.0.0/8
10.01 00 0000.0.0
10.10 00 0000.0.0/8
10.11 00 0000.0.0
最小10.00 00 0000.0.1
最大10.11 11 1111.255.254
网络ID向主机ID借2位,划分了2^2=4个子网
第一个子网网络ID:10.0.0.0/10 = 10.0000 0000.0.0/10
第二个子网网络ID:10.64.0.0/10 = 10.0100 0000.0.0/10
第三个子网网络ID:10.128.0.0/10 = 10.1000 0000.0.0/10
第四个子网网络ID:10.192.0.0/10 = 10.1100 0000.0.0/10
每个子网主机个数:2^22-2=
例:中国移动10.0.0.0/8 给32个各省公司划分对应的子网
1、每个省对应一个子网,netmask
划分32个子网,需要2^5=32即5位
10.11111 000.0.0 = 255.248.0.0
2、每个省公司的子网的主机数有多少?
2^(32-8-5)-2=524286
3、河南省得到第10个子网,网络ID?
第一个子网的网络ID:
10.00000 000.0.0
第十个:(加9,同时记得在前面网络ID加,而不是后面主机ID)
10.00000 000.0.0+9 = 10.01001 000.0.0 = 10.72.0.0 /13
4、河南省得到第10个子网的最小IP和最大IP
第十个子网:
10.72.0.0/13 = 10.0100 1000.0.0
最小:10.0100 1000.0.0000 0001 = 10.72.0.1,全变000 0,最后+1即可
最大:10.0100 1111.255.254 = 10.79.255.254,变1111,最后-1即可
5、所有子网中,最小的和最大的子网的网络ID
10.00000 000.0.0 = 10.0.0.0
10.11111 000.0.0 = 10.248.0.0
合并超网:将多个小网络合并成一个大网,主机ID位向网络ID位借位
8个C类网段
220.78.168.0/24
220.78.169.0/24
220.78.170.0/24
220.78.171.0/24
220.78.172.0/24
220.78.173.0/24
220.78.174.0/24
220.78.175.0/24
220.78.168.0/24 220.78.10101 000.0
220.78.169.0/24 220.78.10101 001.0
220.78.170.0/24 220.78.10101 010.0
......
220.78.175.0/24 220.78.10101 111.0
前21位都相同
合并成
220.78.168.0/21
跨网络通信:路由,选择路径
路由分类
优先级:精度越高,优先级越高
DHCP
DHCP:走UDP
服务端:67
客户端:68
将Linux主机接入到网络,需要配置网络相关设置
一般包括如下内容
主机名
IP/netmask
路由:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三个DNS服务器
接口命名方式: CentOS 6
以太网: eth[0,1,2...]
ppp: ppp[0,1,2....]
网络接口识别并命名相关的udev配置文件
/etc/udev/rules.d/70-persistent-net.rules
查看网卡:
dmesg|grep -i eth
ethtool-i eth0
卸载网卡驱动
modprobe-r e1000
rmmode1000
装载网卡驱动
modprobe e1000
例:修改网卡名称:
1、修改文件
[root@CentOS6 ~]#vim /etc/udev/rules.d/70-persistent-net.rules 修改文件
[root@CentOS6 ~]#modprobe-r e1000 卸载网卡驱动
[root@CentOS6 ~]#modprobe e1000 重装网卡驱动
2、命令直接修改,临时生效
[root@CentOS6 ~]#ip link set eth0 down 禁用网卡
[root@CentOS6 ~]#ip link set eth0 name eth000 修改名为eth000
[root@CentOS6 ~]#lp link set eth000 up 启用网卡
静态指定:
ifconfig,route,netstat
ip:object (link,addr,route),ss,tc
system-config-network-tui,setup
配置文件
动态分配:DHCP:Dynamic Host Configuration Protocol 动态主机配置协议
ifconfig
命令来源于net-tools包,推荐使用 ip 命令代替
ifconfig [interface]
ifconfig -a
ifconfig IFACE[up|down] 启用与禁用网卡
ifconfig interface [aftype] options | address
...
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK
注意:立即生效
启用混杂模式:[-]promisc
例:
清空eth1上的地址
[root@CentOS8 ~]#ifconfig eth1 0.0.0.0/24
[root@CentOS8 ~]#ifconfig eth1 down 禁用网卡
[root@CentOS8 ~]#ifconfig eth1 up 启用网卡
为eth0分配一个新的名eth0:1,以及新的地址192.168.1.1
[root@CentOS8 ~]#ifconfig eth0:1 192.168.1.1/24
[root@CentOS8 ~]#ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.201 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::20c:29ff:fe02:765a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:02:76:5a txqueuelen 1000 (Ethernet)
RX packets 237104 bytes 241769748 (230.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 276875 bytes 130935863 (124.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:0c:29:02:76:5a txqueuelen 1000 (Ethernet)
删除eth0:1的别名
[root@CentOS8 ~]#ifconfig eth0:1 down
[root@CentOS8 ~]#ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.201 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::20c:29ff:fe02:765a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:02:76:5a txqueuelen 1000 (Ethernet)
RX packets 237134 bytes 241772352 (230.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 276898 bytes 130938335 (124.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
例:查看网卡流量情况
[root@CentOS8 ~]#ifconfig -s [网卡名] 不过运行后即结束
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 237226 0 0 0 276964 0 0 0 BMRU
lo 65536 795 0 0 0 795 0 0 0 LRU
实时监控流量变化,跟踪式:
[root@CentOS8 ~]#watch -n1 ifconfig -s
route
命令路由表管理命令
路由表主要构成
查看路由表
route
route -n
添加: route add
route add [-net|-host|default] target [netmask Nm] [gw Gw] [[dev] If]
删除: route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
例:
#目标: 192.168.1.3 网关: 172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
#目标: 192.168.0.0 网关: 172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev etho
route add -net 192.168.8.0/24 dev ethl metric 200
#默认路由,网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add -net .0.0.0/0 gw 172.16.0.1
route add default gw 172.16.0.1
#目标: 192.168.1.3 网关: 172.16.0.1
route de1 -host 192.168.1.3
#目标: 192.168.0.0 网关: 172.16.0.1
route de1 -net 192.168.0.0 netmask 255.255.255.0
例:配置三个路由器,使A可以连接到B
首先需要分别给路由器R1/R2/R3添加路由表
对于R1:与网段1和网段2直连,因此系统已经自动分配路由,不用添加
网段3:
route add -net 172.20.0.0/16 gw 172.18.0.201 dev eth1
网段4:
route add -net 172.22.0.0/16 gw 172.18.0.201 dev eth1
网络ID=主机ID^NETMASK 接口
由于都是在R1右侧,因此可以合并成默认路由:
route add default gw 172.18.0.201dev eth1
同理R3:
网段1:
route add -net 172.18.0.0/16 gw 172.20.0.200 dev eth1
网段2:
route add -net 172.20.0.0/16 gw 172.20.0.200 dev eth1
由于都是在R3左侧,因此可以合并成默认路由:
route add default gw 172.20.0.20dev eth0
R2:网段2/3直连R2,因此无需配置,只需添加1/4
网段1:
route add -net 172.16.0.0/16 gw 172.18.0.200 dev eth0
网段4:
route add -net 172.22.0.0/16 gw 172.20.0.201 dev eth1
注意:因为我们使用Linux来模拟路由器,正常情况下Linux接收到非自己地址的数据后会将其抛弃而无法传给下一个模拟的路由器,因此需要修改设置以转发数据
echo > /proc/sys/net/ipv4/ip_forward=1
不过这是临时修改内存数据,无法持久保存
此时A可以直接ping通B
注意:这是静态路由,手工添加。在较大的企业中,使用自动获取
通过守护进程获取动态路由
安装quagga包通过命令vtysh配置
支持多种路由协议: RIP、OSPF和BGP
netstat
命令推荐使用 ss 命令代替
显示网络连接
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
常用选项
-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口
-e: 扩展格式
-p: 显示相关进程及PID
常用组合
-tan, -uan, -tnl, -un7
显示路由表
netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend |-e] [--program |-p] [--numeric|-n]
netstat -i
netstat -I=IFACE
ifconfig -s IFACE
例:
[root@CentOS8 ~]#netstat -I
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 607741 0 0 0 644164 0 0 0 BMRU
lo 65536 931 0 0 0 931 0 0 0 LRU
[root@CentOS8 ~]#ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 607766 0 0 0 644181 0 0 0 BMRU
lo 65536 931 0 0 0 931 0 0 0 LRU
[root@CentOS8 ~]#ifconfig -s eth0
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 607782 0 0 0 644192 0 0 0 BMRU
[root@CentOS8 ~]#netstat -I=eth0 这里加=号,不能空格隔开
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 607803 0 0 0 644206 0 0 0 BMRU
来自于iproute包代替ifconfig
ip [ OPTIONS ] OBJECT { COMMAND | help }
ip 命令说明:
OBJECT := { link | addr | route }
ip link - network device configuration
set dev IFACE,可设置属性: up and down: 激活或禁用指定接口,相当于 ifup/ifdown
show [dev IFACE] [up]: : 指定接口 ,up 仅显示处于激活状态的接口
ip 地址管理
ip addr { add | del } IFADDR dev STRING [label LABEL] [scope {global | link | host}]
[broadcast ADDRESS]
[label LABEL]: 添加地址时指明网卡别名
[scope {global | link | host}]: 指明作用域:global: 全局可用;link: 仅链接可用;host: 仅本机可用
[broadcast ADDRESS]: 指明广播地址
ip address show
ip addr flush dev wangka 清空网卡上的所有地址
例:
[root@CentOS8 ~]#ip link set eth0 down 禁用eth0网卡
[root@CentOS8 ~]#ip link set eth0 up 启用eth0网卡
[root@CentOS8 ~]#ip link set eth0 name eth000 将eth0网卡改名为eth000(网卡禁用才能改)
[root@CentOS8 ~]#ip addr flush dev eth0 清空eth0网卡上的所有地址
[root@CentOS8 ~]#nmcli connection up eth0 重新加载eth0网卡上的配置文件里的内容
[root@CentOS8 ~]#ip a a 8.8.8.8/24 dev eth0:1 添加地址
[root@CentOS8 ~]#ip route 等价于route -n;每行dev前的信息可以直接拿来使用,如下面的del
default via 10.0.0.2 dev eth0 proto static metric 100
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.201 metric 100
[root@CentOS8 ~]#ip route del default via 10.0.0.2 删除默认路由
ip route 用法:
#添加路由:
ip route add TARGET via GW dev IFACE srC SOURCE_IP
TARGET:
主机路由: IP
网络路由: NETWORK/MASK
#添加网关:
ip route add defau1t via Gw dev IFACE
#删除路由:
ip route del TARGET
#显示路由:
ip route show|list
#清空路由表:
ip route flush [dev IFACE] [via PREFIX]
2个互相没有路由地址的设备要想跨网段通讯,使用单臂路由
[root@CentOS7 ~]#ip route add default via 7.7.7.200
[root@CentOS8 ~]#ip route add default via 8.8.8.200
或者不使用路由器,使用默认路由
[root@CentOS8 ~]#ip route add default dev eth0
因为两个地址本身物理上相通,但没有方向,即逻辑上不通,加上路由逻辑就通了
ss
命令netstat 通过遍历/proc来获取 socket信息,ss 使用netlink与内核 tcp_diag 模块通信获取 socket 信息
格式
ss [OPTION]... [FILTER]
选项:
-t: tcp协议相关
-u: udp协议相关
-w:裸套接字相关
-x:unix sock相关
-l:listen状态的连接
-a:所有
-n:数字格式
-p:相关的程序及PID
-e:扩展的信息
-m内存用量
-o:计时器信息
格式说明
FILTER : [ state TCP-STATE ] [ EXPRESSION ]
TCP的常见状态:
tcp finite state machine:
LISTEN: 监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
EXPRESSION:
dport =
sport =
常用组合
-tan,-tanl,-tanlp,-uan
#显示本地打开的所有窗口
ss -l
#显示每个进程具体打开的socket
ss -pl
#显示所有tcp socket
ss -t -a
#显示所有的UDP socekt
ss -u -a
#显示所有已建立的ssh连接
ss -o state established '( dport = :ssh or sport = :ssh )'
[root@CentOS8 ~]#ss -o state established '( dport = :ssh or sport = :ssh )'
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp 0 0 10.0.0.201:ssh 10.0.0.1:50898 timer:(keepalive,78min,0)
tcp 0 48 10.0.0.201:ssh 10.0.0.1:50897 timer:(on,233ms,0)
#显示所有已建立的HTTP连接
ss -o state established '( dport = :http or sport = :http )'
#列出当前socket详细信息
ss -s
[root@CentOS8 ~]# ss -s
Total: 222
TCP: 8 (estab 2, closed 0, orphaned 0, timewait 0)
Transport Total IP IPv6
RAW 0 0 0
UDP 4 2 2
TCP 8 5 3
INET 12 7 5
FRAG 0 0 0
IP、MASK、GW、DNS相关的配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE
说明参考:
/usr/share/doc/initcripts-*/sysconfig.txt
常用配置
设置 | 说明 |
---|---|
TYPE | 接口类型,常见有的Ethernet,Bridge |
NAME | 此配置文件应用到的设备 |
DEVICE | 设备名 |
HWADDR | 对应的设备的MAC地址 |
UUID | 设备的惟一标识 |
BOOTPROTO | 激活此设备时使用的地址配置协议,常用的dhcp,static,none,bootp |
IPADDR | 指明IP地址 |
NETMASK | 子网掩码如:255.255.2550 |
PREFIX | 网络ID的位数如:24 和NETMASK二选一写 |
GATEWAY | 默认网关 |
DNS1 | |
DNS2 | 备用 |
ONBOOT | 是否启动网卡:yes / no |
临时修改主机名
[root@CentOS8 ~]#hostname 主机名
/etc/hosts
和DNS
的优先级创建并修改该文件内容即可使路由持久生效
/etc/sysconfig/network-scripts/route-IFACE
两种风格:
(1) TARGET via GW
如: 10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
将多个IP地址绑定到一个NIC上
每个IP绑定到独立逻辑网卡,即网络别名,命名格式:ethX:Y,如: eth0:1 、eth0:3、eth0:2
范例: ifconfig命令
ifconfig eth0:0 192.168.1.100/24 up
ifconfig eth0:0 down
范例:ip命令
ip addr add 172.16.1.1/16 dev etho
ip addr add 172.16.1.2/16 dev etho label etho:0
ip addr de1 172.16.1.2/16 dev etho label etho:0
ip addr flush dev etho Tabel etho:0
为每个设备别名生成独立的接口配置文件,格式为: ifcfgethX:xxx
例:
[root@centos8 ~]#cat /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
IPADDR=10.0.0.100
PREFIX=8
注意:
bonding
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址
Bonding
工作模式共7种模式:0-6 Mode
说明:
active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如: Cisco 交换机需要在模式0、2和3中使用EtherChannel,但在模式4中需要 LACP和EtherChannel
详细帮助:
/usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt
https://www.kernel.org/doc/Documentation/networking/bonding.txt
例:以模式1创建bonding设备的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0
TYPE=bond #模式必须写bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=10.0.0.100
PREFIX=8
#miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路
BONDING_OPTS="mode=1 miimon=100
#修改另外2张网卡
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0 #继承bond0,不自己设地址
SLAVE=yes
ONB0OT=yes
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none #继承bond0,不自己设地址
MASTER=bond0
SLAVE=yes
ONB0OT=yes
查看bondo状态
/proc/net/bonding/bondo
删除bondo
ifconfig bond0 down 禁用网卡
rmmod bonding 或 modprobe -r bonding 卸载模块
C6之前,网络接口使用连续号码命名: eth0、eth1等,当增加或删除网卡时,名称可能会发生变化
C7以上版使用基于硬件,设备拓扑和设置类型命名
systemd对网络设备的命名方式
基于BIOS支持启用biosdevname软件
内置网卡: em1,em2
pci卡: pYpX Y: slot ,x:port
网卡组成格式
en: Ethernet 有线局域网
wl: wlan 无线局域网
ww: wwan无线广域网
o<index>: 集成设备的设备索引号
s<slot>: 扩展槽的索引号
X<MAC>: 基于MAC地址的命名
p<bus>s<s]ot>: enp2s1
使用传统命名方式C7/C8:
编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
如果不是dell服务器,可以不使用biosdevname
为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
重启系统
配置文件:
/etc/hostname
默认没有此文件,通过DNS反向解析获取主机名,主机名默认为: localhost.localdomain
设置主机名:
hostnamectl set-hostname centos7.magedu.com
删除文件/etc/hostname将恢复主机名localhost.localdomain
显示主机名信息:
hostname
hostnamectl status
nmcli
图形工具:nm-connection-editor
字符配置tui工具
命令行工具:nmcli
以上工具都依赖NetworkManager服务,此服务是管理和监控网络设置的守护进程
nmcli命令
参考文档: 3.3. Configuring IP Networking with nmcli Red Hat Enterprise Linux 7 | Red Hat Customer Portal
nmcli命令相关术语
格式
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces
nmcli device help
connection - start, stop, and manage network connections
nmcli connection help
修改IP地址等属性:
nmcli connection modify IFACE [+|-]setting.property value
setting.property: ipv4.addresses ipv4.gateway ipv4.dnsl ipv4.method manual | auto
修改配置文件执行生效::
nmcli con reload
nmcli con up con-name
nmcli con mod | ifcfg**.***文件 |
---|---|
ipv4.method manua | BOOTPROTO=none |
ipv4.method auto | BOOTPROTO=dhcp |
ipv4.addresses 192.168.2.1/24 | IPADDR=192.168.2.1 PREFIX=24 |
ipv4.gateway 172.16.0.200 | GATEWAY=192.0.2.254 |
ipv4.dns 8.8.8.8 | DNS0=8.8.8.8 |
ipv4.dns-search example.com | DOMAIN=example.com |
ipv4.ignore-auto-dns true | PEERDNS=no |
connection.autoconnect yes | ONBOOT=yes |
connection.id etho | NAME=eth0 |
connection.interface-name etho | DEVICE=eth0 |
802-3-ethernet.mac-address… | HWADDR=… |
范例:
#查看帮助
nmcli con add help
#使用nmcli配置网络
nmcli con show
#显示所有活动连接
nmcli con show --active
#显示网络连接配置
nmcli con show "System eth0"
#显示设备状态
nmcli dev status
#显示网络接口属性
nmcli dev show eth0
#创建新连接defau1t,IP自动通过dhcp获取
nmcli
实现bonding
#添加bonding接口
nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup
#添加从属接口
nmcli con add type bond-slave ifname ens7 master bond0
nmcli con add type bond-slave ifname ens3 master bond0
#注: 如无为从属接口提供连接名,则该名称是接口名称加类型构成
#要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1
#启动绑定
nmcli con up mybond0
Network Teaming
网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
网络组不同于旧版中bonding技术,提供更好的性能和扩展性
网络组由内核驱动和teamd守护进程实现
多种方式 runner
网络组特点
例:
#创建网络组接口
nmcli con add type team con-name CNAME ifname INAME [config JSON]
CNAME 连接名
INAME 接口名
JSON 指定runner方式,格式: '{"runner": {"name":"METHOD"}}'
METHOD 可以是broadcast,roundrobin,activebackup,Toadbalance,lacp
#创建port接口
nmcli con add type team-slave con-name CNAME ifname INAME master TEAM
CNAME 连接名,连接名若不指定,默认为team-slave-IFACE
INAME 网络接口名
TEAM 网络组接口名
#断开和启动
nmcli dev dis INAME
nmcli con up CNAME
INAME 设备名 CNAME 网络组接口名或port接口
例:
nmcli con add type team con-name myteam0 ifname team0 config '{"runner": {"name":"loadbalance"}}' ipv4.addresses 192.168.1.100/24 ipv4.method manual
nmcli con add con-name team0-ethl type team-slave ifname ethl master team0
nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0
nmcli con up myteam0
nmcTi con up teamO-ethl
nmcli con up teamO-eth2
teamdctl team0 state 查看team0的状态
ping -I team0 192.168.0.254
nmcli dev dis eth1
teamdctl team0 state
nmcli con up team0-port1
nmcli dev dis eth2
teamdctl team0 state
nmcli con up team0-port2
teamdctl team0 state
管理网络组配置文件:
/etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="[ "runner ": "name ": "broadcast "}}!
BOOTPRoTO=none
IPADDR0=172.16.0.100
PREFIX0=24
NAME=team0
ONB00T=yes
管理网络组配置文件
/etc/sysconfig/network-scripts/ifcfg-teamO-eth1
DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBO0T=yes
删除网络组
nmcli connection down team0
teamdctl team0 state
nmcli connection show
nmcli connectioni delete teamO-eth0
nmcli connectioni delete teamO-ethl
nmcli connection show
桥接:把一台机器上的若千个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。
主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、D
工具包: bridge-utils目前C8无此包
[root@CentOS8 ~]#yum info bridge-utils
Last metadata expiration check: 2:12:46 ago on Thu 10 Aug 2023 05:41:18 PM CST.
Available Packages
Name : bridge-utils
Version : 1.7.1
Release : 2.el8
Architecture : x86_64
Size : 40 k
Source : bridge-utils-1.7.1-2.el8.src.rpm
Repository : epel
Summary : Utilities for configuring the linux ethernet bridge
URL : https://wiki.linuxfoundation.org/networking/bridge
License : GPLv2+
Description : This package contains utilities for configuring the linux ethernet
: bridge. The linux ethernet bridge can be used for connecting multiple
: ethernet devices together. The connecting is fully transparent: hosts
: connected to one ethernet device see hosts connected to the other
: ethernet devices directly.
:
: Install bridge-utils if you want to use the linux ethernet bridge.
yum install bridge-utils
#查看网桥
brctl show
#查看CAM(content addressable memory内容可寻址存储器)表
brctl showmacs br0
#添加和删除网桥
brctl addbr|delbr br0
#添加和删除网桥中网卡
brctl addif|delif brO etho
#默认br0 是down,必须启用
ifconfig br0 up
注意:NetworkManager只支持以太网接口接口连接到网桥,不支持聚合接口
spanning tree protocol - STP:生成树协议,防止网络瘫痪
启用生成树协议
brctl stp br0 on
nmcli命令创建软件网桥:
nmcli con add con-name mybro type bridge ifname br0
nmcli con modify mybr0 ipv4.addresses 192.168.0.100/24 ipv4.method manual ip地址只为远程管理
nmcli con add con-name brO-port0 type bridge-slave ifname eth0 aster bro
查看配置文件:
cat /etc/sysconfig/network-scripts/ifcfg-br0
cat /etc/sysconfig/network-scripts/ifcfg-br0-porto
例:
#1创建网桥
nmcli con add type bridge con-name br0 ifname br0
nmcli connection modify br0 ipv4.addresses 192.168.0.100/24 ipv4.method manual
nmcli con up br0
#2加入物理网卡
nmcli con add type bridge-slave con-name br0-port0 ifname eth0 master br0
nmcli con add type bridge-slave con-name br0-port1 ifname ethl master br0
nmcli con up br0-port0
nmcli con up br0-port1
#3查看网桥配置文件
cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
STP=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.0.100
PREFIX=24
cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
TYPE=Ethernet
NAME=br0-port0
DEVICE=eth0
ONB00T=yes
BRIDGE=br0
UUID=23f41d3b-b57c-4e26-9b17-d5f02dafd12d
#4安装管理软件包:
yum install bridge-utils
brctl show
#5删除br0
nmcli con down br0
rm /etc/sysconfig/network-scripts/ifcfg-br0*
nmcli con reload
测试网络连通性
ping
目标网络unreachable不可达:多为路由问题
目标主机不可达:有路由但可能路径错误
名字或服务未知:IP可ping通,但无法把网址解析成ip地址,DNS问题
显示正确的路由表
跟踪路由
确定名称服务器使用
抓包工具
安全扫描工具
流量控制工具
范例:
tc qdisc add dev etho root netem loss 50% 设置丢包率
tc qdisc add dev etho root netem delay 1000ms 设置延迟
tc qdisc show dev etho
tc qdisc del
tcpdump
网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。
语法:
tcpdump [-adeflnNopqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
参数说明:
-a 尝试将网络和广播地址转换成名称。
-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出
-e 在每列倾倒资料上显示连接层级的文件头。
-f 用数字显示网际网络地址。
-F<表达文件> 指定内含表达方式的文件。
-i<网络界面> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区
-n 不把主机的网络地址转换成名字,即显示数字而非单词
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息
-r<数据包文件> 从指定的文件读取数据包数据
-s<数据包大小> 设置每个数据包的大小。
-S 用绝对而非相对数值列出TCP关联数
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程
-x 用十六进制字码列出数据包资料。
-w<数据包文件> 把数据包数据写入指定的文件。
例:
#不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。
tcpdump
#监听特定网卡
tcpdump -i en0
#监听特定主机,监听主机10.0.0.100 的通信包,注意: 出、入的包都会被监听.
tcpdump host 10.0.0.100
#特定来源、目标地址的通信
#特定来源
tcpdump src host hostname
#特定目标地址
tcpdump dst host hostname
#指定来源和目标地址,如果要指定协议,要放在src之前,然后and src ...
tcpdump src host hostname and dst host hostname
#如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听
tcpdump host hostname
#特定端口
tcpdump port 3000
#监听TCP/UDP,服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包
tcpdump tcp
#来源主机+端口+TCP,监听来自主机10.0.0.100在端口22上的TCP数据包
tcpdump tcp port 22 and src host 10.0.0.100
#监听特定主机之间的通信
tcpdump ip host 10.0.0.101 and 10.0.0.102
#10.0.0.101和除了10.0.0.1之外的主机之间的通信
tcpdump ip host 10.0.0.101 and !10.0.0.1
实例:
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用wireshark分析
#限制抓包的数量,如下,抓到1000个包后,自动退出
tcpdump -c 1000
#保存到本地,tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,才会将输出写到本地磁盘,可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差)
tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap
nmap
扫描远程主机工具,功能远超越用世人皆知的 Ping工具发送简单的ICMP 回声请求报
官方帮助: https://nmap.org/book/man.html
格式:
nmap [Scan Type(s)] [Options] {target specification}
命令选项:
-sT TCP connect()扫描,这是最基本的 TCP 扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息
-ss TCP 同步扫描 (TCP SYN),因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志
-sF,-sX,-sN 秘密 FIN 数据包扫描、圣诞树 (Xmas Tree)、空 (Null) 扫描模式。这些扫描方式的理论依括是:关闭的端口需要对你的探测包回应 RST 包,而打开的端口必需忽略有问题的包
-sP ping 扫描,用 ping 方式检查网络上哪些主机正在运行。当主机阻塞 ICMP echo 请求包是 ping 扫描是无效的。nmap 在任何情况下都会进行 ping 扫描,只有目标主机处于运行状态,才会进行后续的扫描
-sU UDP 的数据包进行扫描,想知道在某台主机上提供哪些 UDP 服务,可以使用此选项
-A ACK 扫描,这项高级的扫描方法通常可以用来穿过防火墙。
-sW 滑动窗口扫描,非常类似于 ACK 的扫描
-sR RPC 扫描,和其它不同的端口扫描方法结合使用。
-b FTP 反弹攻击 (bounce attack),连接到防火墙后面的一台 FTP 服务器做代理,接着进行端口扫描。
-P0 在扫描之前,不 ping 主机。
-PT 扫描之前,使用 TCP ping 确定哪些主机正在运行
-PS 对于 root 用户,这个选项让 nmap 使用 SYN 包而不是 ACK 包来对目标主机进行扫描。
-PI 设置这个选项,让 nmap 使用真正的 ping(ICMP echo 请求) 来扫描目标主机是否正在运行。
-PB 这是默认的 ping 扫描选项。它使用 ACK(-PT) 和 ICMP(-PI) 两种扫类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。
-O 这个选项激活对 TCP/IP 指纹特征 (fingerprinting) 的扫描,获得远程主机的标志,也就是操作系统类型
-I 打开 nmap 的反向标志扫描功能。
-f 使用碎片 IP 数据包发送SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图
-v 冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
-S <IP> 在一些情况下,nmap 可能无法确定你的源地址 。在这种情况使用这个选项给出指定 IP 地址
-g port 设置扫描的源端口
-oN 把扫描结果重定向到一个可读的文件 logfilename 中
-Os 扫描结果输出到标准输出。
--host_timeout设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制
-max rtt timeout 设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约 9000 毫秒
-min_rtt_timeout 设置 nmap 对每次探测至少等待你指定的时间,以毫秒为单位
-M count 设置进行 TP connect() 扫描时,最多使用多少个套接字进行并行的扫描
例:
#Tcp ack 扫描,并发2000,速度快
[rootacentos8 ~]#nmap -n -PA --min-parallelism 2000 172.16.0.0/16
#仅列出指定网段上的每台主机,不发送任何报文到目标主机.
[root@CentOS8 ~]#nmap -sL 10.0.0.0/24
Starting Nmap 7.70 ( https://nmap.org ) at 2023-08-11 16:18 CST
Nmap scan report for 10.0.0.0
Nmap scan report for 10.0.0.1
...
Nmap scan report for 10.0.0.254
Nmap scan report for 10.0.0.255
Nmap done: 256 IP addresses (0 hosts up) scanned in 1.04 seconds
#可以指定一个IP地址范围
[root@CentOS8 ~]# nmap -sP 10.0.0.1-10 | grep "Nmap scan"
Nmap scan report for 10.0.0.1
Nmap scan report for 10.0.0.2
[root@CentOS8 ~]# nmap -sP 10.0.0.1-10 | grep "Nmap scan" | cut -d" " -f5
10.0.0.1
10.0.0.2
[root@CentOS8 ~]# nmap -sP 10.0.0.1-10 | grep "Nmap scan" | sed 's/Nmap scan report for //'
10.0.0.1
10.0.0.2
[root@CentOS8 ~]# nmap -sP 10.0.0.1-10 | sed -n '/^Nmap scan/s/Nmap scan report for //p'
10.0.0.1
10.0.0.2
#批量扫描一个网段的主机存活数
[rootacentos8 ~]#nmap -sP -v 10.0.0.0/24
[rootacentos8 ~]#nmap -v -sn ip/24
#有些主机关闭了ping检测,所以可以使用-P0跳过ping的探测,可以加快扫描速度
[rootacentos8 ~]#nmap -P0 192.168.1.100
#扫描主机
[rootacentos8 ~]#nmap -v -A 10.0.0.203
#一次性扫描多台目标主机
[rootacentos8 ~]#nmap 10.0.0.6 10.0.0.7
#从一个文件中导入IP地址,并进行扫描
[root@centos8 ~]#cat hosts.txt
10.0.0.7
10.0.0.6
58.87.87.99
[root@centos8 ~]#nmap -iL hosts.txt
#探测目标主机开放的端口,可指定一个以逗号分隔的端口列表(如-PS22,443,80)
[root@centos8 ~]#nmap -PS22,80,443 10.0.0.1
#使用SYN半开放扫描
[root@centos8 ~]#nmap -ss 10.0.0.1
#扫描开放了TCP端口的设备
[root@centos8 ~]#nmap -sT 10.0.0.1
#扫描开放了UDP端口的设备
[root@centos8 ~]#nmap -sU 10.0.0.1
#只扫描UDP端口
nmap -e eth1 -SU -O 10.0.0.1
#扫描TCP和UDP端口
nmap -STU -O 10.0.0.1
#用于扫描目标主机服务版本号
[root@centos8 ~]#nmap -SV 10.0.0.7
#查看主机当前开放的端口
nmap localhost
#查看主机端口 (1024-65535) 中开放的端口
nmap -p 1024-65535 localhost
#探测目标主机开放的端口
nmap -PS 10.0.0.1
#探测所列出的目标主机端口
nmap -PS22,80,3306 10.0.0.1
#探测目标主机操作系统类型
nmap -O 10.0.0.1
#探测目标主机操作系统类型
nmap -A 10.0.0.1
修改主机名
hostnamectl set-hostname NewName
root@Ubuntu1804:~# hostnamectl set-hostname Ubuntu20.04
root@Ubuntu1804:~# cat /etc/hostname
Ubuntu20.04
root@Ubuntu1804:~# hostname
Ubuntu20.04
而对于HOSTNAME变量,需要重新登陆才会生效
root@Ubuntu1804:~# echo $HOSTNAME
Ubuntu1804
root@Ubuntu1804:~# exit
logout
joyce@Ubuntu1804:~$ sudo -i
root@Ubuntu20:~# echo $HOSTNAME
Ubuntu20.04
默认Ubuntu的网卡名称和 C7 类似,如:ens33、ens38等
修改网卡名称为传统命名方式:
#修改配置文件为下面形式
#1、使用vim交互式修改
root@Ubuntu20:~# vim /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0'
#2、使用sed命令直接修改
root@Ubuntu20:~# sed -i.bak '/^GRUB_CMDLINE_LINUX=/s#"$#net.ifnames=0"#' /etc/default/grub
#生效新的grub.cfg文件 Ubuntu
root@Ubuntu20:~# grub-mkconfig -o /boot/grub/grub.cfg
#或者
root@Ubuntu20:~# update-grub
#C7或C8的启动文件:
[root@CentOS8 ~]#cat /boot/grub2/grub.cfg
#重启生效
reboot
#不过生效后,会没有地址,接下来开始配置网卡:
官网文档:
配置网卡,使生成的eth0网卡可以获取地址
root@Ubuntu20:~# cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: yes
随后执行命令使配置生效
root@Ubuntu20:~# netplan apply 使生效
注意:yaml格式缩进2个空格
例:
root@ubuntu1804:~#vim /etc/netplan/01-netcfg.yam7
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses: [192.168.8.10/24,10.0.0.10/8] #或者用下面两行,两种格式不能混用
- 192.168.8.10/24
- 10.0.0.10/8
gateway4: 192.168.8.1
nameservers :
search: magedu.com, magedu.org]
addresses: [180.76.76.76,8.8.8.8,1.1.1.1]
查看ip和gateway
rootaubuntu1804:~#ip addr
rootaubuntu1804:~#route -n
查看DNS
root@Ubuntu20:~# ll /etc/resolv.conf 不再存放网卡的dns信息等
lrwxrwxrwx 1 root root 39 May 31 01:43 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
root@Ubuntu20:~# resolvectl status 查看dns
或
root@Ubuntu20:~# systemd-resolve --status
root@Ubuntu20:~# systemd-resolve --status
Global
LLMNR setting: no
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
root@ubuntu1804:~#vim /etc/netplan/01-netcfg.yam7
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
dhcp6: no
addresses: [10.0.0.18/16]
gateway4: 10.0.0.2
nameservers :
addresses: [223.6.6.6]
eth1:
dhcp4: no
dhcp6: no
addresses:[10.20.0.18/16]
routes :
- to: 10.30.0.0/16
via: 10.20.0.1
- to: 10.40.0.0/16
via: 10.20.0.1
- to: 10.50.0.0/16
to: 10.60.0.0/16
via: 10.20.0.1
rootaubuntu1804:~#netplan apply
rootaubuntu1804:~#route -n
Kernel Ip routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
10.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
10.30.0.0 10.20.0.1 255.255.0.0 UG 0 0 0 eth1
10.40.0.0 10.20.0.1 255.255.0.0 UG 0 0 0 eth1
10.50.0.0 10.20.0.1 255.255.0.0 UG 0 0 0 eth1
10.60.0.0 10.20.0.1 255.255.0.0 UG 0 0 0 eth1
#或每个网卡一个配置文件
rootaubuntu1804:~#cat /etc/netplan/01-netcfg.yaml
rootaubuntu1804:~#cat /etc/netplan/02-netcfg.yaml
root@ubuntu1804:~# apt install -y bridge-utis
root@ubuntu1804:~# dpkg -L bridge-utils
sbin/brctl #临时,不能持久
...
root@ubuntu1804:~# cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets :
eth0:
dhcp4: yes 自动获取地址
eth1:
dhcp4: no
dhcp6: no
eth2:
dhcp4: no
bridges :
br0:
dhcp4: no
dhcp6: no
addresses: [10.0.0.18/16]
gateway4: 10.0.0.2
nameservers :
addresses: [223.6.6.6]
interfaces:
- ethl
- eth2
root@ubuntu1804:~# netplan apply
root@ubuntu1804:~# ifconfig br0
br0: fTags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.18 netmask 255.255.0.0 broadcast 10.0.255.255
inet6 fe80::9cbe:ldff:fe85:6601 prefixlen 64 scopeid 0x20<link>
ether 9e:be:1d:85:66:01 txqueuelen 1000 (Ethernet)
RX packets 158 bytes 19534 (19.5 KB)
RX errors 0 dropped O overruns 0 frame 0
TX packets 10 bytes 796 (796.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 colisions 0
root@ubuntu1804:~# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.9ebeld856601 no ethl
eth2
支持多网卡绑定七种模式:
第一种模式: mod=0,即:(balance-rr) Round-robin policy (平衡抢循环策略)
特点: 传输数据包顺序是依次传输(即: 第1个包走etho,下一个包就走eth1…一直循坏下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力。
第二种模式: mod=1,即: (active-backup) Active-backup policy (主-备份策略)
特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混刮。此模式只提供了容错能力:由此可见此算法的优点是可以提供网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 个网络接口的情况下,资源利用率为1/N。
第三种模式: mod=2,即: (balance-xor) XOR policy (平衡策略)
特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址》% s ave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力。
第四种模式: mod=3,即: broadcast (广播策略)
特点: 在每个slave接口上传输每个数据包,此模式提供了容错能力。
第五种模式: mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation (IEEE 802.3ad 动态链接聚合)
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
必要条件:
条件1: ethtoo1持获取每个save的速率和双工设定。
条件2: switch(交换机)支持IEEE 802.3ad Dynamic link aggregation。
条件3:多数switch(交换机)需要经过特定配置才能支持802.3ad模式。
第六种模式: mod=5,即:(balance-tlb) Adaptive transmit load balancing (适配器传输负载均衡)
特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
该模式的必要条件:
ethtoo1支持获取每个slave的速率
第七种模式: mod=6,即:(balance-alb) Adaptive load balancing (适配器适应性负载均衡)
特点: 该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance,r1b),而且不需要任何switch(交换机)的支持
root@ubuntu1804:~# vim /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
...
网卡绑定用于提供网卡接口几余以及高可用和端口聚合功能,桥接网卡再给需要桥接设备的服务使用
root@ubuntu1804:~# cat /etc/netplan/01-netcfg.yam1
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
dhcp6: no
ethl:
dhcp4: no
dhcp6: no
bonds :
bond0 :
intorfaces:
...
可以实现网卡的多组绑定,比如: eth0,eth1绑定至bond0,eth2和eth3绑定bond1
root@ubuntu1804:~#cat
/etc/netplan/01-netcfg.yam1
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets :
eth0:
dhcp4: no
dhcp6: no
eth1:
dhcp4: no
dhcp6: no
eth2:
dhcp4: no
dhcp6: no
eth3:
dhcp4: no
dhcp6: no
bonds :
bond0 :
interfaces:
- eth0
- eth1
addresses: [10.0.0.18/16]
gateway4: 10.0.0.1
nameservers :
addresses: [223.6.6.6,223.5.5.5]
parameters:
mode: active-backup
mii-monitor-interval: 100
bond1:
interfaces :
- eth2
- eth3
addresses: [10.10.0.18/16]
parameters:
mode: active-backup
mii-monitor-interval: 100
routes :
- to: 10.20.0.0/16
via: 10.10.0.1
- to: 10.30.0.0/16
via: 10.10.0.1
- to: 10.40.0.0/16
via: 10.10.0.1
- to: 10.50.0.0/16
via: 10.10.0.1
root@ubuntu1804:~# netplan apply
root@ubuntu1804:~# ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 10.0.0.18 netmask 255.255.0.0 broadcast 10.0.255.255
inet6 fe80::2820:b7ff:fea8:5837 prefixlen 64 scopeid 0x20<link>
ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
RX packets 273 bytes 23591 (23.5 KB)
RX errors 0 dropped O overruns 0 frame 0
TX packets 364 bytes 42455 (42.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
bond1: fTags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 10.10.0.18 netmask 255.255.0.0 broadcast 10.10.255.255
inet6 fe80::c035:83ff:feal:abbb prefixlen 64 scopeid 0x20<link>
ether c2:35:83:al:ab:bb txqueuelen 1000 (Ethernet)
RX packets 8 bytes 480 (480.0 B)
RX errors 0 dropped O overruns 0 frame 0
Tx packets 10 bytes 796 (796.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: fTags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 2a:20:b7:a8 :58 :37 txqueueTen 1000 (Ethernet)
RX packets 4 bytes 240 (240.0 B)
RX errors 0 dropped O overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: fTags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
RX packets 269 bytes 23351 (23.3 KB)
RX errors 0 dropped O overruns 0 frame 0
TX packets 364 bytes 42455 (42.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth2: fTags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether c2:35:83:al:ab:bb txqueuelen 1000 (Ethernet)
RX packets 4 bytes 240 (240.0 B)
RX errors 0 dropped O overruns O frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth3: fTags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether c2:35:83:al:ab:bb txqueuelen 1000 (Ethernet)
RX packets 4 bytes 240 (240.0 B)
RX errors 0 dropped o overruns 0 frame 0
TX packets 10 bytes 796 (796.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: fags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
1oop txqueuelen 1000 (Loca1 Loopback)
RX packets 120 bytes 8344 (8.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 120 bytes 8344 (8.3 KB)
Tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@ubuntu1804:~# route -n
root@ubuntu1804:~# cat /proc/net/bonding/bond0
Ethernet channe1 Bonding Driver: v3.7.1 (Apri1 27,2011)
两组网卡先绑定,再桥接
eth3:
dhcp4: no
dhcp6: no
bonds :
bond0 :
interfaces:
- eth0
- eth1
addresses: [10.0.0.18/16]
gateway4: 10.0.0.1
nameservers :
addresses: [223.6.6.6,223.5.5.5]
parameters:
mode: active-backup
mii-monitor-interval: 100
bond1:
interfaces :
- eth2
- eth3
addresses: [10.10.0.18/16]
parameters:
mode: active-backup
mii-monitor-interval: 100
routes :
- to: 10.20.0.0/16
via: 10.10.0.1
- to: 10.30.0.0/16
via: 10.10.0.1
- to: 10.40.0.0/16
via: 10.10.0.1
- to: 10.50.0.0/16
via: 10.10.0.1
root@ubuntu1804:~# netplan apply
root@ubuntu1804:~# ifconfig
bond0: flags=5187
inet 10.0.0.18 netmask 255.255.0.0 broadcast 10.0.255.255
inet6 fe80::2820:b7ff:fea8:5837 prefixlen 64 scopeid 0x20
ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
RX packets 273 bytes 23591 (23.5 KB)
RX errors 0 dropped O overruns 0 frame 0
TX packets 364 bytes 42455 (42.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
bond1: fTags=5187
inet 10.10.0.18 netmask 255.255.0.0 broadcast 10.10.255.255
inet6 fe80::c035:83ff:feal:abbb prefixlen 64 scopeid 0x20
ether c2:35:83:albb txqueuelen 1000 (Ethernet)
RX packets 8 bytes 480 (480.0 B)
RX errors 0 dropped O overruns 0 frame 0
Tx packets 10 bytes 796 (796.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: fTags=6211
ether 2a:20:b7:a8 :58 :37 txqueueTen 1000 (Ethernet)
RX packets 4 bytes 240 (240.0 B)
RX errors 0 dropped O overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: fTags=6211
ether 2a:20:b7:a8:58:37 txqueuelen 1000 (Ethernet)
RX packets 269 bytes 23351 (23.3 KB)
RX errors 0 dropped O overruns 0 frame 0
TX packets 364 bytes 42455 (42.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth2: fTags=6211
ether c2:35:83:albb txqueuelen 1000 (Ethernet)
RX packets 4 bytes 240 (240.0 B)
RX errors 0 dropped O overruns O frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth3: fTags=6211
ether c2:35:83:albb txqueuelen 1000 (Ethernet)
RX packets 4 bytes 240 (240.0 B)
RX errors 0 dropped o overruns 0 frame 0
TX packets 10 bytes 796 (796.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: fags=73
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
1oop txqueuelen 1000 (Loca1 Loopback)
RX packets 120 bytes 8344 (8.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 120 bytes 8344 (8.3 KB)
Tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@ubuntu1804:~# route -n
root@ubuntu1804:~# cat /proc/net/bonding/bond0
Ethernet channe1 Bonding Driver: v3.7.1 (Apri1 27,2011)
### 5.3.9 网卡多组绑定+多组桥接
两组网卡先绑定,再桥接