日常更新笔记+不再推送日记

This commit is contained in:
2026-06-27 22:29:38 +08:00
parent 0292147403
commit a7132b4779
21 changed files with 1243 additions and 37 deletions
@@ -0,0 +1,21 @@
## 概念:数据结构
数据结构是计算机村粗知足的方式(规则)
雷也可以算作为一种数据结构
简单理解就是人定义的存储数据和表示数据之间关系的规则
常用的数据结构
- 数组、栈、队列、链表、树、图、堆、散列表
### 线性表
线性表是一种数据结构,是由N个具有先沟通呢特性的数据元素的有序序列
比如数组、ArraryList、Stack、Queue、链表等
##### 顺序存储
数组、stack、queue、list、arraylist都是顺序存储
用一组地址连续的存储单元依次存储线性表的各个元素
#### 链式存储
单向列表、双向列表、循环列表都是链式存储
在存储单元中的存储地址不一定连续,但是通过
+11 -10
View File
@@ -37,15 +37,16 @@
5. [[泛型]]和[[泛型约束]]
6. [[List]]
7. [[Dictionary]]
8. LinkedList
9. 泛型栈和队列
10. 委托事件
11. 匿名函数
12. lambda
13. List排序
14. 协变逆变
15. 多线程
16. 预处理器
17. 反射
8. 顺序存储和链式存储
9. LinkedList
10. 泛型栈和队列
11. 委托事件
12. 匿名函数
13. lambda
14. List排序
15. 协变逆变
16. 多线程
17. 预处理器
18. 反射
# 杂记
1. [[命名法]]
+13
View File
@@ -0,0 +1,13 @@
# getent passwd
作用:查看有哪些用户
共有7份信息:
用户名:密码(X):用户ID:组ID:描述信息:HOME目录:执行终端(默认bash)
# getent group
作用:查看有哪些用户组
共有3份信息:
组名:组认证(显示为X):组ID
@@ -0,0 +1,5 @@
执行条件:root权限
groupadd \[用户组名]
groupdel \[用户组名]
@@ -0,0 +1,20 @@
# 创建用户:useradd \[-g -d] \[用户名]
参数:
- -g:指定用户的组,不指定会创建同名组并加入,如果有同名组必须用-g
- -d:指定用户的home路径,默认在`/home/用户名`
# 删除用户:userdel \[-r] \[用户名]
参数:
- -r:删除用户的HOME目录,附带即可无需指定path
# 查询用户所属组:id \[用户名]
# 修改用户:usermod \[-aG] \[用户组] \[用户名]
作用:将指定的用户加入指定的用户组中
参数:
- aG
@@ -0,0 +1,36 @@
## ls -l的信息
### 第一组:权限控制信息
- 样式:drwxr-xr-x
- 作用:描述权限控制信息
详解:
- 总共分为10个槽位
- 第1槽位:表示信息状态
- 状态:-或d或l
- -:表示文件
- d:表示文件夹
- l:表示软连接
- 2至4三个槽位:表示所属用户权限
- 5至7三个槽位:表示所属用户组权限
- 8至10三个槽位:表示其他用户权限
- 后面三组三个权限细节:
- 状态:r、w、x或-
- 第一个槽:r或-,读权限
- 第二个槽:w或-,写权限
- 第三个槽:x或-,执行权限
### 第二组:硬链接数
- 样式:单个数字
- 作用:表述文件或目录的硬链接数
### 第三组:用户名
- 样式:\[用户名]
### 第四组:用户组
- 样式:\[用户组]
## 常用场景细节
###### 1.删除文件需要什么权限,w吗?
不!删除文件需要你有被删除文件父文件夹的w和x权限
###### 2.文件夹没有读权限,能进去查看吗?
不相干,可以总结为:rx能cd能ls,单x能进去无法ls,单r进去不也ls不了
想进去文件夹,需要有文件夹的执行x权限(依赖cd)
想查看文件夹(ls),需要有文件夹的读rx权限(ls需要x执行权限进去,没有x也不能r)
@@ -0,0 +1,24 @@
Linux支持:
- 配置多个用户
- 配置多个用户组
- 一个用户加入多个用户组
Linux的权限管控有两个级别,分别是:
- 针对用户的权限控制
- 针对用户组的权限控制
针对某个文件,可以控制用户的权限,也可以控制用户组的权限
# 用户组
相关命令:(root权限)
- 创建:[[groupadd&groupdel|groupadd]]
- 删除:[[groupadd&groupdel|groupdel]]
# 用户
相关命令:
- [[useradd&userdel&id&usermod|useradd]]
- [[useradd&userdel&id&usermod|userdel]]
- [[useradd&userdel&id&usermod|id]]
- [[useradd&userdel&id&usermod|usermod]]
# 查询用户/用户组:
- [[getent]] passwd
- [[getent]] group
@@ -0,0 +1,170 @@
# DHCP Snooping
## DHCP Snooping 是什么
DHCP Snooping 是一种二层安全技术,用来防止非法 DHCP 服务器向终端错误分配地址。
可以简单理解为:
交换机帮我们“盯住 DHCP 报文”,只允许可信任的 DHCP 服务器方向终端分配地址,其他不可信端口发来的 DHCP 服务器报文会被拦截。
## 作用
DHCP Snooping 的核心作用是:
- 防止私接 DHCP 服务器
- 防止终端拿到错误的 IP、网关、DNS
- 建立 DHCP Snooping 绑定表
- 为后续安全特性提供基础,例如动态 ARP 防护等
## 信任端口与非信任端口
### 信任端口 Trusted Port
通常连接:
- 正常 DHCP 服务器
- 上联交换机
- 汇聚层或核心层方向
信任端口允许转发 DHCP 服务器发出的报文。
### 非信任端口 Untrusted Port
通常连接:
- PC
- 打印机
- 普通终端
- 接入层用户口
非信任端口默认不应该发送 DHCP 服务器报文。如果发送,交换机会进行拦截。
## 工作思路
DHCP Snooping 的常见工作过程可以理解为:
1. 客户端从非信任端口发出 DHCP Discover
2. 报文可以正常向上转发
3. 真实 DHCP 服务器从信任端口返回 DHCP Offer / ACK
4. 交换机允许这些来自信任端口的服务器报文下发给客户端
5. 交换机根据合法分配结果生成绑定表,记录 IP、MAC、VLAN、接口等信息
## 典型应用场景
- 接入层用户网络
- 宿舍网
- 办公网
- 访客网络
这类场景里,最怕的是用户私接一个无线路由器或小型 DHCP 服务设备,导致别人拿到错误地址。
## 基本配置思路
DHCP Snooping 的常见配置思路是:
1. 全局启用 DHCP Snooping
2. 在相关 VLAN 上启用 DHCP Snooping
3. 把上联口或服务器口设为信任端口
4. 用户接入口保持为非信任端口
5. 按需要限制 DHCP 报文速率
6. 检查 DHCP Snooping 绑定表是否正常生成
## 常见问题
### 1. 为什么客户端获取不到地址
常见原因有:
- 没有在对应 VLAN 启用 DHCP Snooping
- DHCP 服务器所在接口没设为信任端口
- 报文速率限制过严
- 上联链路或中继配置本身有问题
### 2. 为什么要区分信任端口和非信任端口
因为 DHCP Snooping 的核心就是:
- 允许可信来源下发地址
- 拦截不可信来源冒充 DHCP 服务器
### 3. DHCP Snooping 能不能防所有 DHCP 问题
不能。
它主要防的是“非法 DHCP 服务器”问题,不是所有 DHCP 故障都能靠它解决。
## 一句话理解
- **DHCP Snooping 就是“只信任指定接口发来的 DHCP 服务器报文”**
- **它的重点是防止假 DHCP 服务器捣乱**
## 常见厂商命令
### 华为
不同型号和版本命令可能略有差异,常见思路如下:
全局启用 DHCP
```bash
dhcp enable
```
启用 DHCP Snooping
```bash
dhcp snooping enable
```
在接口下配置为信任端口:
```bash
interface GigabitEthernet 0/0/24
dhcp snooping trusted
```
查看配置:
```bash
display current-configuration
```
### 思科 Cisco
全局启用 DHCP Snooping
```bash
ip dhcp snooping
```
在指定 VLAN 启用:
```bash
ip dhcp snooping vlan 10
```
把上联口设为信任端口:
```bash
interface gigabitEthernet 0/24
ip dhcp snooping trust
```
限制 DHCP 报文速率:
```bash
ip dhcp snooping limit rate 20
```
查看 DHCP Snooping 状态:
```bash
show ip dhcp snooping
```
查看绑定表:
```bash
show ip dhcp snooping binding
```
## 复习时容易写错的点
- DHCP Snooping 不是 DHCP 服务本身,而是 DHCP 的安全控制技术
- 重点不是“禁止 DHCP”,而是“只允许可信来源发放地址”
- 用户接入口通常是非信任端口,上联口或服务器口通常是信任端口
- DHCP Snooping 生成的绑定表很重要,后续很多安全功能会用到它
@@ -1,7 +1,198 @@
标题三个都是属于生成树协议
实际生产中无需太关心生成树的算法,知道效果即可
厂商默认的设备在机器芯片算力足够的情况下都是开启的
# STP、RSTP、MSTP
主要是作用是防止回环/广播风暴,当遇到链路某个节点疯狂转发相同包时,对包的转发请求进行丢弃
## 作用
配置流程大概是开启相关生成树协议,指定边缘端口edge和根端口root,保护根端口
STP、RSTP、MSTP 都属于生成树协议,核心作用是:
- 防止二层网络中因为冗余链路产生环路
- 避免广播风暴
- 避免 MAC 地址表震荡
- 在保证无环的前提下保留链路冗余
可以简单理解为:
二层交换网络为了防止单点故障,常常会接入冗余链路,但冗余链路一多,就可能形成环路。生成树协议会从逻辑上阻塞部分端口,让网络形成一棵无环的树;当主链路故障时,再让备用链路接管转发。
## 基本概念
### 1. 根桥 Root Bridge
生成树会先选出一台交换机作为根桥,整张网络的拓扑计算都围绕根桥进行。
### 2. 根端口 Root Port
每台非根桥交换机都会选出一个到根桥路径最优的端口,称为根端口。
### 3. 指定端口 Designated Port
每个网段都会选出一个负责向该网段转发数据的端口,称为指定端口。
### 4. 阻塞端口
如果某个端口既不是根端口,也不是指定端口,通常就会被阻塞,从而避免环路。
## STP 的工作思路
STP 的大致流程可以概括为:
1. 先选举根桥
2. 每台非根桥交换机选举根端口
3. 每个网段选举指定端口
4. 其余不参与转发的端口进入阻塞状态
这样就能在物理上有环、逻辑上无环。
## STP、RSTP、MSTP 的区别
### STP
STP 是最基础的生成树协议,优点是原理清晰,缺点是收敛速度较慢。
### RSTP
RSTP 是快速生成树协议,相比 STP,收敛速度更快,链路切换也更快,更适合实际网络使用。
### MSTP
MSTP 是多生成树协议,可以把不同 VLAN 映射到不同生成树实例,让不同业务走不同链路,从而更好地利用冗余带宽。
可以简单记成:
- STP:基础版
- RSTP:快速版
- MSTP:可按实例划分、适合多 VLAN 场景
## 常见理解误区
### 1. 生成树不是“丢弃重复包”
生成树的重点不是发现某个包重复后再丢弃,而是提前通过阻塞端口避免二层环路形成。
### 2. 不是“手工指定根端口”
实际配置里,一般是通过调整桥优先级来影响根桥选举,通过调整路径开销等方式影响端口角色,而不是直接简单写成“手工指定根端口”。
### 3. 不是算力够就默认都开
不同厂商、不同型号、不同系统版本的默认行为可能不完全一样。复习时更稳妥的说法是:
- 生成树功能在交换网络中非常常见
- 是否默认开启,要以具体厂商设备为准
## 常见保护特性
### 边缘端口 Edge Port
连接终端主机的端口一般可以配置为边缘端口,这样端口能够更快进入转发状态。
### 根保护 Root Protection
用于防止接入层或下游设备错误地抢占根桥位置,保证预期的根桥不被替换。
### BPDU 保护
一般用于边缘端口。当边缘端口意外收到 BPDU 时,设备可以采取保护动作,防止网络拓扑异常。
### 环路保护 Loop Protection
用于降低某些异常场景下端口错误切换带来的风险。
## 一句话理解
- **生成树的本质是“阻塞冗余链路中的一部分端口,避免二层环路”**
- **RSTP 比 STP 收敛更快**
- **MSTP 适合多 VLAN 场景**
## 常见厂商命令
### 华为
查看生成树状态:
```bash
display stp
```
查看某接口生成树状态:
```bash
display stp interface GigabitEthernet 0/0/1
```
查看 MSTP 配置:
```bash
display stp region-configuration
```
开启 STP
```bash
stp enable
```
把交换机优先级调低,提升其成为根桥的概率:
```bash
stp priority 4096
```
把接口配置为边缘端口:
```bash
stp edged-port enable
```
配置根保护:
```bash
stp root-protection
```
### 思科 Cisco
查看生成树状态:
```bash
show spanning-tree
```
查看某 VLAN 的生成树信息:
```bash
show spanning-tree vlan 10
```
查看某接口生成树状态:
```bash
show spanning-tree interface gigabitEthernet 0/1
```
启用快速生成树:
```bash
spanning-tree mode rapid-pvst
```
把交换机设为根桥优先:
```bash
spanning-tree vlan 10 root primary
```
把接入口设为边缘端口:
```bash
spanning-tree portfast
```
启用 BPDU Guard
```bash
spanning-tree bpduguard enable
```
## 复习时容易写错的点
- 生成树的核心是“防环”,不是“包重复了再丢弃”
- 根桥是选举出来的,根端口和指定端口也是计算出来的
- MSTP 不是单纯“更高级的 STP”,它的重要特点是支持多实例
- 是否默认开启生成树,要看具体厂商和设备型号,不要写得太绝对
@@ -1,9 +1,180 @@
这是VLAN的三个配置
Access:通常对应终端例如PC、打印机
Trunk:通常对应交换机之间的链路
Hybrid:同时兼顾Access和Trunk的功能,应用场景较少
# Access、Trunk、Hybrid
关于VLAN TAG
Access:接收时根据接口配置打VLAN TAG,发送时剥离VLAN TAG
Trunk:对于没有VLAN TAG的,打上Native Vlan TAG,对于不允许放行的,接收或发送时丢弃
Hybrid:自定义哪些VLAN打TAG,哪些VLAN不打TAG
## 三种接口模式的作用
这三种模式本质上是交换机接口在 VLAN 场景下的工作方式。
它们分别解决的问题是:
- Access:接口主要属于一个 VLAN,常用于接终端
- Trunk:接口可以传递多个 VLAN,常用于交换机之间互联
- Hybrid:接口也可以传递多个 VLAN,并且能灵活控制哪些报文带 Tag、哪些不带 Tag
## Access
Access 接口通常连接:
- PC
- 打印机
- 摄像头
- 普通服务器接入口
特点:
- 一般只属于一个 VLAN
- 接收无 Tag 报文时,会把它归入该接口所属 VLAN
- 发送给终端时,通常发送无 Tag 报文
可以简单理解为:
Access 口主要是“给普通终端用的端口”。
## Trunk
Trunk 接口通常连接:
- 交换机与交换机
- 交换机与路由器
- 交换机与三层交换机
- 交换机与需要承载多个 VLAN 的设备
特点:
- 可以允许多个 VLAN 通过
- 发送报文时,通常会保留 VLAN Tag
- 对于某些厂商设备,特定 VLAN 的报文可以不带 Tag 发送,这通常与缺省 VLAN 或 Native VLAN 相关
可以简单理解为:
Trunk 口主要是“在一条链路上同时传多个 VLAN 的流量”。
## Hybrid
Hybrid 接口常见于华为等厂商设备。
特点:
- 也可以通过多个 VLAN
- 可以灵活指定哪些 VLAN 报文带 Tag,哪些 VLAN 报文不带 Tag
- 功能比 Access 和 Trunk 更灵活
应用场景:
- 一些需要同时承载多 VLAN,又希望部分流量以无 Tag 形式收发的场景
## Tag 的基本理解
VLAN Tag 可以理解为二层帧里携带的 VLAN 标识信息。
它的作用是让交换设备知道:
- 这个报文属于哪个 VLAN
## 三种模式下对 Tag 的常见处理
### Access
- 接收无 Tag 报文:归入接口所属 VLAN
- 发送报文给终端:通常去掉 Tag 再发送
### Trunk
- 可以传递多个 VLAN 的流量
- 一般情况下,允许通过的 VLAN 报文会被转发
- 是否带 Tag 发送,要结合厂商实现和缺省 VLAN/Native VLAN 的规则理解
### Hybrid
- 可同时处理多个 VLAN
- 可以手工指定某些 VLAN 报文带 Tag,某些 VLAN 报文不带 Tag
## PVID 的理解
PVID 可以理解为接口收到 **无 Tag 报文** 时,默认把它划入哪个 VLAN。
复习时常见理解:
- Access 口收到无 Tag 报文,通常归入自己的 PVID
- Trunk 口收到无 Tag 报文,也会按 PVID 处理
- Hybrid 口收到无 Tag 报文,同样与 PVID 有关
## 一句话总结
- **Access:一般给终端,一个口通常进一个 VLAN**
- **Trunk:一条链路传多个 VLAN**
- **Hybrid:更灵活,可自定义 Tag 与 Untag 行为**
## 常见厂商命令
### 华为
进入接口:
```bash
interface GigabitEthernet 0/0/1
```
配置 Access
```bash
port link-type access
port default vlan 10
```
配置 Trunk
```bash
port link-type trunk
port trunk allow-pass vlan 10 20 30
```
配置 Hybrid
```bash
port link-type hybrid
port hybrid tagged vlan 10 20
port hybrid untagged vlan 30
```
查看接口 VLAN 信息:
```bash
display port vlan
```
### 思科 Cisco
进入接口:
```bash
interface gigabitEthernet 0/1
```
配置 Access
```bash
switchport mode access
switchport access vlan 10
```
配置 Trunk
```bash
switchport mode trunk
switchport trunk allowed vlan 10,20,30
```
配置 Native VLAN
```bash
switchport trunk native vlan 10
```
查看 VLAN
```bash
show vlan brief
```
查看 Trunk
```bash
show interfaces trunk
```
## 复习时容易写错的点
- Access、Trunk、Hybrid 不是“VLAN 的三个协议”,而是接口的三种常见工作模式
- VLAN Tag 的处理不能写得太绝对,尤其是 Trunk 口是否带 Tag,最好结合厂商规则理解
- Hybrid 在华为设备里比较常见,Cisco 常见讨论里更多是 Access 和 Trunk
@@ -1,3 +1,110 @@
Vlan协议是最常用的协议
主要用来隔离业务逻辑或减少广播区域的作用
用VLAN号来区别不同的区域
# VLAN
## VLAN 是什么
VLAN 不是严格意义上的“一个协议”,更准确地说,它是一种 **二层网络划分技术**
VLAN 的核心作用是:
- 划分广播域
- 隔离不同业务
- 提高网络管理灵活性
- 降低广播流量对整网的影响
可以简单理解为:
即使多台主机接在同一台交换机上,也可以通过划分不同 VLAN,把它们逻辑上分到不同网络中。这样不同 VLAN 之间默认不能直接二层通信。
## 为什么要用 VLAN
如果交换机不划分 VLAN,那么默认情况下,同一交换网络中的广播报文会在较大范围内传播。
使用 VLAN 后,可以带来这些好处:
- 不同部门或业务可以隔离
- 广播域变小,广播报文影响范围更小
- 网络结构更清晰
- 后续做三层网关、ACL、策略控制时更方便
## VLAN 的基本特点
- 每个 VLAN 用一个 VLAN ID 来区分
- 不同 VLAN 属于不同的广播域
- 同一 VLAN 内的主机可以直接二层通信
- 不同 VLAN 之间默认不能直接通信
- 如果不同 VLAN 之间要通信,通常需要通过三层设备或 VLANIF 接口
## 默认 VLAN
很多交换机出厂后都会有默认 VLAN,常见是 VLAN 1。
复习时要注意:
- 默认 VLAN 的存在很常见
- 但生产环境中不建议过度依赖默认 VLAN
- 不同厂商设备的默认行为和最佳实践可能有差异
## VLAN 的通信规律
### 同一 VLAN 内
主机可以进行二层通信。
### 不同 VLAN 之间
默认不能直接二层通信。
如果要通信,需要借助:
- 路由器
- 三层交换机
- VLANIF 接口
## 一句话理解
- **VLAN 的本质是“把一个物理交换网络逻辑划分成多个广播域”**
- **同 VLAN 可二层通信,不同 VLAN 默认不能直接通信**
## 常见厂商命令
### 华为
创建 VLAN
```bash
vlan 10
```
查看 VLAN
```bash
display vlan
```
查看 VLAN 10 详细信息:
```bash
display vlan 10
```
### 思科 Cisco
创建 VLAN
```bash
vlan 10
```
查看 VLAN
```bash
show vlan brief
```
查看 Trunk 相关信息:
```bash
show interfaces trunk
```
## 复习时容易写错的点
- VLAN 更准确地说是一种二层划分技术,不建议直接写成“VLAN 协议”
- VLAN 的核心作用是划分广播域,不只是“隔离业务逻辑”
- 不同 VLAN 之间默认不能通信,如果要互通,需要三层转发
@@ -0,0 +1,125 @@
# 端口隔离
## 端口隔离是什么
端口隔离是一种二层隔离技术,用来限制同一交换机上某些端口之间的直接通信。
可以简单理解为:
这些主机虽然接在同一台交换机上,甚至可能属于同一个 VLAN,但彼此之间不能直接互访,只能按照既定方向访问网关、上联口或服务器。
## 作用
端口隔离的核心作用是:
- 防止同一接入网内终端之间互相访问
- 提高接入层安全性
- 减少内网横向传播风险
- 适合“用户彼此隔离,但都要能上网”的场景
## 典型应用场景
- 宿舍网
- 酒店网络
- 访客网络
- 同一楼层大量接入终端的园区网络
这类场景的常见需求是:
- 终端之间不要互通
- 终端可以访问默认网关
- 终端可以访问上联网络或互联网
## 与 VLAN 的区别
VLAN 和端口隔离都能起到一定的隔离作用,但思路不同。
### VLAN
- 主要用于划分广播域
- 不同 VLAN 默认不能直接二层通信
- 更适合从网络逻辑分区的角度做隔离
### 端口隔离
- 主要用于限制端口之间的互访
- 常常发生在同一个 VLAN 内
- 更适合做“同网段用户彼此不能访问”的控制
一句话理解:
- **VLAN 更像是“分小区”**
- **端口隔离更像是“同小区里住户彼此不开门”**
## 工作思路
端口隔离的常见思路是:
1. 把多个接入口加入同一个隔离组
2. 同组端口之间禁止二层互通
3. 上联口或网关口通常不做同样限制
4. 终端仍可通过上联口访问外部网络
## 常见问题
### 1. 端口隔离后是不是完全不能通信
不是。
一般是“同组接入口之间不能直接互通”,但到上联口、网关口的通信通常仍然允许,否则用户也无法正常上网。
### 2. 端口隔离能不能代替 VLAN
不能完全代替。
VLAN 解决的是广播域划分问题,端口隔离解决的是端口互访限制问题,两者作用层面不同。
### 3. 端口隔离能不能代替 ACL
也不能完全代替。
端口隔离偏二层控制,ACL 更偏三层、四层的精细匹配控制。
## 一句话理解
- **端口隔离的重点是“同一接入网络里的终端彼此不能直接访问”**
- **它常与 VLAN 配合使用,而不是互相替代**
## 常见厂商命令
### 华为
常见写法:
```bash
interface GigabitEthernet 0/0/1
port-isolate enable group 1
```
把多个接入口加入同一隔离组后,这些端口之间通常不能直接互访。
查看配置:
```bash
display current-configuration interface GigabitEthernet 0/0/1
```
### 思科 Cisco
Cisco 常见对应思路是使用 Protected Port
```bash
interface gigabitEthernet 0/1
switchport mode access
switchport protected
```
查看接口交换属性:
```bash
show interfaces switchport
```
## 复习时容易写错的点
- 端口隔离不等于 VLAN
- 端口隔离常常发生在同一 VLAN 内
- 端口隔离不是“全断”,通常仍允许终端访问上联口或网关
- Cisco 常见叫法更多是 `protected port`,华为常见直接讲 `端口隔离`
@@ -1,3 +1,183 @@
通常用于链路带宽不足够的时候
# 聚合链路
可以将两条物理链路在逻辑上汇聚成一条逻辑链路,起到增大带宽/提高可靠性的作用
## 聚合链路是什么
聚合链路也常叫 **链路聚合**,是指把多条物理链路在逻辑上捆绑成一条链路来使用。
它的核心作用是:
- 提高链路带宽
- 提高链路可靠性
- 在一定程度上实现负载分担
可以简单理解为:
原来一条链路承担业务,现在把多条物理链路组合成一个逻辑接口,对上层看来就像一条更大的链路。
## 为什么要用聚合链路
如果只有一条上联链路,可能会遇到两个问题:
- 带宽不够
- 单链路故障后业务中断
使用聚合链路后:
- 多条链路可以一起承载流量
- 某一条成员链路故障时,其余链路仍可继续工作
- 网络可用性更高
## 基本特点
- 聚合链路由多条物理接口组成
- 对外表现为一个逻辑接口
- 成员接口需要满足一定的一致性要求
- 流量通常不会对单个会话做逐包乱序转发,而是按照一定规则分担到不同成员链路
## 聚合链路的常见方式
### 1. 手工聚合
手工把多个接口加入同一个聚合组,适合简单场景。
### 2. LACP
LACP 是链路聚合控制协议,用于动态协商链路聚合。
它的特点是:
- 自动协商成员链路
- 有助于提高配置一致性和稳定性
- 在实际网络中很常见
## 聚合链路的作用
### 1. 增大带宽
多条物理链路共同承载流量,整体可用带宽提升。
### 2. 提高可靠性
某条物理链路故障时,只要还有其他成员链路正常,逻辑链路一般还能继续工作。
### 3. 简化管理
多条物理链路对外看成一个逻辑接口,配置和管理更统一。
## 常见理解误区
### 1. 聚合后单个会话带宽一定翻倍
不一定。
链路聚合通常是基于源 MAC、目的 MAC、源 IP、目的 IP、端口号等字段做负载分担。多个会话整体吞吐量可能增加,但单个会话未必能把所有成员链路带宽都用满。
### 2. 任意接口都能直接聚合
不行。
成员接口通常要满足一些基本一致性要求,例如:
- 接口速率一致
- 双工模式一致
- 二层属性一致
- 允许通过的 VLAN 等配置一致
### 3. 聚合链路能完全替代生成树
不能这么理解。
聚合链路可以减少并行链路带来的管理复杂度,但二层冗余网络里仍可能需要生成树参与整体防环。
## 聚合链路与 VLAN、STP 的关系
### 与 VLAN 的关系
聚合链路本身可以作为 Access、Trunk 或其他类型逻辑接口使用,常见于承载多个 VLAN 的上联链路。
### 与 STP 的关系
如果多条物理链路已经成功加入同一个聚合组,那么生成树通常把这组链路当作一个逻辑链路来看待,而不是把每条成员链路单独看待。
## 一句话理解
- **链路聚合就是“多条物理链路合成一条逻辑链路”**
- **主要目的是提带宽、保可靠**
- **LACP 是常见的动态聚合方式**
## 常见厂商命令
### 华为
创建 Eth-Trunk
```bash
interface Eth-Trunk 1
```
把物理接口加入聚合组:
```bash
interface GigabitEthernet 0/0/1
eth-trunk 1
```
查看聚合链路信息:
```bash
display eth-trunk 1
```
查看聚合摘要:
```bash
display trunkmembership eth-trunk 1
```
配置 LACP 模式:
```bash
interface Eth-Trunk 1
mode lacp-static
```
### 思科 Cisco
创建聚合口:
```bash
interface port-channel 1
```
把接口加入聚合组:
```bash
interface range gigabitEthernet 0/1 - 2
channel-group 1 mode active
```
查看 EtherChannel 摘要:
```bash
show etherchannel summary
```
查看聚合口信息:
```bash
show interfaces port-channel 1
```
常见模式:
```bash
channel-group 1 mode on
channel-group 1 mode active
channel-group 1 mode passive
```
其中常见理解:
- `on`:手工聚合
- `active/passive`LACP
## 复习时容易写错的点
- 聚合链路不只是“带宽不够时才用”,它还有提高可靠性的作用
- 聚合后看到的是逻辑接口,不是多条链路各自独立工作
- 单流量不一定能跑满所有成员链路
- 成员接口配置必须匹配,否则可能无法成功聚合
@@ -0,0 +1,136 @@
# 风暴抑制
## 风暴抑制是什么
风暴抑制是一种二层流量控制技术,用来限制某类异常报文在接口上的速率,防止它们过多占用带宽和设备资源。
它不是“完全不让报文通过”,而是:
- 当某类流量超过阈值时进行限制
- 让网络不至于因为异常流量被拖垮
## 作用
风暴抑制的核心作用是:
- 抑制广播风暴
- 抑制组播风暴
- 抑制未知单播风暴
- 保护交换机 CPU、接口带宽和整网稳定性
## 广播风暴、组播风暴、未知单播风暴
### 广播风暴
网络中广播报文过多,导致大量端口都被广播流量占满。
常见原因:
- 二层环路
- 主机异常发送广播
- 某些协议报文大量泛滥
### 组播风暴
组播报文过多,影响正常业务转发。
### 未知单播风暴
交换机查不到目的 MAC 时,会对报文进行泛洪。如果这类报文太多,也会造成资源浪费。
## 常见触发场景
- 二层网络出现环路
- 接入口接入异常设备
- 病毒、木马或异常程序不断发包
- 主机网卡故障
- 接口配置错误导致报文泛洪
## 基本配置思路
风暴抑制的常见思路是:
1. 识别要限制的流量类型
2. 在接口上设置阈值
3. 当流量超过阈值时进行丢弃、限速或保护动作
4. 再结合生成树、端口安全等手段一起做整体防护
## 常见问题
### 1. 风暴抑制能不能解决环路根因
不能。
风暴抑制更多是在“出问题时减轻损害”,真正解决二层环路,还是要靠生成树等机制。
### 2. 阈值是不是越小越安全
不是。
阈值过小可能会误伤正常业务,导致广播、组播等合法流量也被限制。
### 3. 为什么要限制未知单播
因为未知单播会被泛洪。如果大量出现,也会像广播一样占用交换网络资源。
## 一句话理解
- **风暴抑制的本质是“限制异常二层流量速率,防止网络被打满”**
- **它是缓解手段,不是根治环路的核心手段**
## 常见厂商命令
### 华为
不同型号和版本命令可能略有差异,常见思路是在接口下限制广播、组播、未知单播流量。
常见写法示例:
```bash
interface GigabitEthernet 0/0/1
storm-constrain broadcast cir 1000
storm-constrain multicast cir 1000
storm-constrain unknown-unicast cir 1000
```
查看接口配置:
```bash
display current-configuration interface GigabitEthernet 0/0/1
```
### 思科 Cisco
限制广播流量:
```bash
interface gigabitEthernet 0/1
storm-control broadcast level 5.00
```
限制组播流量:
```bash
storm-control multicast level 5.00
```
限制未知单播流量:
```bash
storm-control unicast level 5.00
```
超过阈值后的动作:
```bash
storm-control action shutdown
```
查看配置:
```bash
show storm-control
```
## 复习时容易写错的点
- 风暴抑制不是彻底解决环路的方法
- 它限制的是报文速率,不是简单“把这类报文全部禁掉”
- 除了广播风暴,还可能有组播风暴和未知单播风暴
- 阈值设置过低也可能影响正常业务