From 02921474038064ac26105e74b5366bd67d0b92bd Mon Sep 17 00:00:00 2001 From: Kister Hakusan <2753888203@qq.com> Date: Tue, 23 Jun 2026 22:30:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E7=BD=91=E5=B7=A5?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E7=AC=94=E8=AE=B0=EF=BC=8C=E8=BF=98=E6=9C=89?= =?UTF-8?q?=E4=B8=80=E7=82=B9linux=E5=92=8Cgit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 待办/日常.md | 14 +- 笔记/Git/清理Git历史中的本地目录模板.md | 269 ++++++++++++++++++ 笔记/Linux/基础指令/su.md | 6 + 笔记/Linux/基础指令/sudo指令.md | 7 + 笔记/Linux/权限相关/Root用户.md | 12 + 笔记/Linux/权限相关/配置sudo组.md | 7 + 笔记/Linux/系统/root用户.md | 0 笔记/Linux/系统/快捷键.md | 4 +- 笔记/网络工程/00_网络工程学习提纲.md | 241 ++++++++++++++++ 笔记/网络工程/01_二层交换技术/MAC_ARP.md | 132 +++++++++ .../网络工程/01_二层交换技术/STP_RSTP_MSTP.md | 7 + .../01_二层交换技术/VLAN-Access_Trunk_Hybrid.md | 9 + 笔记/网络工程/01_二层交换技术/VLAN.md | 3 + 笔记/网络工程/01_二层交换技术/聚合链路.md | 3 + 笔记/网络工程/02_三层路由技术/ACL.md | 1 + .../02_三层路由技术/IP编址与子网划分.md | 1 + 笔记/网络工程/02_三层路由技术/OSPF.md | 1 + 笔记/网络工程/02_三层路由技术/RIP.md | 1 + .../02_三层路由技术/静态路由与默认路由.md | 1 + 笔记/网络工程/03_高可用与出口/NAT.md | 1 + 笔记/网络工程/03_高可用与出口/VRRP.md | 1 + .../03_高可用与出口/双出口与链路冗余.md | 1 + 笔记/网络工程/03_高可用与出口/策略路由_PBR.md | 1 + 笔记/网络工程/04_VPN与隧道/GRE.md | 1 + 笔记/网络工程/04_VPN与隧道/GRE_over_IPsec.md | 1 + 笔记/网络工程/04_VPN与隧道/IPsec.md | 1 + 笔记/网络工程/04_VPN与隧道/L2TP.md | 1 + 笔记/网络工程/04_VPN与隧道/PPP与广域网基础.md | 1 + 笔记/网络工程/05_网络服务与排障/DHCP.md | 1 + 笔记/网络工程/05_网络服务与排障/DNS.md | 1 + 笔记/网络工程/05_网络服务与排障/NTP.md | 1 + .../网络工程/05_网络服务与排障/SNMP与Syslog.md | 1 + 32 files changed, 726 insertions(+), 6 deletions(-) create mode 100644 笔记/Git/清理Git历史中的本地目录模板.md create mode 100644 笔记/Linux/基础指令/su.md create mode 100644 笔记/Linux/基础指令/sudo指令.md create mode 100644 笔记/Linux/权限相关/Root用户.md create mode 100644 笔记/Linux/权限相关/配置sudo组.md delete mode 100644 笔记/Linux/系统/root用户.md create mode 100644 笔记/网络工程/00_网络工程学习提纲.md create mode 100644 笔记/网络工程/01_二层交换技术/MAC_ARP.md create mode 100644 笔记/网络工程/01_二层交换技术/STP_RSTP_MSTP.md create mode 100644 笔记/网络工程/01_二层交换技术/VLAN-Access_Trunk_Hybrid.md create mode 100644 笔记/网络工程/01_二层交换技术/VLAN.md create mode 100644 笔记/网络工程/01_二层交换技术/聚合链路.md create mode 100644 笔记/网络工程/02_三层路由技术/ACL.md create mode 100644 笔记/网络工程/02_三层路由技术/IP编址与子网划分.md create mode 100644 笔记/网络工程/02_三层路由技术/OSPF.md create mode 100644 笔记/网络工程/02_三层路由技术/RIP.md create mode 100644 笔记/网络工程/02_三层路由技术/静态路由与默认路由.md create mode 100644 笔记/网络工程/03_高可用与出口/NAT.md create mode 100644 笔记/网络工程/03_高可用与出口/VRRP.md create mode 100644 笔记/网络工程/03_高可用与出口/双出口与链路冗余.md create mode 100644 笔记/网络工程/03_高可用与出口/策略路由_PBR.md create mode 100644 笔记/网络工程/04_VPN与隧道/GRE.md create mode 100644 笔记/网络工程/04_VPN与隧道/GRE_over_IPsec.md create mode 100644 笔记/网络工程/04_VPN与隧道/IPsec.md create mode 100644 笔记/网络工程/04_VPN与隧道/L2TP.md create mode 100644 笔记/网络工程/04_VPN与隧道/PPP与广域网基础.md create mode 100644 笔记/网络工程/05_网络服务与排障/DHCP.md create mode 100644 笔记/网络工程/05_网络服务与排障/DNS.md create mode 100644 笔记/网络工程/05_网络服务与排障/NTP.md create mode 100644 笔记/网络工程/05_网络服务与排障/SNMP与Syslog.md diff --git a/待办/日常.md b/待办/日常.md index dd18a26..662d282 100644 --- a/待办/日常.md +++ b/待办/日常.md @@ -1,20 +1,24 @@ # 日常 List > 这里放每天会自动刷新的小任务。完成后 Tasks 会按 `🔁 every day` 生成下一次。 -- [ ] eNSP #daily 🔺 🔁 every day 📅 2026-06-23 +- [ ] eNSP #daily 🔺 🔁 every day 📅 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-23 +- [ ] Linux #daily 🔺 🔁 every day 📅 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-23 +- [ ] C# #daily ⏫ 🔁 every day 📅 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-23 +- [ ] 今日复盘:记录完成情况和明天第一件事 🔼 🔁 every day 📅 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 -- [ ] 学习吉他 🔼 🔁 every day 📅 2026-06-23 +- [ ] 学习吉他 🔼 🔁 every day 📅 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 diff --git a/笔记/Git/清理Git历史中的本地目录模板.md b/笔记/Git/清理Git历史中的本地目录模板.md new file mode 100644 index 0000000..80a7f89 --- /dev/null +++ b/笔记/Git/清理Git历史中的本地目录模板.md @@ -0,0 +1,269 @@ +# 清理 Git 历史中的本地目录模板 + +这份模板用于把某个已经推送过的本地目录,从远端仓库的历史提交中移除。 + +适用场景: + +```text +某个目录已经被 push 到远端 +后来发现它不适合公开,例如简历、密码本、密钥、隐私资料 +希望远端最新版本和历史提交中都不再包含它 +但本地仍然要保留这个目录 +``` + +## 参数 + +把下面这些参数替换成自己的实际值: + +```text +<原仓库路径> 当前正在使用的本地仓库路径 +<旧仓库备份路径> 原仓库的备份路径 +<清理仓库路径> 新 clone 出来的临时清理仓库路径 +<远端地址> GitHub/Gitee 等远端仓库地址 +<分支名> 要重写并推送的分支,例如 master 或 main +<目录路径> 要从历史中移除的目录,例如 简历/ +``` + +多个目录可以写多个 `--path`: + +```powershell +git filter-repo --path "<目录1>/" --path "<目录2>/" --invert-paths +``` + +## 重要提醒 + +如果目录里包含密码、Recovery Key、Token 等敏感信息,应先更换或吊销这些信息。 + +清理 Git 历史只能减少仓库历史中的暴露,不等于保证已经泄露的信息重新安全。 + +重写历史后,提交 ID 会变化,因此远端需要强推: + +```powershell +git push --force-with-lease origin <分支名> +``` + +`--force-with-lease` 比 `--force` 更安全。它会先检查远端分支是否仍停在本地记录的位置,避免覆盖别人新推送的提交。 + +## 流程 + +### 1. 检查原仓库状态 + +进入当前本地仓库: + +```powershell +cd "<原仓库路径>" +git status +``` + +如果有未提交修改,先提交、备份或手动处理。不要在状态混乱时重写历史。 + +### 2. 备份原仓库 + +把当前仓库复制或改名保留: + +```powershell +cd "<原仓库的上级目录>" +ren "<原仓库文件夹名>" "<旧仓库备份文件夹名>" +``` + +也可以用资源管理器手动复制一份。 + +重点是保留本地私有目录,后面要从 old 里复制回新仓库。 + +### 3. 在非同步目录重新 clone + +建议不要在 OneDrive、网盘同步目录里执行历史重写。 + +```powershell +cd "<临时工作目录>" +git clone <远端地址> "<清理仓库文件夹名>" +cd "<清理仓库路径>" +``` + +### 4. 清理历史 + +清理单个目录: + +```powershell +git filter-repo --path "<目录路径>/" --invert-paths +``` + +清理多个目录: + +```powershell +git filter-repo --path "<目录1>/" --path "<目录2>/" --invert-paths +``` + +说明: + +```text +--path 指定要匹配的路径 +--invert-paths 反转选择,保留其他路径,移除指定路径 +``` + +如果提示不是 fresh clone,可以在确认备份无误后使用: + +```powershell +git filter-repo --force --path "<目录路径>/" --invert-paths +``` + +### 5. 检查并恢复 remote + +`git filter-repo` 可能会删除 `origin` remote。 + +检查: + +```powershell +git remote -v +``` + +如果没有输出,重新添加: + +```powershell +git remote add origin <远端地址> +``` + +### 6. 修改 .gitignore + +把本地要保留、但以后不再提交的目录写入 `.gitignore`: + +```gitignore +/<目录路径>/ +``` + +例如: + +```gitignore +/简历/ +``` + +提交 `.gitignore` 修改: + +```powershell +git add .gitignore +git commit -m "Ignore local-only directory" +``` + +### 7. 获取远端状态 + +执行: + +```powershell +git fetch origin +``` + +`fetch` 不是合并。它只是把远端当前状态下载到本地,例如更新 `origin/<分支名>`。 + +这里的作用是让 `--force-with-lease` 能检查远端分支是否被别人更新过。 + +### 8. 强推清理后的历史 + +```powershell +git push --force-with-lease origin <分支名> +``` + +如果成功,远端 `<分支名>` 会被替换成清理后的新历史。 + +### 9. 检查清理结果 + +检查历史中是否还存在目标目录: + +```powershell +git log --all -- "<目录路径>/" +``` + +没有输出,说明当前可见历史里已经找不到这个目录。 + +也可以检查远端分支: + +```powershell +git fetch origin +git log origin/<分支名> -- "<目录路径>/" +``` + +### 10. 重建日常使用的本地仓库 + +回到原来的仓库位置,从远端重新 clone: + +```powershell +cd "<原仓库的上级目录>" +git clone <远端地址> "<原仓库文件夹名>" +``` + +### 11. 复制回本地私有目录 + +从 old 备份中,把本地要保留但不提交的目录复制回新仓库: + +```text +<旧仓库备份路径>/<目录路径> +复制到 +<原仓库路径>/<目录路径> +``` + +### 12. 最终验证 + +进入新仓库: + +```powershell +cd "<原仓库路径>" +git status +git check-ignore -v --no-index -- "<目录路径>/任意测试文件.md" +git log --all -- "<目录路径>/" +``` + +理想结果: + +```text +git status 没有异常改动 +git check-ignore 能看到 .gitignore 命中规则 +git log 没有输出 +``` + +## 常见问题 + +### filter-repo 不是 Git 命令 + +报错: + +```text +git: 'filter-repo' is not a git command +``` + +说明还没有安装 `git-filter-repo`。 + +可以尝试: + +```powershell +python -m pip install git-filter-repo +``` + +### push 被拒绝 stale info + +如果强推时报: + +```text +! [rejected] <分支名> -> <分支名> (stale info) +``` + +通常是因为本地没有最新的 `origin/<分支名>` 信息。 + +先执行: + +```powershell +git fetch origin +git push --force-with-lease origin <分支名> +``` + +### .gitignore 不会影响已跟踪文件 + +`.gitignore` 只影响未被跟踪的新文件。 + +如果某个文件已经被 Git 跟踪,需要取消跟踪: + +```powershell +git rm --cached -r -- "<目录路径>" +git commit -m "Stop tracking local-only directory" +git push +``` + +这只会从 Git 跟踪列表中移除,不会删除本地实际文件。 diff --git a/笔记/Linux/基础指令/su.md b/笔记/Linux/基础指令/su.md new file mode 100644 index 0000000..5a11131 --- /dev/null +++ b/笔记/Linux/基础指令/su.md @@ -0,0 +1,6 @@ +语法:su \[-] \[用户名] +可以通过exit返回上一个用户或快捷键Ctrl+D + +参数: +- -:切换后加载环境变量 +- 用户名:不加默认切换到root \ No newline at end of file diff --git a/笔记/Linux/基础指令/sudo指令.md b/笔记/Linux/基础指令/sudo指令.md new file mode 100644 index 0000000..12867b3 --- /dev/null +++ b/笔记/Linux/基础指令/sudo指令.md @@ -0,0 +1,7 @@ +作用:sudo用来在非root账户上用root权限执行指令 + +使用权限:在sudo组的账号,例如创建系统时的账号 + +案例: +- sudo su - //用sudo来切换到root账号 + diff --git a/笔记/Linux/权限相关/Root用户.md b/笔记/Linux/权限相关/Root用户.md new file mode 100644 index 0000000..d296ea8 --- /dev/null +++ b/笔记/Linux/权限相关/Root用户.md @@ -0,0 +1,12 @@ +Root用户:拥有最大的权限,可以增删改查所有内容包括系统本身,默认密码不存在 + +sudo passwd -S root显示L标识密码锁定 + +切换到root的指令用[[su]] +因为默认密码不存在,一般的su - root无法切换到root + +使用普通用户切换到其他用户需要输入密码 +使用root用户切换到其他用户无需输入密码 + +一种基于[[sudo指令]]组用户切换到root指令:sudo - su +sudo用户:创建系统时的用户 \ No newline at end of file diff --git a/笔记/Linux/权限相关/配置sudo组.md b/笔记/Linux/权限相关/配置sudo组.md new file mode 100644 index 0000000..3dfa3b7 --- /dev/null +++ b/笔记/Linux/权限相关/配置sudo组.md @@ -0,0 +1,7 @@ +切换到root用户后,执行指令:visudo +该指令会自动通过vi打开/etc/sudoers + +在文件中添加 +`用户名 ALL=(ALL) NOPASSWD:ALL` +NOPASSWD表示使用sudo命令无需输入密码 + diff --git a/笔记/Linux/系统/root用户.md b/笔记/Linux/系统/root用户.md deleted file mode 100644 index e69de29..0000000 diff --git a/笔记/Linux/系统/快捷键.md b/笔记/Linux/系统/快捷键.md index 07fe436..17dacee 100644 --- a/笔记/Linux/系统/快捷键.md +++ b/笔记/Linux/系统/快捷键.md @@ -1,3 +1,5 @@ ctrl+l:清空控制台 -ctrl+w:删除指令的最近一部分 \ No newline at end of file +ctrl+w:删除指令的最近一部分 + +Ctrl+d:返回上一个用户 \ No newline at end of file diff --git a/笔记/网络工程/00_网络工程学习提纲.md b/笔记/网络工程/00_网络工程学习提纲.md new file mode 100644 index 0000000..56e548a --- /dev/null +++ b/笔记/网络工程/00_网络工程学习提纲.md @@ -0,0 +1,241 @@ +# 网络工程学习提纲 + +这份提纲先服务于笔记整理,目标不是一次写全,而是按模块逐步补齐。 + +## 01 二层交换技术 + +### 00 总览与交换基础 +- 交换机、集线器、路由器的区别 +- 冲突域与广播域 +- 交换机二层转发流程:学习、泛洪、转发、老化 +- 单播、广播、组播的基本概念 +- 常见查看命令与基础排障思路 + +### 01 VLAN 与端口类型 +- VLAN 的作用与划分广播域的意义 +- VLAN ID、缺省 VLAN、管理 VLAN +- Access、Trunk、Hybrid 的区别 +- Tag/Untagged、PVID 的含义 +- 不同 VLAN 之间默认不能通信的原因 +- VLAN 常见配置思路与常见故障点 + +### 02 MAC 与 ARP +- MAC 地址的概念与格式 +- MAC 地址表的学习与老化 +- ARP 的作用与请求/应答过程 +- Gratuitous ARP 的基本用途 +- ARP 欺骗、ARP 冲突的基本现象 +- 结合抓包或报文流理解二层与三层寻址 + +### 03 STP 与环路防护 +- 二层环路产生原因与危害 +- STP 的基本思想与端口状态 +- 根桥、根端口、指定端口的选举规则 +- RSTP、MSTP 相比 STP 的改进点 +- 边缘端口、BPDU 保护、根保护、环路保护 +- 拓扑变化 TC 对网络的影响 + +### 04 链路聚合 +- 链路聚合的作用:带宽提升与冗余 +- 手工聚合与 LACP +- 聚合口与成员口关系 +- 聚合成员一致性要求 +- 聚合与 VLAN、STP 的联动 +- 聚合故障的常见定位思路 + +### 05 二层安全与控制 +- 端口隔离 +- 风暴抑制 +- MAC 地址绑定/限制 +- DHCP Snooping +- 动态 ARP 检测的基本思路 +- 常见接入口安全场景 + +### 06 二层排障 +- 主机不通时的排查顺序 +- VLAN 不通、Trunk 不放行、PVID 错误的表现 +- STP 阻塞导致的链路现象 +- 聚合协商失败的现象 +- 结合 `display`/`show` 命令形成排障模板 + +## 02 三层路由技术 + +### 00 总览与三层转发 +- 路由器与三层交换机的作用 +- 三层转发的基本过程 +- 路由表的意义 +- 最长匹配原则 + +### 01 IP 编址与子网划分 +- IPv4 地址结构 +- 子网掩码与 CIDR 表示 +- 网段地址、广播地址、可用主机范围 +- 子网划分与 VLSM +- 常见编址题型与速算技巧 + +### 02 路由基础与直连路由 +- 直连路由、下一跳、出接口 +- 路由优先级与度量值的基本概念 +- 路由表字段怎么看 +- 三层接口与 VLANIF 的角色 + +### 03 静态路由与默认路由 +- 静态路由的用途 +- 缺省路由的用途 +- 浮动静态路由 +- 黑洞路由的基本概念 +- 静态路由的典型实验场景 + +### 04 RIP +- 距离矢量协议特点 +- RIP 的跳数限制 +- RIP v1 与 v2 的区别 +- 定时更新与收敛 +- 水平分割、毒性逆转的基本概念 + +### 05 OSPF +- 链路状态协议特点 +- Router ID、区域、骨干区域 +- 邻居建立与基本报文类型 +- DR/BDR 的作用 +- 代价 Cost 与路由计算 +- 单区域与多区域基本设计 +- 常见邻居起不来的原因 + +### 06 ACL +- ACL 的作用与使用场景 +- 基本 ACL 与高级 ACL +- 源地址、目的地址、协议、端口匹配 +- 通配符掩码 +- `permit` 与 `deny` 的逻辑 +- 入方向与出方向 +- ACL 与流量控制、NAT、PBR 的联动 + +### 07 三层排障 +- 网关配置错误 +- 掩码错误导致的通信异常 +- 默认路由缺失 +- 动态路由邻居/路由发布异常 +- ACL 误拦截的排查思路 + +## 03 高可用与出口 + +### 00 总览 +- 企业网络出口常见需求 +- 高可用、冗余、负载分担的基本概念 + +### 01 默认网关冗余 VRRP +- VRRP 的作用 +- Master/Backup 机制 +- 虚拟 IP 与优先级 +- 抢占与故障切换 +- 典型园区网网关冗余场景 + +### 02 NAT +- NAT 的作用与使用原因 +- 静态 NAT、动态 NAT、NAPT +- Easy IP 的基本思路 +- 地址转换表怎么看 +- NAT 常见故障与调试 + +### 03 策略路由 PBR +- 策略路由与普通路由的区别 +- 按源地址/业务类型选路 +- PBR 与 ACL 的配合 +- 双出口分流的常见场景 + +### 04 双出口与链路冗余 +- 主备出口 +- 负载分担出口 +- 运营商双线场景 +- 路由跟踪与故障切换基本思路 + +### 05 高可用与出口排障 +- NAT 不生效 +- VRRP 不切换或频繁切换 +- 双出口策略不命中 +- 链路恢复后业务异常的原因 + +## 04 VPN 与隧道 + +### 00 总览 +- VPN 与隧道技术解决什么问题 +- 常见站点到站点与远程接入场景 + +### 01 PPP 与广域网基础 +- PPP 的基本作用 +- PAP、CHAP 的区别 +- 广域网链路认证基础 + +### 02 GRE +- GRE 的用途 +- 封装思路 +- 为什么要用 GRE 传递路由协议或多种流量 + +### 03 IPsec +- IPsec 的目标:认证、完整性、加密 +- AH 与 ESP 的区别 +- 传输模式与隧道模式 +- IKE 协商的基本过程 +- 感兴趣流的匹配思路 + +### 04 GRE over IPsec +- 为什么叠加使用 +- 配置逻辑 +- 常见适用场景 + +### 05 L2TP +- L2TP 的基本用途 +- 与 IPsec 配合的常见思路 +- 远程接入基本场景 + +### 06 VPN 与隧道排障 +- 隧道不起来的常见原因 +- IKE 协商失败 +- 感兴趣流不匹配 +- 路由可达但业务不通的定位思路 + +## 05 网络服务与排障 + +### 00 总览 +- 常见网络服务在企业网中的位置 +- “地址获取、名称解析、时间同步、日志监控”整体关系 + +### 01 DHCP +- DHCP 的作用 +- Discover、Offer、Request、ACK 过程 +- 地址池、租期、网关、DNS 选项 +- DHCP 中继 +- 地址分配失败的常见原因 + +### 02 DNS +- DNS 的作用 +- 递归查询与迭代查询 +- 常见记录类型:A、CNAME、MX +- 域名解析失败的常见定位方法 + +### 03 NTP +- 时间同步的意义 +- NTP 的基本工作方式 +- 时间不同步对认证、日志、安全的影响 + +### 04 SNMP 与 Syslog +- SNMP 的用途 +- 团体字/版本的基本概念 +- Syslog 的用途 +- 日志与监控联动思路 + +### 05 常见命令与综合排障 +- `ping`、`tracert/traceroute` +- `arp`、`display mac-address`、`display ip routing-table` +- `display vlan`、`display stp` +- `display ospf peer`、`display nat session` +- 综合排障顺序:物理层、二层、三层、策略、服务 + +## 写作建议 + +- 每篇笔记尽量固定成 5 段:概念、作用、原理、配置思路、常见故障。 +- 先写“为什么要用”,再写“怎么配”,最后写“配错会怎样”。 +- 命令不一定一次写很多,但每篇最好有 3 到 5 个常用查看命令。 +- 多写“现象 -> 原因 -> 排查命令 -> 修复思路”,这样后面复习更快。 +- ACL、NAT、PBR 这类容易混的内容,尽量配一个小拓扑去理解流量方向。 diff --git a/笔记/网络工程/01_二层交换技术/MAC_ARP.md b/笔记/网络工程/01_二层交换技术/MAC_ARP.md new file mode 100644 index 0000000..e3ee98e --- /dev/null +++ b/笔记/网络工程/01_二层交换技术/MAC_ARP.md @@ -0,0 +1,132 @@ +# MAC 与 ARP + +## MAC + +MAC 一般指 **MAC 地址**,不是我们平时说的一种独立协议。 + +MAC 地址的主要作用是: +- 在二层网络中唯一标识网卡或接口 +- 让交换机能够根据目的 MAC 地址进行转发 + +常见特点: +- MAC 地址长度为 48 位,通常写成 12 个十六进制数 +- 前 24 位一般表示厂商标识,后 24 位一般由厂商分配 +- 二层交换机维护 **MAC 地址表**,记录“某个 MAC 地址对应哪个接口” + +交换机转发数据帧时的大致过程: +1. 先学习源 MAC 地址,并记录进入接口 +2. 查看目的 MAC 地址是否在 MAC 地址表中 +3. 如果表中有记录,就从对应接口转发 +4. 如果表中没有记录,就进行泛洪 + +## ARP + +ARP 是 **地址解析协议**,作用是把 **IP 地址解析为 MAC 地址**。 + +ARP 的核心用途: +- 主机已知目标 IP 地址,但不知道目标 MAC 地址时,先通过 ARP 查询 +- 查询到 MAC 地址后,再封装二层帧并发送数据 + +要注意: +- ARP 不是“基于 MAC 的协议”,而是“根据 IP 找 MAC 的协议” +- ARP 不是用来路由的 +- 二层交换机转发主要看 **MAC 地址表** +- 主机或三层设备在发送数据前,往往先通过 **ARP 表** 找到下一跳或目标主机的 MAC 地址 + +ARP 工作过程大致如下: +1. 主机先查看本地 ARP 表中有没有目标 IP 对应的 MAC +2. 如果没有,就发送 ARP Request 广播 +3. 目标主机收到后,返回 ARP Reply 单播 +4. 发送方学到对方的 MAC 地址,并写入 ARP 表 +5. 后续数据通信就可以正常封装并发送 + +## MAC 地址表与 ARP 表的区别 + +MAC 地址表: +- 维护设备:二层交换机 +- 作用:记录 MAC 地址与接口的对应关系 +- 用途:决定二层帧从哪个端口转发 + +ARP 表: +- 维护设备:主机、路由器、三层交换机 +- 作用:记录 IP 地址与 MAC 地址的对应关系 +- 用途:发送数据前完成二层封装 + +## 一句话理解 + +- **MAC 地址表解决“帧往哪一个接口走”** +- **ARP 表解决“这个 IP 对应哪个 MAC”** + +## 常见问题 + +### 1. 为什么同网段通信需要 ARP + +因为发送方虽然知道对方 IP,但真正发二层数据帧时,还需要知道对方的 MAC 地址。 + +### 2. 为什么跨网段通信也会用到 ARP + +因为主机把数据交给网关时,实际封装的是 **网关接口的 MAC 地址**,所以仍然要先解析网关的 MAC。 + +### 3. ARP 广播会不会很多 + +会。ARP 请求是广播报文,所以网络里主机很多时,ARP 广播也会增多。 + +## 常见厂商命令 + +### 华为 + +查看 MAC 地址表: + +```bash +display mac-address +``` + +查看 ARP 表: + +```bash +display arp +``` + +查看接口简要信息: + +```bash +display interface brief +``` + +查看某个 VLAN 的 MAC 学习情况: + +```bash +display mac-address vlan 10 +``` + +### 思科 Cisco + +查看 MAC 地址表: + +```bash +show mac address-table +``` + +查看 ARP 表: + +```bash +show arp +``` + +或: + +```bash +show ip arp +``` + +查看接口状态: + +```bash +show ip interface brief +``` + +## 复习时容易写错的点 + +- MAC 地址不是“身份协议”,更准确地说是二层地址 +- ARP 不是“绑定设备 IP 与 MAC 方便二层交换时的路由”,更准确地说是“把 IP 解析为 MAC,方便后续二层封装与转发” +- 交换机转发数据帧主要依据 MAC 地址表,不是 ARP 表 diff --git a/笔记/网络工程/01_二层交换技术/STP_RSTP_MSTP.md b/笔记/网络工程/01_二层交换技术/STP_RSTP_MSTP.md new file mode 100644 index 0000000..87d7dd7 --- /dev/null +++ b/笔记/网络工程/01_二层交换技术/STP_RSTP_MSTP.md @@ -0,0 +1,7 @@ +标题三个都是属于生成树协议 +实际生产中无需太关心生成树的算法,知道效果即可 +厂商默认的设备在机器芯片算力足够的情况下都是开启的 + +主要是作用是防止回环/广播风暴,当遇到链路某个节点疯狂转发相同包时,对包的转发请求进行丢弃 + +配置流程大概是开启相关生成树协议,指定边缘端口edge和根端口root,保护根端口 diff --git a/笔记/网络工程/01_二层交换技术/VLAN-Access_Trunk_Hybrid.md b/笔记/网络工程/01_二层交换技术/VLAN-Access_Trunk_Hybrid.md new file mode 100644 index 0000000..d74b695 --- /dev/null +++ b/笔记/网络工程/01_二层交换技术/VLAN-Access_Trunk_Hybrid.md @@ -0,0 +1,9 @@ +这是VLAN的三个配置 +Access:通常对应终端例如PC、打印机 +Trunk:通常对应交换机之间的链路 +Hybrid:同时兼顾Access和Trunk的功能,应用场景较少 + +关于VLAN TAG: +Access:接收时根据接口配置打VLAN TAG,发送时剥离VLAN TAG +Trunk:对于没有VLAN TAG的,打上Native Vlan TAG,对于不允许放行的,接收或发送时丢弃 +Hybrid:自定义哪些VLAN打TAG,哪些VLAN不打TAG \ No newline at end of file diff --git a/笔记/网络工程/01_二层交换技术/VLAN.md b/笔记/网络工程/01_二层交换技术/VLAN.md new file mode 100644 index 0000000..b5775a4 --- /dev/null +++ b/笔记/网络工程/01_二层交换技术/VLAN.md @@ -0,0 +1,3 @@ +Vlan协议是最常用的协议 +主要用来隔离业务逻辑或减少广播区域的作用 +用VLAN号来区别不同的区域 \ No newline at end of file diff --git a/笔记/网络工程/01_二层交换技术/聚合链路.md b/笔记/网络工程/01_二层交换技术/聚合链路.md new file mode 100644 index 0000000..0330dd0 --- /dev/null +++ b/笔记/网络工程/01_二层交换技术/聚合链路.md @@ -0,0 +1,3 @@ +通常用于链路带宽不足够的时候 + +可以将两条物理链路在逻辑上汇聚成一条逻辑链路,起到增大带宽/提高可靠性的作用 \ No newline at end of file diff --git a/笔记/网络工程/02_三层路由技术/ACL.md b/笔记/网络工程/02_三层路由技术/ACL.md new file mode 100644 index 0000000..3fc2098 --- /dev/null +++ b/笔记/网络工程/02_三层路由技术/ACL.md @@ -0,0 +1 @@ +# 06 ACL diff --git a/笔记/网络工程/02_三层路由技术/IP编址与子网划分.md b/笔记/网络工程/02_三层路由技术/IP编址与子网划分.md new file mode 100644 index 0000000..7a54d30 --- /dev/null +++ b/笔记/网络工程/02_三层路由技术/IP编址与子网划分.md @@ -0,0 +1 @@ +# 01 IP 编址与子网划分 diff --git a/笔记/网络工程/02_三层路由技术/OSPF.md b/笔记/网络工程/02_三层路由技术/OSPF.md new file mode 100644 index 0000000..a9ac6d0 --- /dev/null +++ b/笔记/网络工程/02_三层路由技术/OSPF.md @@ -0,0 +1 @@ +# 05 OSPF diff --git a/笔记/网络工程/02_三层路由技术/RIP.md b/笔记/网络工程/02_三层路由技术/RIP.md new file mode 100644 index 0000000..0cb6f73 --- /dev/null +++ b/笔记/网络工程/02_三层路由技术/RIP.md @@ -0,0 +1 @@ +# 04 RIP diff --git a/笔记/网络工程/02_三层路由技术/静态路由与默认路由.md b/笔记/网络工程/02_三层路由技术/静态路由与默认路由.md new file mode 100644 index 0000000..62c3da0 --- /dev/null +++ b/笔记/网络工程/02_三层路由技术/静态路由与默认路由.md @@ -0,0 +1 @@ +# 03 静态路由与默认路由 diff --git a/笔记/网络工程/03_高可用与出口/NAT.md b/笔记/网络工程/03_高可用与出口/NAT.md new file mode 100644 index 0000000..2401ac5 --- /dev/null +++ b/笔记/网络工程/03_高可用与出口/NAT.md @@ -0,0 +1 @@ +# 02 NAT diff --git a/笔记/网络工程/03_高可用与出口/VRRP.md b/笔记/网络工程/03_高可用与出口/VRRP.md new file mode 100644 index 0000000..9c053e0 --- /dev/null +++ b/笔记/网络工程/03_高可用与出口/VRRP.md @@ -0,0 +1 @@ +# 01 默认网关冗余 VRRP diff --git a/笔记/网络工程/03_高可用与出口/双出口与链路冗余.md b/笔记/网络工程/03_高可用与出口/双出口与链路冗余.md new file mode 100644 index 0000000..d00ed04 --- /dev/null +++ b/笔记/网络工程/03_高可用与出口/双出口与链路冗余.md @@ -0,0 +1 @@ +# 04 双出口与链路冗余 diff --git a/笔记/网络工程/03_高可用与出口/策略路由_PBR.md b/笔记/网络工程/03_高可用与出口/策略路由_PBR.md new file mode 100644 index 0000000..6996822 --- /dev/null +++ b/笔记/网络工程/03_高可用与出口/策略路由_PBR.md @@ -0,0 +1 @@ +# 03 策略路由 PBR diff --git a/笔记/网络工程/04_VPN与隧道/GRE.md b/笔记/网络工程/04_VPN与隧道/GRE.md new file mode 100644 index 0000000..475381e --- /dev/null +++ b/笔记/网络工程/04_VPN与隧道/GRE.md @@ -0,0 +1 @@ +# 02 GRE diff --git a/笔记/网络工程/04_VPN与隧道/GRE_over_IPsec.md b/笔记/网络工程/04_VPN与隧道/GRE_over_IPsec.md new file mode 100644 index 0000000..9bacf49 --- /dev/null +++ b/笔记/网络工程/04_VPN与隧道/GRE_over_IPsec.md @@ -0,0 +1 @@ +# 04 GRE over IPsec diff --git a/笔记/网络工程/04_VPN与隧道/IPsec.md b/笔记/网络工程/04_VPN与隧道/IPsec.md new file mode 100644 index 0000000..01a3cc0 --- /dev/null +++ b/笔记/网络工程/04_VPN与隧道/IPsec.md @@ -0,0 +1 @@ +# 03 IPsec diff --git a/笔记/网络工程/04_VPN与隧道/L2TP.md b/笔记/网络工程/04_VPN与隧道/L2TP.md new file mode 100644 index 0000000..8efc31f --- /dev/null +++ b/笔记/网络工程/04_VPN与隧道/L2TP.md @@ -0,0 +1 @@ +# 05 L2TP diff --git a/笔记/网络工程/04_VPN与隧道/PPP与广域网基础.md b/笔记/网络工程/04_VPN与隧道/PPP与广域网基础.md new file mode 100644 index 0000000..bef0808 --- /dev/null +++ b/笔记/网络工程/04_VPN与隧道/PPP与广域网基础.md @@ -0,0 +1 @@ +# 01 PPP 与广域网基础 diff --git a/笔记/网络工程/05_网络服务与排障/DHCP.md b/笔记/网络工程/05_网络服务与排障/DHCP.md new file mode 100644 index 0000000..11bd84f --- /dev/null +++ b/笔记/网络工程/05_网络服务与排障/DHCP.md @@ -0,0 +1 @@ +# 01 DHCP diff --git a/笔记/网络工程/05_网络服务与排障/DNS.md b/笔记/网络工程/05_网络服务与排障/DNS.md new file mode 100644 index 0000000..741a939 --- /dev/null +++ b/笔记/网络工程/05_网络服务与排障/DNS.md @@ -0,0 +1 @@ +# 02 DNS diff --git a/笔记/网络工程/05_网络服务与排障/NTP.md b/笔记/网络工程/05_网络服务与排障/NTP.md new file mode 100644 index 0000000..abdd192 --- /dev/null +++ b/笔记/网络工程/05_网络服务与排障/NTP.md @@ -0,0 +1 @@ +# 03 NTP diff --git a/笔记/网络工程/05_网络服务与排障/SNMP与Syslog.md b/笔记/网络工程/05_网络服务与排障/SNMP与Syslog.md new file mode 100644 index 0000000..cbb76fe --- /dev/null +++ b/笔记/网络工程/05_网络服务与排障/SNMP与Syslog.md @@ -0,0 +1 @@ +# 04 SNMP 与 Syslog