From a7132b477925bc2d29598885e6d5c80edd3398e4 Mon Sep 17 00:00:00 2001 From: Kister Hakusan <2753888203@qq.com> Date: Sat, 27 Jun 2026 22:29:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=B8=B8=E6=9B=B4=E6=96=B0=E7=AC=94?= =?UTF-8?q?=E8=AE=B0+=E4=B8=8D=E5=86=8D=E6=8E=A8=E9=80=81=E6=97=A5?= =?UTF-8?q?=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 待办/CSharp重学.md | 7 +- 待办/日常.md | 15 +- 模板文件夹/每日计划.md | 1 + 笔记/CSharp/进阶/顺序存储和链式存储.md | 21 ++ 笔记/CSharp笔记汇总.md | 21 +- 笔记/Linux/基础指令/getent.md | 13 ++ 笔记/Linux/基础指令/groupadd&groupdel.md | 5 + .../基础指令/useradd&userdel&id&usermod.md | 20 ++ .../修改权限控制信息.md} | 0 笔记/Linux/权限相关/权限控制信息.md | 36 ++++ .../权限相关/{Root用户.md => 特殊-Root用户.md} | 0 .../{配置sudo组.md => 特殊-配置sudo组.md} | 0 笔记/Linux/权限相关/用户&用户组.md | 24 +++ .../网络工程/01_二层交换技术/DHCP_Snooping.md | 170 +++++++++++++++ .../网络工程/01_二层交换技术/STP_RSTP_MSTP.md | 201 +++++++++++++++++- .../01_二层交换技术/VLAN-Access_Trunk_Hybrid.md | 187 +++++++++++++++- 笔记/网络工程/01_二层交换技术/VLAN.md | 113 +++++++++- 笔记/网络工程/01_二层交换技术/端口隔离.md | 125 +++++++++++ 笔记/网络工程/01_二层交换技术/聚合链路.md | 184 +++++++++++++++- 笔记/网络工程/01_二层交换技术/风暴抑制.md | 136 ++++++++++++ 21 files changed, 1243 insertions(+), 37 deletions(-) create mode 100644 笔记/CSharp/进阶/顺序存储和链式存储.md create mode 100644 笔记/Linux/基础指令/getent.md create mode 100644 笔记/Linux/基础指令/groupadd&groupdel.md create mode 100644 笔记/Linux/基础指令/useradd&userdel&id&usermod.md rename 笔记/Linux/{系统/用户和用户组.md => 权限相关/修改权限控制信息.md} (100%) create mode 100644 笔记/Linux/权限相关/权限控制信息.md rename 笔记/Linux/权限相关/{Root用户.md => 特殊-Root用户.md} (100%) rename 笔记/Linux/权限相关/{配置sudo组.md => 特殊-配置sudo组.md} (100%) create mode 100644 笔记/Linux/权限相关/用户&用户组.md create mode 100644 笔记/网络工程/01_二层交换技术/DHCP_Snooping.md create mode 100644 笔记/网络工程/01_二层交换技术/端口隔离.md create mode 100644 笔记/网络工程/01_二层交换技术/风暴抑制.md diff --git a/.gitignore b/.gitignore index f30eabd..cabeb7d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ /服务器迁移/ /Ignore/ /简历/ +/日记/ # OS files diff --git a/待办/CSharp重学.md b/待办/CSharp重学.md index 9ed76c2..1142c30 100644 --- a/待办/CSharp重学.md +++ b/待办/CSharp重学.md @@ -28,9 +28,10 @@ - [x] [[Stack]] #study/csharp - [x] [[Queue]] #study/csharp - [x] [[Hashtable]] #study/csharp -- [ ] 泛型和泛型约束 #study/csharp -- [ ] List #study/csharp -- [ ] Dictionary #study/csharp +- [x] 泛型和泛型约束 #study/csharp +- [x] List #study/csharp +- [x] Dictionary #study/csharp +- [x] 顺序存储和链式存储 #study/csharp ✅ 2026-06-24 - [ ] LinkedList #study/csharp - [ ] 泛型栈和队列 #study/csharp - [ ] 委托事件 #study/csharp diff --git a/待办/日常.md b/待办/日常.md index 662d282..46dc0be 100644 --- a/待办/日常.md +++ b/待办/日常.md @@ -1,28 +1,31 @@ # 日常 List > 这里放每天会自动刷新的小任务。完成后 Tasks 会按 `🔁 every day` 生成下一次。 -- [ ] eNSP #daily 🔺 🔁 every day 📅 2026-06-24 +- [ ] 网工 #daily 🔺 🔁 every day 📅 2026-06-26 +- [x] 网工 #daily 🔺 🔁 every day 📅 2026-06-24 ✅ 2026-06-24 - [x] eNSP #daily 🔺 🔁 every day 📅 2026-06-23 ✅ 2026-06-23 - [x] eNSP #daily 🔺 🔁 every day 📅 2026-06-22 ✅ 2026-06-22 - [x] eNSP #daily 🔺 🔁 every day 📅 2026-06-21 ✅ 2026-06-21 -- [ ] Linux #daily 🔺 🔁 every day 📅 2026-06-24 +- [ ] Linux #daily 🔺 🔁 every day 📅 2026-06-26 +- [x] Linux #daily 🔺 🔁 every day 📅 2026-06-24 ✅ 2026-06-24 - [x] Linux #daily 🔺 🔁 every day 📅 2026-06-23 ✅ 2026-06-23 - [x] Linux #daily 🔺 🔁 every day 📅 2026-06-22 ✅ 2026-06-22 - [x] Linux #daily 🔺 🔁 every day 📅 2026-06-21 ✅ 2026-06-21 -- [ ] C# #daily ⏫ 🔁 every day 📅 2026-06-24 +- [ ] C# #daily ⏫ 🔁 every day 📅 2026-06-26 +- [x] C# #daily ⏫ 🔁 every day 📅 2026-06-24 ✅ 2026-06-24 - [x] C# #daily ⏫ 🔁 every day 📅 2026-06-22 ✅ 2026-06-22 - [x] C# #daily ⏫ 🔁 every day 📅 2026-06-21 ✅ 2026-06-22 - [ ] C++ 或 UE #weekly ⏬ 🔁 every week -- [ ] 今日复盘:记录完成情况和明天第一件事 🔼 🔁 every day 📅 2026-06-24 +- [ ] 今日复盘:记录完成情况和明天第一件事 🔼 🔁 every day 📅 2026-06-26 - [x] 今日复盘:记录完成情况和明天第一件事 🔼 🔁 every day 📅 2026-06-23 ✅ 2026-06-23 - [x] 今日复盘:记录完成情况和明天第一件事 🔼 🔁 every day 📅 2026-06-22 ✅ 2026-06-23 - [x] 今日复盘:记录完成情况和明天第一件事 🔼 🔁 every day 📅 2026-06-21 ✅ 2026-06-22 -- [ ] 学习吉他 🔼 🔁 every day 📅 2026-06-24 +- [ ] 学习吉他 🔼 🔁 every day 📅 2026-06-26 +- [x] 学习吉他 🔼 🔁 every day 📅 2026-06-24 ✅ 2026-06-24 - [x] 学习吉他 🔼 🔁 every day 📅 2026-06-23 ✅ 2026-06-23 - [x] 学习吉他 🔼 🔁 every day 📅 2026-06-22 ✅ 2026-06-23 - [x] 学习吉他 🔼 🔁 every day 📅 2026-06-21 ✅ 2026-06-22 - [x] 今日复盘:记录完成情况和明天第一件事 🔼 🔁 every day 📅 2026-06-20 ✅ 2026-06-20 -- [ ] 主页打卡⏬ 🔁 every day 📅 2026-06-21 ## 显示今日的样例: diff --git a/模板文件夹/每日计划.md b/模板文件夹/每日计划.md index 73ce4d7..09d01d5 100644 --- a/模板文件夹/每日计划.md +++ b/模板文件夹/每日计划.md @@ -19,6 +19,7 @@ sort by priority > ==记得把今日任务详细的规划在时间线上↓== - [ ] 14:40 - 15:40 eNSP +- [ ] 复盘 ## 复盘 diff --git a/笔记/CSharp/进阶/顺序存储和链式存储.md b/笔记/CSharp/进阶/顺序存储和链式存储.md new file mode 100644 index 0000000..be0b5d0 --- /dev/null +++ b/笔记/CSharp/进阶/顺序存储和链式存储.md @@ -0,0 +1,21 @@ +## 概念:数据结构 +数据结构是计算机村粗知足的方式(规则) +雷也可以算作为一种数据结构 + +简单理解就是人定义的存储数据和表示数据之间关系的规则 + +常用的数据结构 +- 数组、栈、队列、链表、树、图、堆、散列表 + +### 线性表 +线性表是一种数据结构,是由N个具有先沟通呢特性的数据元素的有序序列 +比如数组、ArraryList、Stack、Queue、链表等 + +##### 顺序存储 +数组、stack、queue、list、arraylist都是顺序存储 +用一组地址连续的存储单元依次存储线性表的各个元素 + +#### 链式存储 +单向列表、双向列表、循环列表都是链式存储 +在存储单元中的存储地址不一定连续,但是通过 + diff --git a/笔记/CSharp笔记汇总.md b/笔记/CSharp笔记汇总.md index 8fb2d6b..ada3e41 100644 --- a/笔记/CSharp笔记汇总.md +++ b/笔记/CSharp笔记汇总.md @@ -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. [[命名法]] diff --git a/笔记/Linux/基础指令/getent.md b/笔记/Linux/基础指令/getent.md new file mode 100644 index 0000000..104640d --- /dev/null +++ b/笔记/Linux/基础指令/getent.md @@ -0,0 +1,13 @@ +# getent passwd + +作用:查看有哪些用户 + +共有7份信息: +用户名:密码(X):用户ID:组ID:描述信息:HOME目录:执行终端(默认bash) + +# getent group + +作用:查看有哪些用户组 + +共有3份信息: +组名:组认证(显示为X):组ID \ No newline at end of file diff --git a/笔记/Linux/基础指令/groupadd&groupdel.md b/笔记/Linux/基础指令/groupadd&groupdel.md new file mode 100644 index 0000000..32afe0a --- /dev/null +++ b/笔记/Linux/基础指令/groupadd&groupdel.md @@ -0,0 +1,5 @@ +执行条件:root权限 + +groupadd \[用户组名] + +groupdel \[用户组名] \ No newline at end of file diff --git a/笔记/Linux/基础指令/useradd&userdel&id&usermod.md b/笔记/Linux/基础指令/useradd&userdel&id&usermod.md new file mode 100644 index 0000000..0d5fa7b --- /dev/null +++ b/笔记/Linux/基础指令/useradd&userdel&id&usermod.md @@ -0,0 +1,20 @@ +# 创建用户:useradd \[-g -d] \[用户名] + +参数: +- -g:指定用户的组,不指定会创建同名组并加入,如果有同名组必须用-g +- -d:指定用户的home路径,默认在`/home/用户名`下 + + +# 删除用户:userdel \[-r] \[用户名] + +参数: +- -r:删除用户的HOME目录,附带即可无需指定path + +# 查询用户所属组:id \[用户名] + +# 修改用户:usermod \[-aG] \[用户组] \[用户名] + +作用:将指定的用户加入指定的用户组中 + +参数: +- aG: \ No newline at end of file diff --git a/笔记/Linux/系统/用户和用户组.md b/笔记/Linux/权限相关/修改权限控制信息.md similarity index 100% rename from 笔记/Linux/系统/用户和用户组.md rename to 笔记/Linux/权限相关/修改权限控制信息.md diff --git a/笔记/Linux/权限相关/权限控制信息.md b/笔记/Linux/权限相关/权限控制信息.md new file mode 100644 index 0000000..fe6293d --- /dev/null +++ b/笔记/Linux/权限相关/权限控制信息.md @@ -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) + diff --git a/笔记/Linux/权限相关/Root用户.md b/笔记/Linux/权限相关/特殊-Root用户.md similarity index 100% rename from 笔记/Linux/权限相关/Root用户.md rename to 笔记/Linux/权限相关/特殊-Root用户.md diff --git a/笔记/Linux/权限相关/配置sudo组.md b/笔记/Linux/权限相关/特殊-配置sudo组.md similarity index 100% rename from 笔记/Linux/权限相关/配置sudo组.md rename to 笔记/Linux/权限相关/特殊-配置sudo组.md diff --git a/笔记/Linux/权限相关/用户&用户组.md b/笔记/Linux/权限相关/用户&用户组.md new file mode 100644 index 0000000..f75ab8d --- /dev/null +++ b/笔记/Linux/权限相关/用户&用户组.md @@ -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 \ No newline at end of file diff --git a/笔记/网络工程/01_二层交换技术/DHCP_Snooping.md b/笔记/网络工程/01_二层交换技术/DHCP_Snooping.md new file mode 100644 index 0000000..c3ea433 --- /dev/null +++ b/笔记/网络工程/01_二层交换技术/DHCP_Snooping.md @@ -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 生成的绑定表很重要,后续很多安全功能会用到它 diff --git a/笔记/网络工程/01_二层交换技术/STP_RSTP_MSTP.md b/笔记/网络工程/01_二层交换技术/STP_RSTP_MSTP.md index 87d7dd7..0135e8d 100644 --- a/笔记/网络工程/01_二层交换技术/STP_RSTP_MSTP.md +++ b/笔记/网络工程/01_二层交换技术/STP_RSTP_MSTP.md @@ -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”,它的重要特点是支持多实例 +- 是否默认开启生成树,要看具体厂商和设备型号,不要写得太绝对 diff --git a/笔记/网络工程/01_二层交换技术/VLAN-Access_Trunk_Hybrid.md b/笔记/网络工程/01_二层交换技术/VLAN-Access_Trunk_Hybrid.md index d74b695..16224cc 100644 --- a/笔记/网络工程/01_二层交换技术/VLAN-Access_Trunk_Hybrid.md +++ b/笔记/网络工程/01_二层交换技术/VLAN-Access_Trunk_Hybrid.md @@ -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 \ No newline at end of file +## 三种接口模式的作用 + +这三种模式本质上是交换机接口在 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 diff --git a/笔记/网络工程/01_二层交换技术/VLAN.md b/笔记/网络工程/01_二层交换技术/VLAN.md index b5775a4..8f5e287 100644 --- a/笔记/网络工程/01_二层交换技术/VLAN.md +++ b/笔记/网络工程/01_二层交换技术/VLAN.md @@ -1,3 +1,110 @@ -Vlan协议是最常用的协议 -主要用来隔离业务逻辑或减少广播区域的作用 -用VLAN号来区别不同的区域 \ No newline at end of file +# 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 之间默认不能通信,如果要互通,需要三层转发 diff --git a/笔记/网络工程/01_二层交换技术/端口隔离.md b/笔记/网络工程/01_二层交换技术/端口隔离.md new file mode 100644 index 0000000..3b0f05b --- /dev/null +++ b/笔记/网络工程/01_二层交换技术/端口隔离.md @@ -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`,华为常见直接讲 `端口隔离` diff --git a/笔记/网络工程/01_二层交换技术/聚合链路.md b/笔记/网络工程/01_二层交换技术/聚合链路.md index 0330dd0..4cfaca1 100644 --- a/笔记/网络工程/01_二层交换技术/聚合链路.md +++ b/笔记/网络工程/01_二层交换技术/聚合链路.md @@ -1,3 +1,183 @@ -通常用于链路带宽不足够的时候 +# 聚合链路 -可以将两条物理链路在逻辑上汇聚成一条逻辑链路,起到增大带宽/提高可靠性的作用 \ No newline at end of file +## 聚合链路是什么 + +聚合链路也常叫 **链路聚合**,是指把多条物理链路在逻辑上捆绑成一条链路来使用。 + +它的核心作用是: +- 提高链路带宽 +- 提高链路可靠性 +- 在一定程度上实现负载分担 + +可以简单理解为: + +原来一条链路承担业务,现在把多条物理链路组合成一个逻辑接口,对上层看来就像一条更大的链路。 + +## 为什么要用聚合链路 + +如果只有一条上联链路,可能会遇到两个问题: +- 带宽不够 +- 单链路故障后业务中断 + +使用聚合链路后: +- 多条链路可以一起承载流量 +- 某一条成员链路故障时,其余链路仍可继续工作 +- 网络可用性更高 + +## 基本特点 + +- 聚合链路由多条物理接口组成 +- 对外表现为一个逻辑接口 +- 成员接口需要满足一定的一致性要求 +- 流量通常不会对单个会话做逐包乱序转发,而是按照一定规则分担到不同成员链路 + +## 聚合链路的常见方式 + +### 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 + +## 复习时容易写错的点 + +- 聚合链路不只是“带宽不够时才用”,它还有提高可靠性的作用 +- 聚合后看到的是逻辑接口,不是多条链路各自独立工作 +- 单流量不一定能跑满所有成员链路 +- 成员接口配置必须匹配,否则可能无法成功聚合 diff --git a/笔记/网络工程/01_二层交换技术/风暴抑制.md b/笔记/网络工程/01_二层交换技术/风暴抑制.md new file mode 100644 index 0000000..8df4c6c --- /dev/null +++ b/笔记/网络工程/01_二层交换技术/风暴抑制.md @@ -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 +``` + +## 复习时容易写错的点 + +- 风暴抑制不是彻底解决环路的方法 +- 它限制的是报文速率,不是简单“把这类报文全部禁掉” +- 除了广播风暴,还可能有组播风暴和未知单播风暴 +- 阈值设置过低也可能影响正常业务