<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>酥米的小站</title><description>终有一日，寻梦中人</description><link>https://www.sumi233.top/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.15.8</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年8月14日 23:25:56</lastBuildDate><item><title>酥米的碎碎念（14），我毕业啦！</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-14/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-14/</guid><description>酥米关于5月12日到7月8日最近的小事</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;上班上班还是上班&lt;a href=&quot;#上班上班还是上班&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这两个月都在忙着实习上班，都一个月没有更新碎碎念了，趁最近有点时间更一更哈哈。自从熟悉了岗位之后感觉也没那么累了，基本后厨的东西也能应付得来，闲暇之余放假的时候还能出去玩玩&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;出去玩咯&lt;a href=&quot;#出去玩咯&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;南沙＆番禺&lt;a href=&quot;#南沙番禺&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-17.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;嘿嘿嘿，6月初去了南沙玩，去了一趟天后宫旁边的滨海沙滩，骑着共享单车沿着海边步道到处走走，吹吹海风，真不错。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-18.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;从南沙回来的时候还顺带去了番禺去打卡了番禺的著名地标，蟑螂大厦，听说晚上亮灯之后很像一只蟑螂（其实不开灯的时候也很像，就差两根须须了）&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;将错就错的珠海之旅&lt;a href=&quot;#将错就错的珠海之旅&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-%2013.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我想说的是，这一次去珠海完全是一场意外，本想的是从顺德去中山市区玩的，不过我在东凤坐k21去中山汽车站的时候没看清楚公交，刷了卡才知道这个k995公交是去珠海的哈哈哈，干脆直接将错就错了（其实是票价太贵了不舍得下车，要10块呢）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-14.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;到了珠海当然要去爱情邮局和野狸岛（我上次去了野狸岛，这次就没有去了）。转了一趟车然后骑共享去到了爱情邮局，当时天气还不错，还有凉快的海风，也算是值得一去了哈哈哈&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-11.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;还顺带吃了一顿KFC才去的景点，周围怎么一家小吃店都没有，全是昂贵的商业体餐厅，周围的沙县还关门了呜呜呜&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-12.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后因为买到了在拱北上车回佛山的客运班票，特地跑过去拱北口岸周边等车（好想去澳门啊，可惜我没有去办港澳通行证，好可惜啊）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-10.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;佛山三号线全线贯通+佛山站&lt;a href=&quot;#佛山三号线全线贯通佛山站&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;6月中和7月底，佛山三号线彻底贯通并且佛山站开始运营，有幸去坐了一趟哈哈，终于可以直达家门口了&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-6.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;掏了台开源掌机&lt;a href=&quot;#掏了台开源掌机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;五月底，我在淘宝上花费129巨资淘到了一台开源掌机R36S，虽然处理器很弱吧（rk3366），内存也只有1gb，但是用来玩玩gba和gbc什么的还是很不错的，我还给它刷上了国内大佬制作的aurknix&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-15.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;有摇杆按键玩复古模拟器的体验和手机搓屏幕就是不一样，打rpg和口袋妖怪会舒服很多。不过这玩意也就值100多这个价位了，超了为何不买原机😂😂。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-16.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;最勤劳的一集&lt;a href=&quot;#最勤劳的一集&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;去朋友新租的小窝溜达了两圈，发现实在是太乱了，帮他打扫了亿下卫生，感觉干净多了，终于舒服了&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;正式毕业咯&lt;a href=&quot;#正式毕业咯&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;时光匆匆，从不为谁停留。一眨眼，中专三年就过去了。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;这三年不长不短，却像一部小说，充满起伏。我积累到的不仅是书本知识，更多的是实实在在的技能。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我清楚记得那些在实训室反复练习的日子，那些为了通过技能考试埋头苦练的夜晚。汗水背后，是不服输的劲头和对未来的憧憬。每一滴汗都推着我往前走。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-9.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;在这段旅程里，我也收获了友谊，他们像路上的灯塔，照亮我的方向。朋友的鼓励和陪伴，让我在面对困难时不再孤单，这些是我这三年最温暖的收获。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk14-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;三年的时光，像一本厚书，每一页都有新的故事。而我就是作者，用经历和情感，一笔一划写下自己的篇章。一路走来，虽有遗憾和不舍，但未来的路还长，我会继续书写下去，让这本人生之书更加精彩。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>PVE下it87安装驱动+风扇调速教程</title><link>https://www.sumi233.top/posts/tutorial/pve-it87-fan-pwm-control/</link><guid isPermaLink="true">https://www.sumi233.top/posts/tutorial/pve-it87-fan-pwm-control/</guid><description>Proxmox Virtual Environment安装it87驱动和PWM风扇调速教程</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前情提要&lt;a href=&quot;#前情提要&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近给我的All in Boom主机更换了机箱和电源，原来的esxi没有LXC容器比较麻烦，于是我打算装回PVE。装回PVE后问题接踵而至，首当其冲的就是风扇噪音的问题，Linux下的风扇调度极其智障，稍加负载立刻风扇立刻拉满，再由于我的主机放在卧室衣柜上，有时候就会突然吵起来，十分影响环境。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/pveit87-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;于是我上网找了各种教程和方法，发现网上关于PVE调整风扇转速的教程基本上比较笼统，而且有些不支持新版的PVE，我总结了一些步骤结合方法，于是就有了这一篇（十分水的）教程文章，话不多说，开始吧！&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;编译it87驱动&lt;a href=&quot;#编译it87驱动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;原版的PVE是不内置it87驱动的，由于常规主板的传感器芯片基本多为&lt;code&gt;ITE Super I/O&lt;/code&gt;，所以一般情况下没有编译安装驱动之前，是无法进行pwm的调速的（系统识别不出来）&lt;/p&gt;&lt;p&gt;首先需要查看内核版本并且安装内核头文件&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~# uname -a #查看内核版本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Linux pve 7.0.12-1-pve #1 SMP PREEMPT_DYNAMIC PMX 7.0.12-1 (2026-06-09T21:07Z) x86_64 GNU/Linux&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~# apt install -y linux-headers-7.0.12-1-pve&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;或者直接使用此命令安装&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~# apt install linux-headers-$(uname -r)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;然后需要下载所需的驱动文件&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~# apt install git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~# git clone https://github.com/frankcrawford/it87.git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Cloning into &apos;it87&apos;...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;remote: Enumerating objects: 1251, done.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;remote: Counting objects: 100% (362/362), done.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;remote: Compressing objects: 100% (101/101), done.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;remote: Total 1251 (delta 318), reused 266 (delta 261), pack-reused 889 (from 2)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Receiving objects: 100% (1251/1251), 29.11 MiB | 18.33 MiB/s, done.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Resolving deltas: 100% (702/702), done.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;然后进行驱动的编译&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~# cd it87&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87#&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# apt install -y dkms make gcc build-essential libelf-dev lm-sensors&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# make clean&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# make&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;warning: pahole version differs from the one used to build the kernel&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;The kernel was built with: 130&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;You are using:             0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;CC [M]  it87.o&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;MODPOST Module.symvers&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;CC [M]  it87.mod.o&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;CC [M]  .module-common.o&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;LD [M]  it87.ko&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;BTF [M] it87.ko&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Skipping BTF generation for it87.ko due to unavailability of vmlinux&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# make install&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;该驱动依赖hwmon_vid驱动，需要提前加载&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# modprobe -D hwmon-vid&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;insmod /lib/modules/7.0.12-1-pve/kernel/drivers/hwmon/hwmon-vid.ko&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# modprobe -v hwmon-vid&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;insmod /lib/modules/7.0.12-1-pve/kernel/drivers/hwmon/hwmon-vid.ko&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;之后加载it87驱动&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# insmod it87.ko&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# dmesg |grep it87 #检测驱动是否加载成功&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[   10.138124] it87: loading out-of-tree module taints kernel.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[   10.138136] it87: module verification failed: signature and/or required key missing - tainting kernel&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[   10.138949] it87: it87 driver version &amp;lt;not provided&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[   10.139100] it87: Found IT8628E chip at 0xa40, revision 2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[   10.139185] it87: Beeping is supported&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果dmesg有输出就代表驱动加载成功了，make再执行编译过程中如果有错误一般可以忽略，只要驱动成功安装就没有什么大问题，这样驱动就编译就告一段落了&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;驱动持久化&lt;a href=&quot;#驱动持久化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;由于这样只是临时的安装完成（写在内存里），重启就会失效，所以我们需要进行驱动持久化（将驱动保存进内核grub参数里）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# echo &quot;it87&quot; &amp;gt; /etc/modules-load.d/it87.conf&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# Update-initramfs -u -k all&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# reboot&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;重启后执行&lt;code&gt;sensors&lt;/code&gt;查看结果&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# sensors&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;coretemp-isa-0000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Adapter: ISA adapter&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Package id 0:  +63.0°C  (high = +80.0°C, crit = +100.0°C)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Core 0:        +54.0°C  (high = +80.0°C, crit = +100.0°C)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Core 1:        +54.0°C  (high = +80.0°C, crit = +100.0°C)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;acpitz-acpi-0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Adapter: ACPI interface&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;temp1:        +27.8°C&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;temp2:        +29.8°C&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;it8628-isa-0a40&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Adapter: ISA adapter&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;in0:           1.16 V  (min =  +0.00 V, max =  +3.06 V)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;in1:           2.03 V  (min =  +0.00 V, max =  +3.06 V)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;in2:           2.05 V  (min =  +0.00 V, max =  +3.06 V)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;in3:           2.04 V  (min =  +0.00 V, max =  +3.06 V)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;in4:          12.00 mV (min =  +0.00 V, max =  +3.06 V)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;in5:           1.08 V  (min =  +0.00 V, max =  +3.06 V)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;in6:           1.54 V  (min =  +0.00 V, max =  +3.06 V)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;3VSB:          3.38 V  (min =  +0.00 V, max =  +6.12 V)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Vbat:          3.12 V&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fan1:        1739 RPM  (min =    0 RPM)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fan2:           0 RPM  (min =    0 RPM)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fan3:           0 RPM  (min =    0 RPM)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fan4:           0 RPM  (min =    0 RPM)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fan5:           0 RPM  (min =    0 RPM)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;temp1:        +43.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;temp2:        +51.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;temp3:        +60.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = Intel PECI&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;temp4:       +100.0°C  (low  =  +0.0°C, high = +127.0°C)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;temp5:        +56.0°C  (low  =  +0.0°C, high = +127.0°C)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;temp6:        +45.0°C  (low  =  +0.0°C, high = +127.0°C)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pwm1:             60%  (freq = 23437 Hz)  MANUAL CONTROL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pwm2:             35%  (freq = 23437 Hz)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pwm3:             35%  (freq = 23437 Hz)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pwm4:              0%  (freq = 23437 Hz)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pwm5:              0%  (freq = 23437 Hz)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;intrusion0:  ALARM&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;sensors中Fan1已经可以正常显示风扇rpm转速&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;调整风扇&lt;a href=&quot;#调整风扇&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;首先先安装风扇控制程序&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# apt install -y fancontrol&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;然后进行风扇的检测&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# pwmconfig&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# pwmconfig version 3.8.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This program will search your sensors for pulse width modulation (pwm)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;controls, and test each one to see if it controls a fan on&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;your motherboard. Note that many motherboards do not have pwm&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;circuitry installed, even if your sensor chip supports pwm.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;We will attempt to briefly stop each fan using the pwm controls.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;The program will attempt to restore each fan to full speed&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;after testing. However, it is ** very important ** that you&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;physically verify that the fans have been to full speed&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;after the program has completed.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Found the following devices:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon0 is acpitz&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1 is nvme&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1 is coretemp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1 is nct6798&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Found the following PWM controls:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/pwm1           current value: 255&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/pwm2           current value: 255&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/pwm3           current value: 255&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/pwm4           current value: 153&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/pwm5           current value: 153&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/pwm6           current value: 255&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/pwm7           current value: 255&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Giving the fans some time to reach full speed...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Found the following fan sensors:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/fan1_input     current speed: 2521 RPM&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/fan2_input     current speed: 0 ... skipping!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/fan3_input     current speed: 0 ... skipping!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/fan4_input     current speed: 0 ... skipping!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/fan5_input     current speed: 0 ... skipping!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/fan6_input     current speed: 0 ... skipping!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/fan7_input     current speed: 0 ... skipping!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Warning!!! This program will stop your fans, one at a time,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;for approximately 5 seconds each!!!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This may cause your processor temperature to rise!!!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;If you do not want to do this hit control-C now!!!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Hit return to continue:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;启动后&lt;code&gt;pwmconfig&lt;/code&gt;会让所有支持PWM调速的风扇都运转在最高转速 此处按下回车之后程序会对每个风扇进行识别，会调整风扇转速到最低，要注意机箱中风扇是否正在被控制&lt;/p&gt;&lt;p&gt;程序测试了第一个风扇控制器，在上一步中的&lt;code&gt;Found the following fan sensors&lt;/code&gt;可以看到，只有1号cpu控制器有连接风扇，其他都没有安装风扇，如果无需测试可以直接输入n跳过&lt;/p&gt;&lt;p&gt;输入y执行风扇1的转速测试 此处会逐渐降低风扇转速，直到风扇停转&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Testing pwm control hwmon1/pwm1 ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hwmon1/fan1_input ... speed was 2521 now 995&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;It appears that fan hwmon1/fan1_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;is controlled by pwm hwmon1/pwm1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Would you like to generate a detailed correlation (y)?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 255 FAN 2521&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 240 FAN 2411&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 225 FAN 2345&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 210 FAN 2300&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 195 FAN 2220&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 180 FAN 2146&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 165 FAN 1979&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 150 FAN 1909&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 135 FAN 1721&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 120 FAN 1632&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 105 FAN 1451&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 90 FAN 1359&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 75 FAN 1196&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 60 FAN 1080&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 45 FAN 1010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 30 FAN 1005&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 28 FAN 1004&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 26 FAN 1003&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 24 FAN 1002&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 22 FAN 1002&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 20 FAN 1002&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 18 FAN 1002&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 16 FAN 1001&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 14 FAN 1000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 12 FAN 1000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 10 FAN 1000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 8 FAN 998&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 6 FAN 998&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 4 FAN 997&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 2 FAN 997&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;PWM 0 FAN 995&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;这里选择基于哪个温度传感器控制PWM调速&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Select a temperature sensor as source for hwmon1/pwm1:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1.  hwmon0/temp1_input 10) hwmon3/temp3_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;2.  hwmon1/temp1_input 11) hwmon3/temp4_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;3.  hwmon1/temp2_input 12) hwmon3/temp5_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;4.  hwmon1/temp3_input 13) hwmon3/temp6_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;5.  hwmon2/temp1_input 14) hwmon3/temp7_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;6.  hwmon2/temp2_input 15) hwmon3/temp8_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;7.  hwmon2/temp6_input 16) hwmon3/temp9_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;8.  hwmon3/temp1_input 17) None (Do not affect this PWM output)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;9.  hwmon3/temp2_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;此处的选项来自/sys/class/hwmon/下文件，通过查看/sys/class/hwmon&amp;lt;数字&amp;gt;/name可以知道对应系统哪个硬件的温度，之后通过sensors找到此温度对应的文件，选择之后会通过此文件的温度数值进行调速&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 风扇起转的温度&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Enter the low temperature (degree C)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;below which the fan should spin at minimum speed (20): 30&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 最高温度&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Enter the high temperature (degree C)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;above which the fan should spin at maximum speed (60): 55&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 风扇停转时的PWM调速值&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Enter the minimum PWM value (0-255)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;at which the fan STOPS spinning (press t to test) (100): 120&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 风扇起转时PWM调速值&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Enter the minimum PWM value (0-255)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;at which the fan STARTS spinning (press t to test) (100): 135&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;输入温度和PWM调速值保存并且退出之后，会在/etc生成fancontrol (&lt;code&gt;/etc/fancontrol&lt;/code&gt;)的配置文件，我们也可以通过这个文件实时修改风扇调速的配置参数&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# Configuration file generated by pwmconfig, changes will be lost&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INTERVAL=10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DEVPATH=hwmon1=devices/platform/it87.2624&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DEVNAME=hwmon1=it8628&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;FCTEMPS=hwmon1/pwm1=hwmon1/temp4_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;FCFANS= hwmon1/pwm1=hwmon1/fan1_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;MINTEMP=hwmon1/pwm1=30&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;MAXTEMP=hwmon1/pwm1=55&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;MINSTART=hwmon1/pwm1=150&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;MINSTOP=hwmon1/pwm1=0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;MAXPWM=hwmon1/pwm1=120&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;重启并自启调速服务，应用配置文件&lt;a href=&quot;#重启并自启调速服务应用配置文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# systemctl start fancontrol&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;root@pve:~/it87# systemctl enable fancontrol&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;使用&lt;code&gt;systemctl status&lt;/code&gt;查看运行情况&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;● fancontrol.service - fan speed regulator&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Loaded: loaded (/usr/lib/systemd/system/fancontrol.service; enabled; preset: enabled)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Active: active (running) since Fri 2026-07-03 21:49:12 CST; 2 days ago&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Invocation: 5c0176929edd4370be86ebd78e60c3cb&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Docs: man:fancontrol(8)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;             &lt;/span&gt;&lt;/span&gt;&lt;span&gt;man:pwmconfig(8)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Main PID: 912 (fancontrol)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Tasks: 2 (limit: 25790)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Memory: 1.9M (peak: 4.3M)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;CPU: 2min 52.899s&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;CGroup: /system.slice/fancontrol.service&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;             &lt;/span&gt;&lt;/span&gt;&lt;span&gt;├─   912 /bin/bash /usr/sbin/fancontrol&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;             &lt;/span&gt;&lt;/span&gt;&lt;span&gt;└─814011 sleep 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jul 03 21:49:12 pve fancontrol[912]:   Controls hwmon1/fan1_input&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jul 03 21:49:12 pve fancontrol[912]:   MINTEMP=30&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jul 03 21:49:12 pve fancontrol[912]:   MAXTEMP=55&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jul 03 21:49:12 pve fancontrol[912]:   MINSTART=150&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jul 03 21:49:12 pve fancontrol[912]:   MINSTOP=0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jul 03 21:49:12 pve fancontrol[912]:   MINPWM=0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jul 03 21:49:12 pve fancontrol[912]:   MAXPWM=120&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jul 03 21:49:12 pve fancontrol[912]:   AVERAGE=1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jul 03 21:49:13 pve fancontrol[912]: Enabling PWM on fans...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Jul 03 21:49:13 pve fancontrol[912]: Starting automatic fan control...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;程序已在运行，并且成功对风扇进行调速&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米的碎碎念（13），最近的一些事</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-13/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-13/</guid><description>酥米关于4月1日到5月11日最近的小事</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;开始上班·拱门传说&lt;a href=&quot;#开始上班拱门传说&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这个学期我在中专职校的最后一个学期，也是实习期。学校给我们推荐引荐了许多的企业（美芝、海尔等），不过也没有限制我们的实习工作和内容，也就是我们可以自己找工作。&lt;/p&gt;&lt;p&gt;随便找了个金拱门上班，虽然工资待遇也不太行吧（12.6一个小时），但是因为可以盖章，只需要上三个月，而且麦当劳排班轻松很多，所以感觉也还行。&lt;/p&gt;&lt;p&gt;进入麦当劳需要试工，试完工经理会告诉你结果，入职需要办健康证和实习证明，等到正式入职那一天也还没有上班，需要看学习的视频，领服装，然后跟经理谈谈排班的事宜，如果没问题的话第二天就能开始上班了。&lt;/p&gt;&lt;p&gt;不过我一进来就干后厨，需要备货出货，腌制，裹鸡翅鸡腿，帮忙炸东西煎东西，闲暇时间要帮搭档做生产线（做汉堡，打小吃），没适应的时候还是比较痛苦的，觉得会很累，但是习惯之后也还好。老员工和经理们还是比较友善的，闲暇时间都会耐心教你一些东西（遇到态度不好的除外）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk13-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;麦当劳实行8小时上班制，实际上经理也不会给你排满8小时，一般6-7.5小时算比较多了，而且一周也不会给你排满7天班，会给你排几天的假期（就是放假时间飘忽不定罢了）。&lt;/p&gt;&lt;p&gt;这里插一嘴，麦当劳是按时间计算薪水的，也就是时薪制，如果发现你的工作时间和计算的对不上一定要跟经理报道，不然辛苦工作的小钱钱就会飞掉了😭。&lt;/p&gt;&lt;p&gt;每周六麦当劳会有一次免费的员工餐，可以在50块点单价产品搭配着吃，还是挺不错的哈哈，毕竟麦当劳这么多单品，三个月12周都不一定点得完所有东西&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk13-7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我觉得在麦当劳干活上班算是比较休闲的，如果排早班并且工作日不忙的时候干完下午就能下班回家，但大部分时间大概率需要加班半个小时（节假日忙不过来的时候），还剩一个半月就结束实习了，希望能浑水摸鱼混过去吧哈哈哈。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;扑大街了·不幸摔伤&lt;a href=&quot;#扑大街了不幸摔伤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;四月底五一前，在下班回家途中，骑着共享电动车不小心滑倒摔了下来，导致我的左腿膝盖往下的位置出现了比较严重的擦伤。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk13-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我连忙去医院做了清创消毒，还好医生说只是擦伤而已，就是创口比较大，没有这么快好，让我稍微注意下&lt;/p&gt;&lt;p&gt;前一周就还好，也没有很疼，但是快好的时候不知道是不是沾了水的缘故，伤口发炎流脓了，疼了我好一阵子才给我完完好好的结痂了，希望这种事情不要再发生了，太煎熬了呜呜呜，下床走两步都疼死了，上班也上班了得请假。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;投入欧加·远离小米&lt;a href=&quot;#投入欧加远离小米&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近等工资下来，终于是把我的破烂红米耳机换掉了，入了一加的buds ace3，是最近发布的新品，听说是OPPO Enco Air 5 Pro的套壳机子。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk13-6.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我对比了两个机型的价格，在井夕夕以244块的低价购入一加，收到了耳机确认收货客服还返15块红包，还送个耳机壳（虽然客服说5月15号才能发就是了），四舍五入230块就把耳机拿下了，性价比极佳。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk13-4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;耳机质感不错，就是合模线有点大，佩戴比我的红米buds5pro好太多了，带上去也不涨耳朵。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk13-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;调音方面一加出厂的调音有点两头翘，我调了下eq好多了，这耳机还有LHDC和hires，算是不错的配置了，声场和人声分离做得很不错，吊打红米，红米的都糊一块的🙄，果然用了别人家的才知道小米的穿戴产品除了手环多么的垃圾&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk13-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;而且oppo的耳机没有给其他手机阉割功能，耳机95%的功能都能在小米手机上使用（强烈批评小米耳机不能在别的手机上使用lhdc😒）&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;贪小便宜·遭大殃了&lt;a href=&quot;#贪小便宜遭大殃了&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近在某鱼上9.9给我的一加8淘了一个所谓的原装壳子。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk13-8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;结果收到手，拆开包装，我的天塌了。&lt;/p&gt;&lt;p&gt;一股臭胶味，一看就是假的，打算先放几天看看，如果还有味道我就丢掉了，这10块钱就当个教训吧呜呜呜，贪小便宜不可取啊😦&lt;/p&gt;&lt;p&gt;好久没更新博客啦哈哈，感觉上班之后都好久好久没有写过这么多字了，下次更新也不知道要到什么时候了，就先说到这里吧&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;对啦！欢迎访问酥米碎碎念站哇~这里已经成为了我的第二个说说啦！&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;{% link 酥米碎念站,Supermini233,&lt;a href=&quot;https://bbs.sumi233.top/&quot; target=&quot;_blank&quot;&gt;https://bbs.sumi233.top/&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米碎念站上线啦~</title><link>https://www.sumi233.top/posts/others/sumiblogtalk/</link><guid isPermaLink="true">https://www.sumi233.top/posts/others/sumiblogtalk/</guid><description>基于Wordpress制作的酥米碎念站即将上线</description><pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;上线啦&lt;a href=&quot;#上线啦&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;经过一个星期的打磨和制作，基于Wordpress制作的酥米碎念站上线啦~&lt;/p&gt;&lt;p&gt;它将代替原说说功能，实现更及时，更朋友圈化的说说体验&lt;/p&gt;&lt;p&gt;此站由 GcYJdRniC1 大佬兼好朋友提供技术支持并且资助服务器搭建而成，感谢感谢！&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;截图&lt;a href=&quot;#截图&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/suinianzhan-1.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/suinianzhan-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;本站链接&lt;a href=&quot;#本站链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;{% link 酥米碎念站,Supermini233,&lt;a href=&quot;https://bbs.sumi233.top/&quot; target=&quot;_blank&quot;&gt;https://bbs.sumi233.top/&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>人潮里的烽烟笺：虎门公交的湾畔漫游录</title><link>https://www.sumi233.top/posts/mouthtalk/humentravel/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/humentravel/</guid><description>酥米的东莞虎门之游记</description><pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h3&gt;启程&lt;a href=&quot;#启程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;就在本月月初（3月8日），我独自一人，踏上了前往虎门这片土地的历程。但总所周知，佛山/广州之间和东莞隔着一条长长的珠江出口，犹如一道万尺的深渊，阻断了两边的去路。&lt;/p&gt;&lt;p&gt;片刻思索，查找资料，发现广州南沙开通了一条从蕉门直达虎门的公交快线，全程走高速过虎门大桥，仅需一个小时不到即可到达对岸，毫不犹豫，立刻踏上前往南沙蕉门的历程。&lt;/p&gt;&lt;p&gt;目前想从广州市区前往南沙中心区还是比较麻烦的，不过可以 &lt;strong&gt;18号线&lt;/strong&gt; 到南沙横沥转车进市区，或者直接搭乘 &lt;strong&gt;4号线&lt;/strong&gt; 前往市区，我选择了后者，不过这个选择将会后悔不已😭。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-21.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-20.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;四号线经过庆盛（南沙北站）&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;早上的4号线好挤，从海傍站上车，全程站着去到南沙，中途还不断的涌入乘客，甚至是只上不下。耗时1个小时左右，从蕉门站下车，向后走走，到达南沙蕉门公交总站：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-22.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;这次我们要坐的是南沙K6公交车，从蕉门公交总站开往东莞虎门富民商务中心（虎门镇政务服务中心）站&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-23.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;票价并不贵，只需要￥13，岭南通公交卡或者交通联合都能刷，刷卡上车，由于进入东莞需要途径佛莞高速，虎门大桥，所以上车需全程佩戴安全带。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-24.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;穿过虎门大桥，进入东莞辖区，穿过威远岛，不出一个小时，我从南沙蕉门到达了东莞虎门中心城区&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-10.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;去到时已是中午时分，于是去找了家快餐店吃饭，然后继续前往乐购公交站换乘263前往威远岛和炮台遗址&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;不得不说，虎门作为一个强镇城建做的十分不错，人行道和单车道分布合理位置宽敞，市区道路也不拥挤狭小，城区一周高楼林立。看起来感觉上完全不像一个镇级建设。&lt;/p&gt;&lt;p&gt;又是40分钟车程，车辆缓缓驶入景区公交总站，我们也算是真正达到了虎门威远炮台景区了&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;穿过一条龙小吃街，就是景区门口啦，这里虽然免费进入，但是需要身份证或者扫描预约二维码进入&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-19.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;穿过门口，按照指示走个200米，即可看到第一个景点：海战博物馆&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-8.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;正午晴空之下，虎门海战博物馆静静屹立在湖前。澄澈蓝天衬着米白色的建筑主体，两侧棕榈枝叶舒展，带着岭南滨海独有的温润气息。&lt;/p&gt;&lt;p&gt;建筑造型庄重肃穆，八角穹顶带着岁月积淀的斑驳纹路，正门墙面的金色题字醒目有力，无声诉说着百年前伶仃洋上的烽烟往事。&lt;/p&gt;&lt;p&gt;木栈道上的游人缓步前行，怀揣着敬畏奔赴这段历史。海风裹挟着潮声漫来，将过往的峥嵘岁月，与当下的平和光景，都妥帖收进这方庄重的天地里。&lt;/p&gt;&lt;p&gt;慢慢走进博物馆，展厅穹顶的光束倾泻而下，这座虎门海战博物馆的主题雕塑《破》，以极具冲击力的姿态撞入眼帘。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-9.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;黝黑厚重的方印造型，刻着醒目的年代篇章，锚定了近代史的沉重开篇。粗砺的铁链死死锁缚着碑身，狰狞的裂痕里翻涌着赤红的光，恰如百年前沉沦岁月里，从未熄灭的抗争星火。&lt;/p&gt;&lt;p&gt;炮口、战船、齿轮的纹路嵌满雕塑肌理，每一道刻痕都藏着虎门海战的烽烟往事。它以倾斜欲坠却坚不可摧的姿态，无声诉说着民族于苦难中破局的觉醒，让驻足者皆能听见历史深处振聋发聩的回响。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-4.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-14.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;暖调灯光漫过展厅的展墙，铺展开一幅近代科学启蒙的长卷。墙面陈列着多幅复刻西洋古画，定格下科学发展的关键瞬间：17 世纪的解剖课堂里，医者与学子围聚求索；德国化学家李比希的化学实验室中，近代教学法在此萌芽，每幅画作都配有中英注解，锚定着文明进阶的足迹。&lt;/p&gt;&lt;p&gt;下方长展牌以时间线梳理物理学科的发展历程，印着科学先驱的肖像与成就。一旁的黑板写满数理公式，玻璃展柜里的文献静静陈列，整个空间沉静厚重，仿佛能听见百年前，人类叩开科学大门的坚定回响。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;走出博物馆，穿过滨海小路，约估几百米，我来到了威远炮台遗址下面&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-17.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-12.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;斑驳的墙壁上，仿佛诉说着历史的沉淀。这面历经百年风雨的石墙，风化的纹路里藏着珠江口的潮起潮落，也刻着威远炮台跨越两个世纪的烽烟往事。&lt;/p&gt;&lt;p&gt;标识牌上的文字描写历历在目，从道光年间关天培督建扩建的雄心，到数次被战火损毁、又数次被修复重建的坎坷，一行行笔墨，把清朝抗战的峥嵘岁月，妥帖又沉重地摆在世人眼前。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-13.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;石砌的拱洞通道里，粗糙的石壁带着时光的粗粝质感，脚下被岁月磨得温润的石板路，曾走过枕戈待旦的清兵，如今迎来络绎不绝的游人。&lt;/p&gt;&lt;p&gt;大人牵着孩童的手缓步穿行，光影在拱券间明明灭灭，像是百年的时光在此处交错，一边是剑拔弩张的海防前线，一边是烟火寻常的和平光景。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-6.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;炮台之上，那尊锈迹斑斑的古炮静静屹立在此。炮身的斑驳锈迹，是经过两个世纪的海风与无情的战火共同留下的闪耀印记，它曾迎着伶仃洋的风浪，发出过抵御外侮的怒吼，如今依旧昂着炮口，守着这片它曾誓死捍卫的江海。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-16.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;风穿过炮位的缝隙，拂过斑驳的墙垣，像是百年前将士们的呐喊仍有回响。这些风化的砖石、锈蚀的铁炮，从来都不是沉默的展品，它们是历史的见证者，把民族抗争的过往，深深镌刻在这片滨海的土地上，让每一个驻足的人，都能读懂岁月里的沉重与荣光，也更懂得当下和平的珍贵。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-18.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;薄雾轻笼的珠江出口上，虎门大桥如一条钢铁巨龙横卧在万尺碧波之上，悬索桥身凌空飞架，一头牵着繁华城郭，一头连着远山黛影，在淡蓝的天光里铺展成一幅现代壮阔的绝美之景。&lt;/p&gt;&lt;p&gt;桥下，便是历经百年风雨的炮台遗址。粗糙厚重的海防石墩静静屹立在此，带着岁月磨洗的粗粝肌理，与不远处锈迹斑驳的古炮、风化斑驳的墙垣，一同守望着这片伶仃洋水域。百年前，这里是国门防线的最前沿，大批将士们曾在此枕戈待旦，以炮口迎向来犯的风浪，用血肉守护身后的山河。&lt;/p&gt;&lt;p&gt;江风漫过堤岸，游人或举着手机定格大桥的雄姿，或俯身触摸石墩上时光的刻痕，有人抬手指向江面，轻声诉说着这片土地的过往。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;一桥飞架，是今日盛世的通途万里；一方炮台，是百年峥嵘的历史注脚。大桥的身影倒映在粼粼江水里，与脚下的炮台遗址遥遥相望，完成了一场跨越百年的对话。曾经浴血捍卫的江河，如今已是车水马龙的通衢；曾经风雨飘摇的国土，如今已是山河无恙、烟火寻常。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-15.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;澄澈的晴空铺展成无边的淡蓝，与伶仃洋的万顷碧波在天际温柔相接。脚下是被潮水反复摩挲的沙滩，深浅不一的脚印嵌在细软的沙粒里，藏着游人踏浪而来的欢喜。&lt;/p&gt;&lt;p&gt;远处的海面波光粼粼，零星船影在薄雾里若隐若现。这片曾见证虎门烽烟、承载过百年家国风雨的水域，此刻只剩风平浪静，潮起潮落间尽是温柔。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/humentravel-11.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;海风漫过沙滩，带着咸湿的气息，拂过百年前将士们誓死守护的海岸线。曾经的惊涛骇浪早已化作今日的岁月安然，这片海，既记得过往的峥嵘，也拥抱着当下的烟火与晴朗。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米系统聚合地上线啦！</title><link>https://www.sumi233.top/posts/others/sumi-wiki/</link><guid isPermaLink="true">https://www.sumi233.top/posts/others/sumi-wiki/</guid><description>基于VitePress制作的静态系统下载系统聚合地网站上线</description><pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;介绍&lt;a href=&quot;#介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;酥米系统聚合地是整合系统镜像资源的一站式平台，用 Vitepress 和 vitepress-theme-teek 搭建，还通过 Cloudflare Pages 全球边缘网络部署，EdgeOne 进行静态加速，旨在给大家提供一键式免登录、无广告、快速访问的干净下载体验。&lt;/p&gt;&lt;p&gt;平台 “简化下载流程”，收集了各种主流系统的主要版本镜像。不用注册账号，也没有烦人的弹窗广告，点一下就能直达下载链接，再也不用忍受传统平台的繁琐操作和各种干扰。&lt;/p&gt;&lt;p&gt;本站把用户体验放在第一位，坚决没有捆绑安装和诱导消费，所有资源都经过仔细筛选，来源正规又安全。不管是技术大佬、普通用户还是小白，都能在这里高效找到需要的系统资源，让下载变得简单又纯粹。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;访问地址&lt;a href=&quot;#访问地址&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;{% link 酥米的系统聚合下载地,酥米聚合,&lt;a href=&quot;https://sys.sumi233.top&quot; target=&quot;_blank&quot;&gt;https://sys.sumi233.top&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;截图&lt;a href=&quot;#截图&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sumiwiki-1.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sumiwiki-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;特点&lt;a href=&quot;#特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;模糊关键词查找&lt;/li&gt;
&lt;li&gt;评论区&lt;/li&gt;
&lt;li&gt;系统分类&lt;/li&gt;
&lt;li&gt;网站实时刷新，界面加载迅速&lt;/li&gt;
&lt;li&gt;主流版本收集详细，资源及时更新&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;链接&lt;a href=&quot;#链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;感谢vitepress项目组以及Kele-Bingtang大佬制作的vitepress-theme-teek模板项目，谢谢您！&lt;/p&gt;&lt;p&gt;原项目：&lt;/p&gt;&lt;p&gt;{% link Kele-Bingtang/vitepress-theme-teek,GitHub,&lt;a href=&quot;https://github.com/Kele-Bingtang/vitepress-theme-teek/&quot; target=&quot;_blank&quot;&gt;https://github.com/Kele-Bingtang/vitepress-theme-teek/&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;{% link vuejs/vitepress,GitHub,&lt;a href=&quot;https://github.com/vuejs/vitepress&quot; target=&quot;_blank&quot;&gt;https://github.com/vuejs/vitepress&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米的碎碎念（12），最近的一些事</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-12/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-12/</guid><description>酥米关于2月15日到2月27日最近的小事</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;春节快乐&lt;a href=&quot;#春节快乐&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;首先得祝大家&lt;strong&gt;春节快乐&lt;/strong&gt;！愿你丙午马年如良骥驰骋，敲下的每一行代码皆无报错，部署的项目稳若磐石。新岁灵感满格，学业与热爱双向奔赴，诸事开源，万事顺遂！&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;兼职生涯&lt;a href=&quot;#兼职生涯&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近这两三个星期去找了份兼职赚赚钱，虽然辛苦但是有钱拿，属实是痛并快乐着了（）每天忙完累到不想动，但看到工资下来那一瞬间，又觉得一切都值了&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk12-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;是在茶餐厅当服务员，看着简单，实则上并不容易😂😂，不过没有摔过盘子上错菜就是了（）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk12-4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;除夕当晚同事们集体搞团建吃饭，内容很丰盛，牛肉鸡肉鱼肉海鲜应有尽有还很新鲜，给我吃美了&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk12-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;可爱的小布偶猫闯进了餐厅～&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;可惜是流浪猫，应该是被主人弃养了，还是异瞳😍。它就算是弓背害怕也没有咬人，真的挺乖的，就是赖在餐厅门口不走了😂😂，好一会才离开。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;回乡吃席&lt;a href=&quot;#回乡吃席&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;打完兼职的第二天，我们全家就马不停蹄的收拾行李去往佛山西站高铁站。搭上下午的高铁，回到故乡&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk12-2.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk12-1.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk12-10.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;这次居然坐到了成都局的动车，没有熟悉的广铁u彩提示音还有点不习惯哈哈🌚&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk12-9.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;40分钟车程，到达肇庆广宁站，准备打车回外婆那😂。&lt;/p&gt;&lt;p&gt;不过本次目的不只是回去看望外婆亲戚，更重要的是亲戚那边搞满月宴，我们受到邀请过去吃席。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk12-8.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk12-7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;好吃爱吃，菜都很好吃，使我连干了四碗饭，就着啤酒下肚，满足感十足。蹭的席很好吃🌝😊，白切鸡滑嫩，羊肉软硬适中，蒜蓉带子新鲜鲜甜&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk12-6.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;随手拍溜达的小鸭子&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;寒假尾声。说实话，这个寒假没有发生什么事情，所以博客记录也没怎么更新（最近会更新的啦），都被我用来打工了哈哈，不过还是很充实滴（毕竟有钱赚）。时间匆匆忙忙就过去了，即将进入实习，仍有惆怅和迷茫。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米的碎碎念（11），最近的一些事</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-11/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-11/</guid><description>酥米关于2月5日到2月14日最近的小事</description><pubDate>Sat, 14 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;充电宝喜提换货保修&lt;a href=&quot;#充电宝喜提换货保修&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近用俺的酷态科cp25充电的时候，自带线老是断断续续的，而且一激活快充就有概率断开链接。直到前天晚上，在地铁里面突然充不上电了，摸了一下线头发热十分严重，吓得我赶紧拔掉了充电线，仔细一看，自带线居然断出了个口子😭&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;没理由啊，我又没有摔过充电宝，也没拉扯过它的自带线。于是我回到家立刻找客服理论了一下，充电宝俺去年年初买的，应该还没过保修，客服那也响应积极，可以换，但是货仓休息了，得过完年才能换😂😂&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;酷态科这质量，还有待提升啊😦&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;我看酷安里面也有不少断线的案例出现，甚至还有不是自带线的充电宝原装充电线断线的情况🙈&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;再临五邑&lt;a href=&quot;#再临五邑&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这个月又去了一趟江门，去的时候是坐公交过去的（真是铁屁股）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-9.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后还去了喜茶的第一家店，之前我也不知道原来喜茶第一家店原来就在江门，既然知道了，那不得去看看😏&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-10.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;这家店藏在小巷子里面，有点难找，不过导航一下还是能找到滴，就在蓬江区江边里里面&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-13.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-12.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-14.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;点了一杯创始店专属的”芝芝柑普”。茶底很好喝，新会的柑橘香和普洱的茶香混合在一起，清爽又干净，配上微涩微甜的味道，清爽还解腻。美中不足的是芝士奶盖有点太齁了（有可能是我加了双倍奶盖的缘故），不搅拌在一起感觉各过各的，没有很融洽的感觉。&lt;/p&gt;&lt;p&gt;吃完喝饱后，我继续前往江门五邑华侨广场&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-15.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-16.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;广场很大，很宏伟，两栋双子楼屹立在左右两侧，旁边还有一个华侨博物馆，本来想进去看看的，不过很可惜，去的当天恰好碰上了星期一闭馆😂😂。于是去了旁边万达逛了两圈，这里周围环境很不错，人流即使在快过年的时候也没有很多人，很舒服。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-11.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;回去并没有坐公交回去，而是买了张小江巴士的车票（挺便宜，而且直达佛山，速度还很快，约莫1个小时不够就回到家了）。这次去江门有点可惜，由于等不到公交发车，错失了一次去新会面基一位朋友的机会哈哈，下次去的时候一定去看望一次！&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;飞越羊城，时尚天河&lt;a href=&quot;#飞越羊城时尚天河&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;闲得无聊，跑去珠江新城溜达了两圈&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk11-6.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;怎么说呢，感觉像是农村人进城，大楼应接不暇，一栋栋大楼如一个个长方体叠在一起，虽然已来过几次广州，但深入珠江新城仍被震惊到了😂😂&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;春节快乐！&lt;a href=&quot;#春节快乐&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;最后，快到春节啦！祝大家团团圆圆，万事如意，心想事成！&lt;/strong&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米的碎碎念（10），最近的一些事</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-10/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-10/</guid><description>酥米关于1月17日到2月4日最近的小事</description><pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;高职考上岸&lt;a href=&quot;#高职考上岸&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;好一段时间没有更新了，自从放假之后一直在研究高职考志愿的事情（虽然下个月才选专业）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk10-7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;也是擦边上岸，264分，报不了太好的学校，但是公办的大专应该是稳上了哈哈😂😂😂&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;魅力海寿岛&lt;a href=&quot;#魅力海寿岛&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近骑车去了南海九江海寿岛，整座岛位于西江中间，有一个小岛和一个大点的岛组成，不过我们只能上最大的那个岛。对比平沙岛，可能是因为对面是九江市区，并且岛比较大，所以岛上居民比较多，设施也很完善，甚至还有个小学在岛上。&lt;/p&gt;&lt;p&gt;并且最近海寿岛刚举行完环岛骑行的活动，因此岛上环境很干净，蚊虫也没有很多（应该是做了消杀）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk10-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;上岛的渡口来回需要四块，进岛不用给钱直接上去，出岛才需要买票进闸等轮渡。似乎岛上不限制钓鱼，除了轮渡码头的区域，岛上其他地方都有地方可以下到江边钓鱼&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk10-8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk10-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;岛上商业化比平沙岛完善。甚至有电动车的租借处，方便了游客环游整个岛的风景。&lt;/p&gt;&lt;p&gt;不过海寿岛上的风景没有因此受到影响，植物郁郁葱葱。岛上农民也有养许多的动物，有普通的家禽，有绵羊，也有马，环游整个岛的时候可以看见它们在江边慢慢悠悠吃草闲逛。&lt;/p&gt;&lt;p&gt;岛上生活十分浓厚，能看到邻里街坊在路口唠嗑，也能看到地里劳作的农民伯伯，也能看到三五群小朋友在一起嬉戏玩耍，他们和岛上的风景一起形成了一条绝美的风景线。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk10-6.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;对啦！这个岛屿位置十分的特殊，对面岛边是佛山市的市界，对面则是江门的鹤山市，你甚至能在岛边清清楚楚的看到鹤山的沙坪市区。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk10-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;轮渡渡口的位置&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk10-4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;😏太帅了所以摆进来。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这个岛很合适骑电动车环游，吹着凉快的江风，沿着岛上绿道沿着边上兜圈，或是到江边钓钓小鱼，是很惬意的享受。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;南国桃园&lt;a href=&quot;#南国桃园&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近去了南海的南国桃园兜了一圈，可惜的是桃花都还没有完全盛开，只有一些花骨朵和枝干，不过还是很幸运的拍到了一朵完整盛开的桃花&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk10-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米的碎碎念（9），最近的一些事</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-9/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-9/</guid><description>酥米关于1月1日到1月16日最近的小事</description><pubDate>Fri, 16 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;千里远送，传情更甚&lt;a href=&quot;#千里远送传情更甚&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;今天（1月16日）突然想起前几天虫虫寄来的明信片，放学了匆匆跑回家奔向信箱。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk9-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;打开信箱，在一叠广告传单下面，果然躺着一张边缘微皱的卡片。重庆的邮戳，1月12日寄出——原来它在路上整整走了将近四天，跋山涉水来到了我的信箱里面。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk9-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;翻过来。背面是认真写的几行字，写满了祝福——祝我旅途常有小确幸，学业稳步提升。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;“愿你的日子有烟火，心中有热爱”&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这种话平时在屏幕上看到可能就划过去了，但写在纸面上，被人一笔一画写好、贴上邮票、投进邮筒，再辗转三天来到我手里，分量忽然就不一样了。&lt;/p&gt;&lt;p&gt;在这个”随时随地，立刻发送”的时代，一份需要“等四天”的心意，反而显得格外郑重。&lt;/p&gt;&lt;p&gt;谢谢你，虫虫。这张来自重庆的明信片，我会好好的保存在抽屉里面，更会好好的保存于心里。&lt;/p&gt;&lt;p&gt;2026年这才刚开始，就已经有故事可以讲了。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;执笔为剑，终章回响&lt;a href=&quot;#执笔为剑终章回响&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近（1月10日至11日），正是高职考正式考试的日子。&lt;/p&gt;&lt;p&gt;很不幸运的是，我被抽到了最后一个考场，一个考场居然只有四个人考试，两个老师看四个考生，紧张度已经拉满了，不过这四个人的考场，也是前无古人后无来者了哈哈哈😂😂😂。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk9-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;第一天早上先考了语文，怀疑这一次高职考改革了，部分题目和上几年的题目格式稍有区别；比如断句，断句现在是每个句末选择断句，不再是以前的选择题四选一。部分选择题的题目文章连在一块了，前后题有关联性，能明显感觉到难度提升了。最后的作文题差点没有写完。写完只剩下五分钟收卷（幸亏也是凑够了900字😂😂），险些没有时间检查试卷。&lt;/p&gt;&lt;p&gt;下午考了数学，呃，俺数学不行，不作评价，但是听说考了许多高中上面基础的题目，都是职高不学的，比上一年难许多。&lt;/p&gt;&lt;p&gt;第二天早上是考的英语，这一科考起来比前两科轻松多了，完全没有什么难度，甚至感觉在放水，完形填空跟出着玩似的，阅读也都是初中水平，感觉今年高职考最简单应该是英语了😂&lt;/p&gt;&lt;p&gt;成绩还得等这个月月底才出，🌚出的时候就是审判时刻了。（希望能够上岸考个好学校吧哈哈🤔）考完试了，这个学期也快步入尾声了，下个学期再上一个月学之后就是实习了，我现在也没找到合适的工作，打算跟学校跑厂去，不过听说不咋行，所以还在斟酌。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;尾&lt;a href=&quot;#尾&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;新年的这前半个月忙忙碌碌，考完真正放松下来的时候却感到空虚无聊，仿佛缺了什么似的。最近发生的事情不多；我想，就聊到这里了。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>环江漫漫行：五邑公交的路途游记</title><link>https://www.sumi233.top/posts/mouthtalk/jiangmentravel/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/jiangmentravel/</guid><description>酥米的江门蓬江/江海之公交游记</description><pubDate>Sat, 03 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;其实也不知道这么想的，或许是元旦假期高峰期市区太塞太拥挤了吧，也或许是自己不喜欢这样的环境，每次的假期我总有一天反道而行之，去一些没那么多人的地方。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;这次元旦去的是：五邑之城——江门。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;说实在话，我和江门挺有缘分的😂，去过台山，去过开平，去过鹤山，去过新会。就是没有去过江门市区，到里面看看，碰巧最近把广佛通的学生卡办上了，让我得以实现这次旅行。&lt;/p&gt;&lt;p&gt;这次的旅程还是比较遥远的，毕竟江门离佛山市区至少也有40km开头，且公交接驳不便🤔（这个记住，等会要考🌝）。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;至顺德&lt;a href=&quot;#至顺德&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果从佛山（禅城区）、南海，或者广州出发，那就必须得先到顺德然后进行下一步的公交接驳。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_14.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_13.webp&quot; alt=&quot;&quot; /&gt;
直接搭乘佛山三号线即可前往顺德中心城区啦～&lt;/p&gt;&lt;p&gt;这里有两个办法：方案一是搭乘佛山三号线，前往伦教站，出站在伦教公交站搭乘K990前往顺德均安镇。此方法最快速，但最大的缺点是K系快车发车时间很长，等不到或者赶不上基本上旅程泡汤。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_12.webp&quot; alt=&quot;&quot; /&gt;
方案二是我今天使用的方案（因为我没赶上K990🙄，旅程差点泡汤了），乘坐佛山三号线到东乐路地铁站下车，在一旁的”东乐路地铁站”公交车站搭乘391或k391去往均安（两线只是部分站点和票价不同，可以酌情选择）。这两方案都需要在均安医院或者均安交通中心下车（最好是均安医院）。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_11.webp&quot; alt=&quot;&quot; /&gt;
别问为啥我在顺德客运站上车，问就是当时脑子懵了，忘记了391也经过地铁站，错误的搭乘了公交前往顺德客运站🌚&lt;/p&gt;&lt;p&gt;391和K391速度上本质没有什么区别，顺德公交的师傅看到站点没有人也会自行飞站（实际上也都是需要1个小时多点）才能到均安镇
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_10.webp&quot; alt=&quot;&quot; /&gt;
在这不得称赞一下顺德的公交了，师傅人狠话不多，镇巴快线公交飞60km/h，25公里距离拉到1小时出头，吊打南海慢巴😳。我刷学生卡的时候司机还好奇了一下我的学生卡（可能是广佛通政策没出两天我就跑过去刷的缘故😂）&lt;/p&gt;&lt;p&gt;由于当时已是中午时分，并且接下来要转乘的公交车还没有发车，于是我就跑去站牌后面的小店吃个中午饭。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_9.webp&quot; alt=&quot;&quot; /&gt;
u1s1，这个蒸饭价格吓到我了，好久没有见过10块以内的蒸饭了，佛山里面这蒸饭至少也得12块往上了。因为在等公交车的缘故我没敢点，怕吃完等不上公交了🌚
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_8.webp&quot; alt=&quot;&quot; /&gt;
点了个云吞，要12块钱，意外的味道很不错。云吞是广式云吞，云吞皮没有碱水味道，肉馅里面有冬菇，而且不散，很有肉味，汤底很鲜（不像是味精勾兑出来的汤底，应该是放了虾米），价格很实惠而且量也不少。店铺中午的时候也差不多坐满了一半人，应该是本地人经常去的店。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_7.webp&quot; alt=&quot;&quot; /&gt;
光盘了，真美味～😍（不过均安最有名美食的是烧猪吧，下次一定试试🌝），对了均安也是著名打星李小龙的故乡，刚刚坐391的时候能看到站点”李小龙故居”和”李小龙乐园”，都是纪念来李小龙的～&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;顺德至中山&lt;a href=&quot;#顺德至中山&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;咳咳，说远了，吃完之后我们就该正装出发了。回到公交路牌（无需过马路对面），我们需等待399路公交车前往中山古镇城轨站方向。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_6.webp&quot; alt=&quot;&quot; /&gt;
冷知识：顺德均安与江门隔着了中山古镇，我们需在中山境内搭乘跨市公交前往江门外海。还有一个冷知识😏：399路公交车虽然是顺德区公交排号的公交，但是运营方是中山和顺德各1&amp;lt;1发车&amp;gt;。中山方的车辆可以通过刷中山通五折乘车，而顺德方的车没有（其实对于我来说没有什么区别，刷学生卡也是5折🌝）。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_5.webp&quot; alt=&quot;&quot; /&gt;
这里居然还有去小榄的公交车，我以为只有容桂和大良里面才有呢。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_3.webp&quot; alt=&quot;&quot; /&gt;
中山的长线公交座位都有软座，很人性化，长途坐着也没这么累😊
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_4.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_2.webp&quot; alt=&quot;&quot; /&gt;
乘上399路之后，经过40来分钟的车程，车辆跨过均安古镇边界，拐入古镇市区。我们需要在古镇的曹一路口站下车（别下错了，因为后面还有个曹二路口，容易混淆了🌚）
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_1.webp&quot; alt=&quot;&quot; /&gt;
想必大家一个看到下面的398（江702）啦～这台就是前往江门外海的跨市公交车。其实说是联合运营，实际上90%都是中山在运营，江门的车少的离谱，以至于我回去的时候坐的也是中山车。这里还有前往中山中心市区的202路公交车（只需要2.75的价格前往中山石岐，十分有性价比）
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_25.webp&quot; alt=&quot;&quot; /&gt;
上车刷上中山通，公交车穿过古镇市区，到达西江支流边上，跨过外海大桥，我们便到达了江门市江海区。（外海大桥高峰期十分塞车，建议不要在傍晚或者早上时分前往这里）
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_24.webp&quot; alt=&quot;&quot; /&gt;
车辆会在下桥后拐个弯，到达外海街道。我们需要在外海中学站下车，这里有前往江门市区（蓬江区）的公交车。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_23.webp&quot; alt=&quot;&quot; /&gt;
我们需要走过外海中学旁边的人行天桥，去对面坐13或者25路公交车前往体育场或者巴士总站，建议乘坐13路。25路公交车可能会开行绕路线，会增加进城的路程和时间，如果是快速进入市区的话并不推荐。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_22.webp&quot; alt=&quot;&quot; /&gt;
在外海中学等车的时候我在旁边看到了陈少白故居，这应该是一处景点。还挺不错的🌝
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_21.webp&quot; alt=&quot;&quot; /&gt;
上车之后又是40分钟过去，我从体育场下车，总算是到达了蓬江区
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_20.webp&quot; alt=&quot;&quot; /&gt;
可能是因为元旦的缘故，这里傍晚时分有些塞车，不过人流感觉比佛山少点，总体来说市区里面的城建啥的也还挺不错的
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_19.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_18.webp&quot; alt=&quot;&quot; /&gt;
在里面到处逛了会，发现了这个
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_17.webp&quot; alt=&quot;&quot; /&gt;
每次在江门看到这个我就有点想笑，胜似地铁柱子，结果上面写着公共厕所（在鹤山玩的时候也看见了）
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_16.webp&quot; alt=&quot;&quot; /&gt;
真正的地铁柱子对比一下，除了颜色不同，其他细节长的一模一样😂&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;归程&lt;a href=&quot;#归程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这个没啥好说的，原路返回就行，但是在这里我吃了个大坑！江门公交的发车时间飘忽不定（问了一个在江门的朋友才知道的），车来了的发车时间表约等于摆设，搞得我在公交车站等了将近一个小时车回外海🌚😭
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/jmzl_15.webp&quot; alt=&quot;&quot; /&gt;
属实折磨人了，原本显示15.20的发车，等到四点出头才发车，属实是悲（）&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;价格时间！&lt;a href=&quot;#价格时间&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;算了一下🌝，转了一趟地铁要5块，到均安的车要4块，到中山的车也要四块，过江门3块钱，江门公交车进市区2块。&lt;/p&gt;&lt;p&gt;一共是 &lt;code&gt;5+4+4+3+2=18&lt;/code&gt;&lt;/p&gt;&lt;p&gt;单程18块左右，来回则需要36块，不过我有公交卡再加上中山通半折，来回也才22块左右，性价比还是挺不错的，就是十分的坐牢，通勤100%不会选的那种，去一趟4个小时，回一趟4小时，应该没有人受得了了🌚🌚🌚😂&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>2025最后一天，最近的碎碎念</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-8/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-8/</guid><description>酥米关于12月底最近的小事</description><pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;广佛通学生卡&lt;a href=&quot;#广佛通学生卡&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近佛山全市公交价格统一改革，广佛通也顺势推出了学生卡（之前是没有的，办学生卡只能去广州办），现在出了我也就赶紧办一张了&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk8-3.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk8-4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;没有交通联合，比较可惜，不过广佛地铁全线网五折，佛山公交五折，还是挺不错的，毕竟在外省估计也不刷这玩意，卡的样子和羊城通的学生卡长的差不多，只是标志换成了广佛通。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;十年之约&lt;a href=&quot;#十年之约&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本站已于12月30日正式加入十年之约活动啦！俺很开心也很荣幸参加这个活动，本人一定会将小站坚持开下去的！&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk8-1.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk8-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;又双叒叕降温了&lt;a href=&quot;#又双叒叕降温了&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;广东新一波冷空气即将来临，大家记得保暖哦！&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk8-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;再见2025，你好2026&lt;a href=&quot;#再见2025你好2026&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;今天是2025年的最后一天啦～ 当零点的钟声敲响，烟花在夜空炸开最美的弧度，这一年的故事终于翻到了最后一页。&lt;/p&gt;&lt;p&gt;回望这365天，有赶作业复习试卷到深夜的疲惫，有和朋友约着到处去玩的热闹，有第一次独立解决技术问题的成就感，也有偶尔迷茫纠结的小失落。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;但所有经历都成了成长的养分，让我们慢慢变得更沉稳、更坚定。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;2026年，愿我们带着旧年的收获继续前行，学业上稳步提升，技能上不断突破，身边有家人好友相伴，日子有烟火气点缀，每天都能遇见小美好，岁岁常欢愉，年年皆胜意！&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>2025冬至安康</title><link>https://www.sumi233.top/posts/mouthtalk/2025winter/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/2025winter/</guid><description>酥米2025冬至安康</description><pubDate>Sun, 21 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;差不多冬至 一早一晚还是有雨~&lt;/strong&gt;&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;冬至&lt;a href=&quot;#冬至&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;又是一年冬至，在广东人的观念里面，冬大过年，想必大家都能知道冬至对于广东人的重要性了。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025winter-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;家里难得大搞一顿，杀鸡拜神，用神逢庆祝今年的成就，也盼望明年能有更好的气运&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025winter-6.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;亲人聚在一起吃顿饭，吃个汤圆，是对冬至的重视和期盼，也是亲人朋友难得一聚的时候&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025winter-7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;最近的碎碎念&lt;a href=&quot;#最近的碎碎念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近玩星露谷物语有点入迷了哈哈&lt;/p&gt;&lt;p&gt;肝了55个小时，把社区献祭搞完了（我可能是最慢的了哈哈哈），然后弄了一下农场的美化，下一步就是把电影院献祭做完啦（又开始肝肝肝了）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025winter-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025winter-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025winter-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;有一说一，星露谷有一种让人想肝肝肝的魅力（BUSHI）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025winter-4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;最后&lt;a href=&quot;#最后&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;祝大家过冬快乐（冬至安康）来年顺顺利利，平平安安，健健康康，快快乐乐！&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;</content:encoded></item><item><title>回望2025,回望自己</title><link>https://www.sumi233.top/posts/mouthtalk/2025re/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/2025re/</guid><description>酥米回望2025总结</description><pubDate>Fri, 19 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;2025年还差几天就快要结束啦！提前祝大家元旦快乐～&lt;/p&gt;&lt;p&gt;今年发生了很多事情，虽然平淡，但不平凡，有苦涩的回忆，也有兴奋愉悦的记忆，也有酸涩的没有完成的遗憾。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;年初&lt;a href=&quot;#年初&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;今年春节，我跑去了亲戚那里打工，去餐厅端盘子，过程痛苦并快乐着，快乐是因为有钱拿，痛苦是因为过年期间快忙不过来了😂😂😂，流水线一般的工作。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;春节人多，餐厅人满为患，都需要预约进去了，盘子端到手酸，站到腿疼，每天微信都能刷好几万步（不过很值啊，收到很多的工资，也是我人生中第一次长期打工收到这么多工资，还是很有成就感的哈哈😂）&lt;/p&gt;&lt;p&gt;年初过年之后，我购入了一台小米平板5，一直服役至今，给它刷入windows，以满足我偶尔在学校修改文件的需求，同时也可以在班里面写写代码和文章，虽然骁龙860性能不怎么样，但是对于我来说也够用啦，就是应用开多了会卡，正在考虑要不要扩容哈哈😊，不过得等明年春节打工攒钱啦&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-20.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;年初我还去了广州增城区（荔城），去探访求生之路2 广州增城圣地（好远啊，坐地铁80多公里要3个小时），感觉身临其境了哈哈，梦回在游戏拿喷子突突突的场景&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-19.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;接下来去了南沙区最南端，万顷沙镇十九涌，可惜当时大湾区体育中心还没修好，不过国庆去的时候已经修好啦&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-18.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-17.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;去了从化区太平镇，追寻北回归线的痕迹&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-16.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-15.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;五月份去了黄埔区坐黄埔有轨电车一号线，电车绕了整个萝岗市区，现在还留有单程票呢&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-14.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;五月底还去探访了快要报废的高明有轨电车（其实是公交车去的高明找同学玩）隐隐约约的佛山地铁标志（难绷）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-13.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-12.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;年中&lt;a href=&quot;#年中&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;年中放假，俺自提了人生中第一台电动车，九号的fz110，因为年底十二月电动车限制新国标了，所以才买（也算是完成一个心愿啦）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-11.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;有了车那几个月我到处跑哈哈（其实也是怕自己心态变了，变懒就不想出来了哈哈），逛尽了整个佛山，还去广州的一些地方。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-10.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;有点遗憾的是江门只去了鹤山，以后想去江门江海那些地方看看（明年应该可以实现），我本来想和朋友开电鸡勇闯珠海，不过珠海禁电动车，遂放弃。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-9.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;这车挺不错的，续航长，车耐造，防震也不错，而且智能功能和定位都很完善，唯一不好的就是充电太慢了，要7-8个小时才能充满（在考虑要不要买快充了）&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;今年去的一些地方&lt;a href=&quot;#今年去的一些地方&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;佛山（高明，三水，顺德大良）&lt;/li&gt;
&lt;li&gt;广州（南沙，番禺，荔湾，越秀，海珠，黄埔，增城，从化）&lt;/li&gt;
&lt;li&gt;江门鹤山&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;博客联盟&lt;a href=&quot;#博客联盟&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;七、八月的时候，我终于重新拾起我的博客（已经大半年没有更新啦），重新装修了一番，anzhiyu主题旧版有很多东西失效了，于是我全部换成新版的，修复了许多的功能。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;顺带买了个新域名sumi233.top，淘汰掉以前那个又长又不好记的xyz域名（xyz太贵了，下一年要70块）。&lt;/p&gt;&lt;p&gt;这时我在github认识了中国博客联盟，里面有很多优秀的个人博客，我也参与其中。后面还认识了blogclub和博友圈，个站商店等等。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;再期间我也认识了不少的朋友（彬红茶，李哥（李的日志），军爸，李开开大佬等），也和不少的大佬交换了友链。在他们的鼓舞下，我也开始常常更新文章，博客越来越完善，也优化得越来越好。&lt;/p&gt;&lt;p&gt;我还开发了一个小型的复古风导航网站，用来收藏我的一些常用的网站链接&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-6.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;十八岁成年&lt;a href=&quot;#十八岁成年&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;今年我成年啦～变成了成年人虽然没啥变化，但也要背负起成年人的责任了。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我还开了一个属于自己的公众号，在b站开启了我的第一场直播，挺有乐趣和成就感的哈哈哈😂🌝&lt;/p&gt;&lt;p&gt;学校举办成年礼也十分精彩，这次我借到了单反，还找了许多的旧同学、新同学还有老师合影留恋&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;年尾&lt;a href=&quot;#年尾&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;年尾注定是匆匆忙忙的，学校里的备考任务忙不过来，考试一场接着一场，作业一堆接着一堆，虽然痛苦但是蛮有成就感的。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;明年年初就要高职考，年底全部精力都塞在学习上了，博客更新频率也在减少，不过我也没有放弃更新，毕竟写写文章可以锻炼自己写作的能力，何乐而不为呢？&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;听的歌&lt;a href=&quot;#听的歌&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;今年居然听了3万分钟的歌，比去年还多哈哈&lt;/p&gt;&lt;p&gt;我想我现在应该只是一个听抒情、RNB、jPop的俗人吧哈哈，以前还喜欢听英文歌的，现在也少听了。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;看的视频&lt;a href=&quot;#看的视频&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;居然是B站全勤奖😂&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2025re-21.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;回望2025，虽平淡，但精彩～&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;但愿明年能够更上一层楼，高职考能考到一个好的学校，心想事成，万事如意，事事顺心，身体健康（也祝大家啦～）&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米碎念之“时光慢递”明信片和手搓导航网站</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-7/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-7/</guid><description>酥米关于12月10到17日最近的小事</description><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;“时光慢递” 明信片活动&lt;a href=&quot;#时光慢递-明信片活动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk7-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;最近偶然看到并且参加了虫虫大佬的明信片活动，里面有一句话特别打动我&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;这不仅仅是一张卡片，这是我用最传统的方式，在这个过于喧嚣的时代里，为每一位博客世界的朋友献上的真诚致意。在这个什么都可以速食的时代，我选择用最慢的方式，最用心的姿态，告诉你：在这个世界的某个角落，有人愿意为你停下脚步，用心书写，耐心等待。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;是啊，快节奏的生活里面，大家都在步履中抹平了生活的棱角。&lt;/p&gt;&lt;p&gt;如今还能有如此真情真挚的“网上邻居”，放慢脚步，为彼此献上祝福和致意，实属十分不易。&lt;/p&gt;&lt;p&gt;这一张小小的明信片，却蕴含着从几百公里甚至几千公里外传递的温暖和力量。&lt;/p&gt;&lt;p&gt;虽然现实彼此为陌生人，匆匆路过。网络中却是惺惺相惜的知己，彻夜长谈。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;搓了个导航网站&lt;a href=&quot;#搓了个导航网站&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近发现博客友链页面放推荐网站会拖慢获取延时的时间，遂打算写一个小型的静态导航用来放推荐网址&lt;/p&gt;&lt;p&gt;突发奇想，要不做成复古风得吧，于是这个项目就悄然诞生啦~&lt;/p&gt;&lt;p&gt;此站基于本人的奇思妙想+基础代码和Trae的Ai辅助实现~~&lt;/p&gt;&lt;section&gt;&lt;h3&gt;地址&lt;a href=&quot;#地址&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;项目开源地址：&lt;/p&gt;&lt;p&gt;{% link SumiNav,Github,&lt;a href=&quot;https://github.com/huang233893/SumiNav&quot; target=&quot;_blank&quot;&gt;https://github.com/huang233893/SumiNav&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;欢迎戳下面来网站游玩：&lt;/p&gt;&lt;p&gt;{% link 酥米的个人导航页,Supermini233,&lt;a href=&quot;https://my.sumi233.top&quot; target=&quot;_blank&quot;&gt;https://my.sumi233.top&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;截图&lt;a href=&quot;#截图&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk7-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk7-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;技术栈&lt;a href=&quot;#技术栈&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Vite：快速的前端构建工具&lt;/li&gt;
&lt;li&gt;98.css：Windows 98风格CSS框架&lt;/li&gt;
&lt;li&gt;Vanilla JavaScript：原生JavaScript开发&lt;/li&gt;
&lt;li&gt;HTML5：语义化HTML结构&lt;/li&gt;
&lt;li&gt;CSS3：现代CSS特性，包括Flexbox和Grid布局&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;网站特点&lt;a href=&quot;#网站特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;复古Win98界面&lt;/li&gt;
&lt;li&gt;响应式布局&lt;/li&gt;
&lt;li&gt;支持拖拽图标更改位置（手机版暂不支持），支持右键修改网页图标和内容（手机长按也有菜单）&lt;/li&gt;
&lt;li&gt;支持自定义添加链接，支持自定义外观&lt;/li&gt;
&lt;li&gt;本地保存数据，支持一键重置&lt;/li&gt;
&lt;li&gt;SEO优化：支持搜索引擎优化&lt;/li&gt;
&lt;li&gt;简单的分类配置&lt;/li&gt;
&lt;li&gt;做了配置文件分离，和静态博客一样编译前随心所欲配置网站配置和默认链接导航&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;文件结构&lt;a href=&quot;#文件结构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;此处仅供参考&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SumiNav/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── public/                # 静态资源目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── favicon.ico        # 网站图标&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── src/                   # 源代码目录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── config.js          # 全局配置文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── default-links.js   # 默认链接数据&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── windowConfig.js    # 窗口配置文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── main.js            # 主要JavaScript逻辑&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── style.css          # 样式文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── index.html             # 主HTML文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── package.json           # 项目配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── .gitignore             # Git忽略文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└── README.md              # 项目说明文档&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;浏览器支持&lt;a href=&quot;#浏览器支持&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Chrome 88+&lt;/li&gt;
&lt;li&gt;Firefox 85+&lt;/li&gt;
&lt;li&gt;Safari 14+&lt;/li&gt;
&lt;li&gt;Edge 88+&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;即将高职考&lt;a href=&quot;#即将高职考&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;距离高职考仅剩24天（明年1月11日左右考试），学校取消了大部分专业课来备考三科主科课程，现在上课除了刷卷子就是复习，除了复习就是写作业，没啥好说的，枯燥无聊但是必须经历。&lt;/p&gt;&lt;p&gt;还是希望自己能考好吧，上一次的统考里面分数情况不是很好，考出来的分数只是刚好可以去公办院校，还是得加油努力一把&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米的碎碎念（6）</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-6/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-6/</guid><description>酥米关于12月1到9日最近的小事</description><pubDate>Tue, 09 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;成人礼&lt;a href=&quot;#成人礼&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;上星期四上午，学校本部开展了毕业礼活动，这也是我心心念念最期待的活动，可以和朋友们一次性合影完，可以在毕业后留个纪念&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk6-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我找了很多同学朋友合照🌝（照片涉及隐私就不摆出来了），玩的很开心，总体来说是个很圆满的成人礼了。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk6-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;走过成人门那一瞬间，我才深深感觉到，我成年了&lt;/p&gt;&lt;p&gt;{% video &lt;a href=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk-6-8.mp4&quot; target=&quot;_blank&quot;&gt;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk-6-8.mp4&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;我还拍了视频，记录这神圣的一刻🥰&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;去了顺德玩&lt;a href=&quot;#去了顺德玩&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;上周六跑去顺德玩了😂，第n次去，比较特别的是这次是骑车去的哈哈，从禅城骑过去也要2小时左右，过了北滘的顺德河就是伦教大良了，去吃了点特产双皮奶和美食，到顺峰山兜了两圈&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk6-1.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk6-2.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk6-6.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk6-4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;可恶的诈骗电话&lt;a href=&quot;#可恶的诈骗电话&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这年头诈骗太猖狂了，自从高三之后，一直有大专院校的推销电话向我打来，无一例外都是问我去不去这个学校，去不去那个学校（这种推销十有八九是假的，大家不要相信）。最离谱的是居然沿着我的电话号码添加我微信，真是离谱的不得了&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk6-7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;都不知道是不是真的是佛山大学的😅&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;高职考体检&lt;a href=&quot;#高职考体检&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;星期二学校高职考体检，这可能是我在职中以来最详细的一次体检了😂，X光，内外科，耳鼻喉，口腔，听觉嗅觉，视力色觉，抽血化验，通通给我来了一遍。&lt;/p&gt;&lt;p&gt;难绷的是，这次体检医生测出来我有色弱，这意味着部分的项目我不能正常填报（运输，医学，心理，艺术等），不过我也不报那些东西，对我来说其实没有太大影响。&lt;/p&gt;&lt;p&gt;体重身高测出来发现我有点胖了，以前只有120多的，现在往130飙了（得减肥了😭）&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>海滨间的慢行笺：珠海公交的路途漫游录</title><link>https://www.sumi233.top/posts/mouthtalk/zhuhaitravel/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/zhuhaitravel/</guid><description>酥米的珠海香洲慢游之游记</description><pubDate>Sun, 30 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;往日记忆&lt;a href=&quot;#往日记忆&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;去年夏天暑假，心底忽然冒出一个大胆的念头，且竟真的把这份冲动酿成了行动——从佛山搭乘公交，奔赴珠海。当我把这份随性的计划说与朋友，两人一拍即合，匆匆收拾好简单行囊，次日便迎着晨光踏上了旅程。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;途中&lt;a href=&quot;#途中&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;一大早，我们就搭乘公交和地铁前往广州沙园地铁站，只因这里有一趟公交，仅需6元（现在降价到4块了）即可到达南沙区蕉门，各位想必猜的没错，就是&lt;strong&gt;南沙k8&lt;/strong&gt;啦～ 约莫一个小时吧，我们就到达了沙园（凤凰新村公交站），由于去往蕉门的车还没有发车，我们还去喜茶喝了一杯哈哈哈&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;等了半个小时，总算是吧车盼来了，让我惊讶的是，&lt;strong&gt;南沙k8&lt;/strong&gt;六块钱的票价，居然还有软座（它真的我哭死）。公交车开车后，司机提醒我们系好安全带，后面我们才知晓原因，直达车直接走高速（广州环城+南沙港快速），在给我一种坐大巴车的错觉。由于是上一天临时起意，我在车里面计划好了行程，还定好了酒店&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;说定好是真的定好🌝，本来计划是在南屏定民宿的，后面发现那里太偏了，离景点很远，于是就选了拱北旁边的一家公寓（其实挺不错的，大床房两人住两天也才170来块），地理位置优越，下楼就是美食街，出去就是公交站，距离拱北珠海站2km，而且离各个景点很近，都在4km以内。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;一个半小时车程后，我们终于到达了南沙蕉门公交枢纽站，下一条我们等待的公交线路是&lt;strong&gt;中山K981&lt;/strong&gt;，这次我们需要到达火炬片区乘坐公交车前往南朗片区&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-38.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;也等了半个小时，&lt;strong&gt;K981&lt;/strong&gt;缓缓驶来公交车站，刷上中山通，上车静候到达火炬开发区。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-37.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;想吐槽的一句，中山的路真的太烂了，广州南沙的路很平很平，一过洪奇沥大桥到中山那路立刻烂炸了，抖了大概也有1个半小时，我们到达了火炬技校站&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-36.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后转公交车（具体是几路公交车我忘了），到达南朗街道，约莫也有1小时吧（太久了我都忘光光了）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-35.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后我们又等待了20分钟，途中还去买了点零食（太饿了，中午饭是没吃的，水是上车一刻没喝过的）。最后终于等到了&lt;strong&gt;中山K28&lt;/strong&gt;公交车，我们也将搭乘这路公交车，前往我们这次旅程进入珠海市区域的第一个站——城际珠海北站！&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-34.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;说实话，&lt;strong&gt;K28&lt;/strong&gt;经过的都是多人的地方，途中经过的翠亨片区在高峰期堵死了，况且当时是暑假，那边有一个孙中山先生的故居，很多人过去旅游游玩，导致我们在这里堵了将近2个小时才进入珠海市香洲区&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;到珠海啦～&lt;a href=&quot;#到珠海啦&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;跨过珠海经济特区的门牌，跨过一条小涌，我们总算是到达了珠海北站啦～&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-33.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;此时已经下午4.20分了，我们从早上9点半开始坐车，整整6小时没有进食，饿到要倒下了，所以我们并没有急着坐公交车，而是跑去旁边的饭店吃了一份猪脚饭😂，有一说一，珠海的物价我没去之前觉得应该会很高，但是并没有，感觉和佛山广州这一带差不多，吃个饭也才花了15块（对比深圳物价真的可以了）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-32.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;随后我们乘坐&lt;strong&gt;K1&lt;/strong&gt;路公交车，横跨唐家湾和明珠片区，前往拱北片区的夏湾。珠海的公交车真的是为旅游而设计的，全部线路都收1块钱，而且&lt;strong&gt;K1&lt;/strong&gt;全程沿着情侣路走，能全程看到整个珠海市区的海滨美景，便宜了我这种（伪）公交迷😘。也是花了大概2个小时，我们终于到达了我们的公寓。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-31.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-30.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;噢～这太令人兴奋了，我们花了整整8小时的公交路程，乘坐地铁和公交就到达了珠海香洲中心。（不过这真的很累，导致我回去的时候直接坐高铁了😅）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-29.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;到公寓整理完行李之后，傍晚我们在美食街觅食找吃的。吃完就要进行下一步啦，那就是去海边消食走一会，得亏我的提前规划，在刚到珠海的时候用6.9的价格买下了共享单车周卡（不限扫码次数，每次免费40分钟），理论上我们可以骑车去任何地点哈哈哈（卡bug了属实是）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-28.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我们缓缓骑到海边，在海边游走消食。这是我第一次看海。从小我就没有看到过真正蔚蓝的大海，终于在这次见着了。&lt;/p&gt;&lt;p&gt;夜晚的路灯配上清新咸咸的凉快海风，情侣路海滨观景台的人来人往，蓝色中混着微绿的的海水在冲刷着海边的礁石。无一例外都在证明着我真的来到了海边的事实&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-27.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;海风呼呼的吹着，我抬起头，看见对岸的港珠澳大桥灯光闪烁，配合着深蓝呼应的海水，千百盏灯在我的眼前互相辉映，形成了一条长长的生命线，犹如一条巨龙，伸向了珠江对岸，链接着大陆与香港澳门的往返之线，这景观尤为绮丽壮观。祖国的基建如此宏大雄丽，让我忍不住惊叹出声。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-26.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;由于经历一天的长途波折，而且明天一早还有一个重大的计划要完成，我们也没有在海边逛多久，便匆匆赶回酒店休整。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;追风赶日&lt;a href=&quot;#追风赶日&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;旅途的第二天清晨（早上5点左右）。我在朋友的提醒下被唤醒，缓了一会才匆匆想起，今天要去爱情邮局”赶”日出，我们速速收拾好装备，带上全副身家（防晒、雨伞、随身包）匆匆了走出了酒店。&lt;/p&gt;&lt;p&gt;忽然记起，清晨时分，珠海公交还没有开出第一班公交车。于是我们选择了打车出行，就算是凌晨，由于是旅游高峰期的缘故，很容易就接到车了，经过了半个小时车程，我们到达了爱情邮局&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-25.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;不得不说，凌晨来看日出的游客也很多。临近日出，意外发生了，天空中淅淅沥沥的下起了小雨，厚厚的乌云盖满了天空，天空也从微微橙色渐渐变黑（广东常见天气了，突然下雨）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-24.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我们本以为日出之行要泡汤了。好运的是，半小时后，雨渐渐停了，乌云亦也渐渐散去，露出了藏在层层乌云中的金黄色日出&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-23.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我匆忙跑去，只见上空的暮色云层，暗灰的云絮里，漏出几缕暖黄的落日余光，像是给厚重的天幕镶了道金边，朦胧又温柔。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-22.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;爱情邮局的白色灯塔，立在初色里。灯塔黑白相间的轮廓，和身后渐变的粉橙早霞、远处港珠澳大桥的轮廓重叠在一起，刚下完雨的乌云还带着湿润的灰调，是海滨独有的浪漫景观。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-21.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;一旁的广场上，人群热热闹闹地聚着，都在记录日出的第一道晨光。买饮料的摊位前围了不少人，旁边的打卡点也有人举着手机拍照，湿润的地面泛着灯光，泛起海滨日升鲜活的烟火气。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-20.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;日出过后，由于我们昨天前程剩下的疲惫还是挥洒不去，加上时间还早。于是我们决定先返回酒店休息，再进行下一步。于是我们匆匆赶回公寓（顺带吃了个早餐），就躺平睡大觉了。其实在途中坐错车了，换了一条线才回到公寓里（难崩。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;单车漫漫游&lt;a href=&quot;#单车漫漫游&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;伴随着一阵吵闹的铃声，早上10点，我们从床上弹起来，乘坐公交车来到情侣路，扫上一台小单车，正式开始这次的珠海之旅。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-19.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我们沿着情侣路，骑了大约3km的路程，来到了香炉湾海滨沙滩，我们本想下去玩玩水，不过天气过于炎热，加上人也很多（社恐），于是就没有下去。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-18.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我们骑车到达了本次旅途第二个景点，来到了珠海，怎么能不来打卡珠海渔女呢？找了个就近的车位锁好车，沿着海边步道走了几分钟，就远远望见那尊石雕像立在礁石上。走近了看，裙摆的纹路很清晰，石头的皱纹展现着满满的历史痕迹。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-17.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;传说南海龙王七公主，为香炉湾的风光与人间烟火倾心，化身渔女下凡，与渔民海鹏相恋。却因手镯误会险些丧命，海鹏历经千辛寻得还魂草，以鲜血浇灌数年才救活爱人，这段仙凡绝恋也成了珠海浪漫的源头。如今香炉湾畔的珠海渔女雕塑，是1982年雕塑家潘鹤设计的城市标志，由70块花岗岩打造而成。她领戴项珠、身掮渔网、手举珍珠的模样，既呼应了传说，也藏着珠海的渔业传统，更展现出珠海这座海滨城市的魅力风情。&lt;/p&gt;&lt;p&gt;拍照打卡后，我们继续扫上单车，前往下一个景点——城市阳台，这里很漂亮（忘记留下照片了，当时太热了，我们本来不想进去的，但是还是进去吹了会空调doge），但是很多人，我们没有在这里呆很久，就匆匆的赶往了下一个景点&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-16.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;对的，就是野狸岛！众所周知，野狸岛没有野狸（bushi），岛上风景很不错，有座山围绕这整个海岛，岛内有环岛路，可以将岛上一周的风景好好的游览一遍&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-15.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-14.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-13.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;继续骑着车到野狸岛后面，下一站就”飞”进了珠海大剧院——也就是大家常说的“日月贝”。抬眼就撞见那两瓣巨大的白色贝壳，磨砂质感裹着利落干净的线条，阴天里也透着股舒展的现代化的宏华之美。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-12.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;路边聚着不少游客有人去往日月贝的打卡牌前合影留恋。海风裹着咸味儿和热气吹过，日月贝剧院、人群和亮着灯的地下广场凑在一起，这地方很奇妙——既有海滨的松弛，又有现代建筑的亮眼，真是珠海当之无愧的“城市名片”。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-11.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;夜幕渐渐降临，广东的魔变天气开始发力，天空中的雨从小雨的淅淅沥沥逐渐变得越来越大，这场大雨打了我们个措手不及，直接给我干城市广场里面等雨停了，最后我们还是败下阵来（因为雨一直不停），考虑选择返回公寓休息，只不过野狸岛的出入口早被高峰期的车辆塞个水泄不通，公交车站”塞”满了返程的人流，我们只能期盼着公交车能早点晃进车站。&lt;/p&gt;&lt;p&gt;等了将近一个小时，我们终于上到了&lt;strong&gt;Z11&lt;/strong&gt;公交车，又继续被人群拥挤了40多分钟，我们终于回到了公寓，也顾不上吃饭了，先冲个澡舒服一下（因为衣服全都湿了）。&lt;/p&gt;&lt;p&gt;洗完澡后我们才考虑了吃食的问题，我朋友下去美食街找吃去了，而我因为预算问题，选择在呆在公寓点外卖（没钱了🌚😭）。吃完饭和朋友打了会游戏，沉重的身躯躺在床上，这一天也算是在酸甜中结束了。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;旅程返程结束&lt;a href=&quot;#旅程返程结束&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;第二天早上，朋友说想要去打卡抖音上的团购美食（但是我预算不够了），于是让他自己去玩，而我自己则躺公寓里睡大觉。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-10.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;一觉中午起来，已是12点30，公寓老板提醒我要退房了，我们抓紧收拾好行李，点了个外卖解决完中午饭，就直接往珠海站赶。由于珠海站离公寓很近，我们直接扫了台单车过去&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-9.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;珠海站是广东少有的尽头式车站，也是拱北口岸的所在地，是通往澳门特别行政区的重要脉络，这里据说有很多免税店，但是我的预算不多了，买不了特产手信，下次专门去澳门再买（至于为什么没有去澳门，其实是我忘记办港澳通行证了）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我乘坐的是c7700次列车，3点发车，不过我们过到珠海站才1点多，于是我们直接在珠海站硬控了2小时（其实是没招了，途中又下雨了，没法在澳门边上闲逛）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;煎熬的两小时等待，终于上车了呜呜呜呜&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-6.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;太难绷了，我本来买靠边位置就是为了看风景，结果你告诉我这个靠边座位在窗户边上呜呜呜，运气背到家了🌚🌚🌚&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;大概一个小时的高铁旅程，我们终于回到了佛山市南海区狮山镇佛山西站，这次珠海之旅也是顺利的画下了一个句号。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/zhyj1-4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;一些碎碎念&lt;a href=&quot;#一些碎碎念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这一次算是我第一次全盘自己操刀自己的出游计划，也是第一次尝试公交长途旅行，全程自己订票自己规划。这种自由规划，随去随走的感觉真不错（），希望下一次去长途也能像这次一样顺利，下次长途旅程可能是北京或者上海啦～看看在大城市里面能不能穷游苟活下来🌝&lt;/p&gt;&lt;p&gt;欸对了，应该有人好奇这样坐一趟公交地铁去珠海需要多少钱，我就来算算俺的吧，单程价格。地铁广佛线去沙园要6块，&lt;strong&gt;南沙K8&lt;/strong&gt;需要6块（现在4块）。&lt;strong&gt;中山K981&lt;/strong&gt; 10块，但是中山通打半折5块，坐到南朗要2块，&lt;strong&gt;中山K28&lt;/strong&gt;全程9块，中山通半折4.5元，珠海全市公交线路1块，&lt;strong&gt;珠海K1&lt;/strong&gt;需要1块，加起来差不多是&lt;code&gt;6（4）+5+2+4.5+1 = 18.5（16.5）&lt;/code&gt;差不多是这一个价格，大家也可以参考一下。坐大巴应该29块左右，高铁回到佛山西或者需广州南要80-90块（实际上广州南坐地铁回家也要8块地铁票，我就选择从佛山西坐公交车回家了）&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Windows 11 Insider Preview Build 26220.7262 更新日志</title><link>https://www.sumi233.top/posts/Windows/win11dev7/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Windows/win11dev7/</guid><description>Windows 11 Insider Preview Build 26220.7262 DEV预览版的更新内容</description><pubDate>Thu, 27 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;版本信息&lt;a href=&quot;#版本信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;系统版本：Windows 11 25H2&lt;/p&gt;&lt;p&gt;内核版本：26220.7262&lt;/p&gt;&lt;p&gt;频道：Dev Channel、Beta Channel&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/1-8.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;微软罕见地在周一面向 Dev 频道与 Beta 频道同步推送了 Windows 11 预览体验版更新，此次更新基于 Windows 11 25H2 版本，核心带来实验性 AI 智能体功能、辅助功能语音升级，同时修复多项稳定性问题，并开放两频道临时切换窗口。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;核心更新亮点&lt;a href=&quot;#核心更新亮点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 实验性 AI 智能体功能上线&lt;a href=&quot;#1-实验性-ai-智能体功能上线&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;设置应用新增“实验性智能代理功能”开关，位于“系统 &amp;gt; 人工智能组件”（System → AI Components）路径下。该功能开启后将创建独立的“智能体工作区”，类似 Windows 沙箱但更高效，智能体可在隔离运行环境中执行指定任务。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;权限控制：默认关闭，需管理员权限启用，启用后对所有设备用户生效；&lt;/li&gt;
&lt;li&gt;数据访问：可配置智能体对桌面、文档、下载等“已知文件夹”的读写权限，所有操作均有可追溯日志；&lt;/li&gt;
&lt;li&gt;功能状态：当前仅开放开关测试，智能体具体任务执行能力仍在开发中，后续将通过受控推送逐步解锁。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 辅助功能高清语音与数学朗读升级&lt;a href=&quot;#2-辅助功能高清语音与数学朗读升级&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;旁白（Narrator）和放大镜（Magnifier）正式支持英语（美国）高清语音，基于 Azure 最新端侧文字转语音模型，通过生成式 AI 优化语调和节奏，朗读更自然流畅，可减少长时间聆听疲劳。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;语音选项：提供 Andrew（男性）和 Ava（女性）两款高清语音，支持调整语速和切换语音；&lt;/li&gt;
&lt;li&gt;启用路径：设置 &amp;gt; 辅助功能 &amp;gt; 旁白/放大镜，点击“添加自然语音”下载后即可使用；&lt;/li&gt;
&lt;li&gt;新增能力：旁白首次支持数学内容朗读，初期可结构化朗读 Microsoft 365（如 Word）中的方程式，还原数学表达逻辑，后续将扩展至更多应用场景。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. Click to Do 与教学提示优化&lt;a href=&quot;#3-click-to-do-与教学提示优化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Click to Do 测试新版操作菜单，集中呈现复制、保存、分享等常用选项，当画面出现大型图像或表格时自动弹出，提升操作便捷性；&lt;/li&gt;
&lt;li&gt;教程模式新增“启动教程”按钮，优化说明文字表述，帮助用户快速启动并理解教程流程。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. 跨频道切换窗口期开放&lt;a href=&quot;#4-跨频道切换窗口期开放&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Dev 频道用户可临时切换至 Beta 频道，切换窗口仅在两频道同步推送 25H2 系列更新期间开放。一旦 Dev 频道推送更高版本号更新，切换通道将关闭，下次开放可能需等待一年，微软建议用户在窗口期内评估适合的频道归属。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;功能调整与临时变更&lt;a href=&quot;#功能调整与临时变更&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;暂时关闭“图像对象选择”功能，具体恢复时间将通过官方公告通知；&lt;/li&gt;
&lt;li&gt;重新配置文件资源管理器中 AI 操作（AI Actions）的受控功能推送（CFR）机制，部分用户可能暂时无法使用图像操作和 Copilot 摘要功能，将在配置完成后逐步恢复；&lt;/li&gt;
&lt;li&gt;暂停“新文件夹在标签页而非新窗口打开”功能推送，因前期发现功能异常需优化完善；&lt;/li&gt;
&lt;li&gt;暂时停止“管理员保护”功能推送，后续将基于用户反馈优化后重新上线。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;修复与稳定性优化&lt;a href=&quot;#修复与稳定性优化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;修复 WinRE 与高级启动环境中部分用户键鼠失效的问题，确保应急启动场景的操作可用性；&lt;/li&gt;
&lt;li&gt;解决任务管理器关闭后进程未正确停止，以及启动时意外弹出的问题；&lt;/li&gt;
&lt;li&gt;修复设置 &amp;gt; 系统 &amp;gt; 高级中虚拟工作区选项失效的问题，现已重新开放使用；&lt;/li&gt;
&lt;li&gt;修复设置 &amp;gt; 系统 &amp;gt; 关于中 CPU 信息意外截断的显示问题。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;已知问题&lt;a href=&quot;#已知问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;部分设备点击开始菜单无法打开，可通过 Windows 键正常呼出，该问题可能同时影响通知中心（可通过 Win+N 打开）；&lt;/li&gt;
&lt;li&gt;部分用户的系统托盘未显示应有的应用图标，需等待后续修复补丁；&lt;/li&gt;
&lt;li&gt;深色模式下的复制对话框，文本缩放时滚动条和页脚会消失，替换为白色块显示异常；&lt;/li&gt;
&lt;li&gt;ARM64 设备上的预览体验成员可能遇到 Visual Studio 或依赖 .NET Framework 的应用崩溃，安装最新 .NET Framework 更新可解决此问题。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;更新提示&lt;a href=&quot;#更新提示&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;推送机制：更新采用受控功能推送（CFR）技术，新功能将先向部分用户推送，再根据反馈逐步扩大范围；开启“设置 &amp;gt; Windows 更新 &amp;gt; 获取最新可用更新”开关可优先体验新功能；&lt;/li&gt;
&lt;li&gt;安装方式：符合频道资格的用户可在“设置 &amp;gt; Windows 更新”中手动检查并安装，更新过程中需保持网络稳定，避免中断；&lt;/li&gt;
&lt;li&gt;风险提示：该版本为预览开发版，稳定性不及正式版，不建议在生产设备、关键工作设备或无数据备份的设备上安装；部分功能尚未完全本地化，后续将逐步完善；&lt;/li&gt;
&lt;li&gt;反馈渠道：使用中遇到问题可通过 Win+F 打开“反馈中心”，在对应分类下提交详细场景，助力功能优化。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本文章使用豆包AI基于微软官方更新日志润色编写而成，具体功能体验可能因设备配置和区域设置而有所不同，如有错误，请指出，酥米将会及时更改。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米的碎碎念（5）</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-5/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-5/</guid><description>酥米关于11月14到26日最近的小事</description><pubDate>Wed, 26 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;公交车大巡游&lt;a href=&quot;#公交车大巡游&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;上一周周六日闲来无事，发现佛山南海地图板块剩余九江部分没有探索，于是果断过去&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-15.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-14.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;虽然九江是个镇，但是镇中心环境还是挺不错的，城建也还行（没错，狮山就是说你，拼好镇城建还拉胯）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;由于过九江时搭佛236路公交车发现佛山大道南全程堵车，于是直接从搭江06路公交车回西樵，从西樵回到禅城（反正都差不多4块钱）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;有一说一，佛山的公交车就算是镇巴、城巴发车也很稳定（南海的镇巴有一部分真的会走街穿村），也能维持15-20分钟一班车，况且九江离佛山远得很（过条桥就是江门鹤山市了）听说对面江门的公交车十分难绷，发车时间十分稀烂。（还有一句想吐槽的，可能是人少的缘故，九江和鹤山之间居然没有开行跨市公交，这九江大桥开台电鸡都能过去的距离，对面就是鹤山县城了。只有一条可怜的城巴线路而且还收26块，妥妥割韭菜）&lt;/p&gt;&lt;p&gt;缺点就是南海镇巴真的摇的很慢，能上40都算快了，绕过沙头片区也才15km，用了将近1个小时🌚，好不容易回到西樵。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-3.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;后面突发奇想，想骑共享回家，但是南海西樵没有共享电动，得自己走回禅城区😳，于是就有了接下来的一幕&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-1.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-7.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-13.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;是的，徒步走过了西樵大桥（旧桥人行道年久失修，接缝处下面能看到河面，看得我恐高症犯了🤔，生怕手机摔下去了），桥上风贼大，俺拍了些照，然后就急匆匆跑下桥回禅城了😂。回去在南庄客运站扫了台共享电动，骑着发现不对劲&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-11.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;md，头居然是歪的，我还要骑将近20km，这样可不行，于是我又扫了台蓝鲸号（其实还有NBA（man！）联名款，是黑色的，但是我只找到一台，而且很脏，遂放弃）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-12.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;好像现在的共享电鸡都是大电池了，居然国标跑75km续航，真的牛炸了。还有就是这蓝鲸号虽然电池加量了，但是配置缩水了，车子开不快害得我大桥差上不去，防震跟没有一样，振的我🐮子疼😅。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-2.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-16.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-17.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;沿途风景真不错，当天还有海浪云，日落的时候拍了几张照，好看极了&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-18.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;佩服我自己开18km共享电鸡从南庄回禅城，人都开麻了（应该不会有第二次了🌚）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-9.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;好在旅程是完美的，把南海区的板块探索完了，就剩下三水高明大郊区的其他镇了（不一定能去，都靠山而且很偏的地方😂）&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;web套壳app&lt;a href=&quot;#web套壳app&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;以前不是说要做app吗，但是以我的水平可想而知，肯定是没有做出来啦～不过我最近发现了一个软件，可以吧网页打包成app，于是做了一个小站APP&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-4.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-6.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk5-10.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;算是能用了吧，基本的功能都能用。稍后我将会在小站放一个下载入口（应该会常驻啦），我也会在这里放下载地址～&lt;/p&gt;&lt;p&gt;{% link 酥米阁APP,Supermini233 提取码：sumi ,&lt;a href=&quot;https://www.123684.com/s/mIXlVv-LIrB?pwd=sumi#&quot; target=&quot;_blank&quot;&gt;https://www.123684.com/s/mIXlVv-LIrB?pwd=sumi#&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;毕业照和成人礼&lt;a href=&quot;#毕业照和成人礼&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;上一周学校统一让我们去拍高三的毕业照，最近把图片发出来了，没话说，拍的贼难看，严重怀疑拍照的是学长（没有贬低意思😂😍），整个色调冷到爆表，拍的人脸一点血色都没有😅，整张图片居然只有校长的脸白的最正常（严重怀疑为了这碟醋包的饺子🥟）。&lt;/p&gt;&lt;p&gt;不过很可惜的是，毕业大合照班主任没有到现场（家里有事请假了），也是十分可惜了，整个班拍毕业照没有班主任，放哪个学校都很新奇了😂。&lt;/p&gt;&lt;p&gt;成人礼延期了，这周有家长会和市级统考，导致延期到下周五，期待值又被拉远了😭&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;市级统考&lt;a href=&quot;#市级统考&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这周五就要统考了！听说这次统考按照普通高职考的规格来，因为还差两个月就真正高职考了，所以市内想统考测试全市职校统考水平。这次的考试应该比之前难很多了，我还是好好复习备考吧🌝&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>没有显卡也能在Windows下开星露谷服务器啦！无显卡开设星露谷物语服务器</title><link>https://www.sumi233.top/posts/tutorial/stardew-valley-server-nogpu/</link><guid isPermaLink="true">https://www.sumi233.top/posts/tutorial/stardew-valley-server-nogpu/</guid><description>无显卡在windows下开设星露谷物语服务器</description><pubDate>Mon, 17 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;{% note danger flat %} 星露谷物语本身不存在服务端这个概念，所谓服务器端仅是客户端加装模组的联机模式，望各位周知。 {% endnote %}&lt;/p&gt;&lt;p&gt;众所周知，星露谷物语对于显卡驱动有要求，驱动打不对或者没有显卡就&lt;strong&gt;打不开&lt;/strong&gt;游戏了，这对于一般不带集显（独显）的服务器就是一个十足的劣势了，其实也是有办法绕过的，但是大部分教程都是让你安装Linux还要配置docker容器，其中的难度已经劝退85%的人了，并且还没有算上网络环境导致的下载问题。&lt;/p&gt;&lt;p&gt;最近知道了一个方便的方法在无显卡的服务器在Windows下配置星露谷服务器，&lt;strong&gt;不需要Linux&lt;/strong&gt;，&lt;strong&gt;不需要代码基础&lt;/strong&gt;，&lt;strong&gt;仅需要点击鼠标键盘就行&lt;/strong&gt;。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;需要的东西&lt;a href=&quot;#需要的东西&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;服务器VPS一个，Windows7系统以上（1核2g以上，建议2h2g，不然多人会卡）&lt;/li&gt;
&lt;li&gt;星露谷物语本体（学习版steam版皆可，&lt;em&gt;建议学习版&lt;/em&gt;）我这里使用的是1.6.15（&lt;em&gt;由于版权问题，学习版请自行搜索下载&lt;/em&gt;）&lt;/li&gt;
&lt;li&gt;SMAPI模组加载器（建议版本在4.1.10。网盘中有一个，可以不用跑去github下载，多人服务器模组据说在新版本的模组加载器上会出问题）&lt;/li&gt;
&lt;li&gt;服务器的模组（我已经打包好放在网盘啦，仅在1.6.15上测试正常，其他版本需自行测试）&lt;/li&gt;
&lt;li&gt;mesa驱动，可以在网盘链接中下载，也可以在github下载最新版&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;配置模组和服务端&lt;a href=&quot;#配置模组和服务端&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;解压游戏本体，安装模组加载器（这个网上有教程，比较容易，可以自行在网上搜教程）&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/svs1-2.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/svs1-4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;复制压缩包的所有模组到打过模组加载器的游戏根目录Mods文件夹&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/svs1-3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;至此，服务端的配置也就到这里了，接下来就是修复无独显导致游戏打不开的问题&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;修复无独显导致打不开游戏的问题&lt;a href=&quot;#修复无独显导致打不开游戏的问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;一般没有显卡的情况下，直接打开模组加载器启动游戏，会报一大段红色报错，大概意思就是找不到显卡设备（原版打开直接没有任何反应）。&lt;/p&gt;&lt;p&gt;此时我们就需要Mesa这个驱动啦，它可以虚拟一个3d显卡出来，供星露谷物语使用（实际仍使用cpu进行计算）&lt;/p&gt;&lt;p&gt;下载 &lt;code&gt;mesa3d-25.2.6-release-mingw.7z&lt;/code&gt; 之后，解压它，里面有两个cmd文件，首先运行 &lt;code&gt;perappdeploy.cmd&lt;/code&gt;（使用管理员权限），让它初始化显卡驱动
打开之后一直回车到窗口消失即可，之后运行 &lt;code&gt;systemwidedeploy.cmd&lt;/code&gt;（使用管理员权限），安装Mesa3D驱动，需要下一步的地方直接回车，直到窗口消失，这样就安装完成啦。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/svs1-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;此时可以直接打开游戏测试效果啦！本人亲测可以正常开服使用，并且没有太大的问题&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/svs1-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;小小提一嘴，星露谷的联机挺不错的，和Minecraft基岩版一样，支持跨平台联机。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/svs1-6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;不过星露谷的服务器可比mc服务器占用少太多了，我的i3 NAS随便带。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;公网问题&lt;a href=&quot;#公网问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;纯原版开服建议使用樱花frp或其他内网穿透（&lt;strong&gt;有公网地址最好&lt;/strong&gt;），星露谷物语原生不支持ipv6联机，有条件可以给客户端打ipv6补丁以支持v6公网链接（服务端模组自带ipv6支持）&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;文件链接&lt;a href=&quot;#文件链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;网盘链接：&lt;/p&gt;&lt;p&gt;{% link 需要用到的材料（国内镜像） 密码&amp;lt;38zf&amp;gt;,蓝奏云,&lt;a href=&quot;https://wwtr.lanzouw.com/b0nzni3oh&quot; target=&quot;_blank&quot;&gt;https://wwtr.lanzouw.com/b0nzni3oh&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;以下是原项目地址链接：&lt;/p&gt;&lt;p&gt;{% link mesa-dist-win,pal1000,&lt;a href=&quot;https://github.com/pal1000/mesa-dist-win/releases&quot; target=&quot;_blank&quot;&gt;https://github.com/pal1000/mesa-dist-win/releases&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;{% link SMAPI,Pathoschild,&lt;a href=&quot;https://github.com/Pathoschild/SMAPI/releases&quot; target=&quot;_blank&quot;&gt;https://github.com/Pathoschild/SMAPI/releases&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米的碎碎念（4）</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-4/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-4/</guid><description>酥米关于11月8日最近的小事</description><pubDate>Mon, 10 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;直播间开起来啦&lt;a href=&quot;#直播间开起来啦&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近折腾了一下b站直播姬，想尝试一下直播，虽然知道这是一条难走的路，但是想试试（播来玩玩），欢迎各位在直播的时候过来凑热闹哈哈&lt;/p&gt;&lt;p&gt;哔哩哔哩@Supermini233&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk4-11.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk4-9.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;目前我觉得还是有很多改进的，目前我是使用720p60开播的，主要是怕玩游戏的时候4060撑不住，也还没有直播中转机，可能未来会改成1080p。然后就是弹幕有点小，基本上都看不见，到时候还得调一下&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;瑞幸联名!&lt;a href=&quot;#瑞幸联名&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近瑞幸和鬼灭之刃联名，刚好我的瑞幸账号还有一张26块的电子代金卷，于是3块传奇拿下联名饮料奶茶（）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk4-7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk4-10.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;原价的联动我高攀不起，3块的联动我随便拿下哈哈哈&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;单反！单反！单反！&lt;a href=&quot;#单反单反单反&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近找同学借了一次单反，说实话，单反拍出来的就是和手机有很大的差别，手机拍出片效果还需要仔细琢磨一下，单反那就是随便出片，放几张图给大伙儿看看&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk4-8.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk4-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk4-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk4-3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;在学校拍的哈哈，单反的调色真的很舒服，而且清晰度锐化适度，比手机ai出来的好多了，手机摄影有待进步啊哈哈&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;激情十五运，魅力新广州&lt;a href=&quot;#激情十五运魅力新广州&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;太作死了，全运会开幕式当天跑去广州玩。后果就是广佛线回去的时候人塞人，广佛线新城东方向4B车厢在西塱被塞炸，加上西塱还新开了10号线，我坐的这趟车在西塱至少一半乘客没上到车。好在是挤着回去了😭😭&lt;/p&gt;&lt;p&gt;不过有一点需要注意，这期间在地铁站门口遇到查身份证的民警，别担心,是正规的。只是在大型节目期间例行检查身份证信息，可以询问警号，问就是被查了一次🌚（我长得那么像坏人吗😭）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk4-4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk4-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;成人礼&lt;a href=&quot;#成人礼&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;下下周学校举行成人礼啦~我还在想要穿啥衣服去参加，到时候应该要毕业照的，估计到时候应该有人出cos（到时候可以去和学姐学妹合影嘿嘿）&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;即将到来的高职考&lt;a href=&quot;#即将到来的高职考&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;高职考已经开始正式报名了，月底也要进行第一次的市统考，说不上紧张，但是还是有点忐忑，担心自己考不上好的专科，目前成绩一般般，而且也不够稳定（还需要努力啊😦），祝自己加油吧！&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Windows 11 Insider Preview Build 26220.7070 更新日志</title><link>https://www.sumi233.top/posts/Windows/win11dev6/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Windows/win11dev6/</guid><description>Windows 11 Insider Preview Build 26220.7070 预览版的更新内容</description><pubDate>Sat, 08 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;版本信息&lt;a href=&quot;#版本信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;系统版本：Windows 11 25H2&lt;/p&gt;&lt;p&gt;内核版本：26220.7070&lt;/p&gt;&lt;p&gt;频道：Dev Channel、Beta Channel&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/1-7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;微软于 2025 年 11 月 7 日通过 Windows Insider Program 官方博客正式推送该版本更新，此次更新为 Dev 频道与 Beta 频道同步发布，是两个频道近期少有的版本协同更新，核心聚焦频道切换灵活性优化及功能测试稳定性提升。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;核心更新亮点：频道协同与功能测试优化&lt;a href=&quot;#核心更新亮点频道协同与功能测试优化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;跨频道切换通道临时开放
本次更新最大亮点在于开启了 Dev 频道与 Beta 频道的双向自由切换权限。此前两个频道因版本迭代节奏差异，切换通道长期处于关闭状态，而本次 26220.7070 版本同步推送后，预览体验成员可在“设置 &amp;gt; Windows 更新 &amp;gt; Windows 预览体验计划”中自由切换两个频道。微软官方提示，该切换通道为临时开放，待后续 Dev 频道推送更高版本更新后，通道将自动关闭。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;预览功能测试机制优化
针对预览功能的测试与反馈流程进行了底层调整，本次更新中包含的部分新功能（具体功能细节未通过官方公告披露）采用“分批次灰度推送”模式，根据设备硬件配置、区域及用户反馈评级逐步开放。同时，官方明确提示，处于开发阶段的预览功能可能因优化需求进行调整、移除或替换，最终是否纳入正式版本需以微软后续公告为准。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;多语言适配工作推进
本次更新重点推进了未定型预览功能的多语言适配基础工作。微软表示，当前部分测试功能暂未完成全语言覆盖，仅提供英文等基础语言支持，相关本地化适配将在功能定型后分阶段推进。预览体验成员若发现语言显示异常问题，可通过“反馈中心”提交具体场景以便优化。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;修复与稳定性优化&lt;a href=&quot;#修复与稳定性优化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;微软官方未在 26220.7070 版本公告中单独列出具体 Bug 修复清单，但结合此前同系列版本（如 26220.7051）的修复逻辑及预览体验计划常规更新策略，本次更新重点延续了对系统基础稳定性、设备兼容性及核心组件响应速度的优化，推测已整合前期版本中发现的高频问题修复（如 USB 设备兼容性、文件资源管理器响应效率等方向的优化思路），具体细节需以微软后续补充的技术文档为准。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;已知问题&lt;a href=&quot;#已知问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;微软官方在 26220.7070 版本发布公告中未明确提及特定已知问题，仅提示预览体验成员需关注预览功能的稳定性风险。结合前期版本遗留问题及本次更新特性，建议用户重点关注以下潜在场景（非官方明确列出，基于预览版共性风险提示）：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;跨频道切换后部分个性化设置（如任务栏布局、桌面图标位置）可能出现短暂错乱，重启设备后可恢复；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;灰度推送的预览功能可能存在语言显示不完整、与第三方软件兼容性冲突等问题。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;更新提示&lt;a href=&quot;#更新提示&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;推送范围：本次更新仅面向 Dev 频道和 Beta 频道的 Windows 预览体验计划成员，需确保设备已加入对应频道并完成身份验证；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;安装方式：符合条件的用户可在“设置 &amp;gt; Windows 更新”中手动检查更新并安装，更新过程中建议保持网络稳定，避免中途中断；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;风险提示：该版本为预览开发版，稳定性不及正式版本，不建议在生产设备、关键工作设备或无数据备份的设备上安装。功能体验可能因设备配置、驱动版本及区域设置存在差异；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;反馈渠道：若在使用过程中发现功能异常或 Bug，可通过“反馈中心”（Win + F 快捷键打开）提交详细信息，助力微软优化功能。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本文章使用豆包AI基于微软官方更新日志润色编写而成，具体功能体验可能因设备配置和区域设置而有所不同，如有错误，请指出，酥米将会及时更改。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米的碎碎念（3）</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-3/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-3/</guid><description>酥米关于11月1日最近的小事</description><pubDate>Sat, 01 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;公众号开起来啦&lt;a href=&quot;#公众号开起来啦&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;酥米碎语小屋正式运营！
18岁总算是可以开公众号啦～&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk3-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;目前计划应该还是搬一点博客里面的内容到里面去，后面应该会整一些实用工具软件分享，欢迎大家关注哦～&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;网站被腾讯误封&lt;a href=&quot;#网站被腾讯误封&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;前两天的时候让我朋友从qq打开小站的时候，发现网站居然被腾讯误封，虽然它写着被举报封的，我的小站平时少人来，不至于被举报🌚。于是我试了一下，qq和微信无一例外全被封，后面我去站长申诉了，腾讯方面发邮件过来，目前应该是解封了&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk3-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;新域名&lt;a href=&quot;#新域名&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近眼馋朋友的便宜新域名，问了下在哪里买的，于是自己也买了一个，是在spaceship上购入滴。十分便宜，4.77元，甚至续费也是这个价格，还是xyz后缀，不过是纯数字域名，刚好我需要把域名的一些东西给分离开，也不介意域名的名称，还便宜，没有犹豫，就直接拿下啦😀。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk3-4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;说干就干，我直接把域名丢Cloudflare上托管，最后搞定啦哈哈（加域名到cf有个坑，得在cf里面添加DNSSEC，然后把记录添加到spaceship里面，cf才能正确识别域名，难崩🌚）。&lt;/p&gt;&lt;p&gt;这个域名我大概会用来远程nas或者电脑来用，还是很香的。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk3-3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;各位都可以去申请一个来玩玩，spaceship居然可以用支付宝给钱，真不戳，地址放在下面啦&lt;/p&gt;&lt;p&gt;{% link Spaceship域名申请,Spaceship,&lt;a href=&quot;https://www.spaceship.com/zh/domains/&quot; target=&quot;_blank&quot;&gt;https://www.spaceship.com/zh/domains/&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;月测&lt;a href=&quot;#月测&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近月测完了，是高职考备考，说实话内容比以前考的难一点，语文的作文是关于职业技能的，对于我来说有点难写，英语的阅读题难度水平上升了，数学嘛——我一直都不太行，所以包寄了。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>我成年啦！18岁生日快乐</title><link>https://www.sumi233.top/posts/Weekly/zhouji3/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Weekly/zhouji3/</guid><description>酥米的周记3，生日啦~</description><pubDate>Wed, 29 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;今天是10月29日星期三，对我来说这是一个十分特别的日子，因为我今天18岁生日啦～&lt;/p&gt;&lt;p&gt;有点激动，干了瓶啤酒（终于是可以喝的年龄了哈哈），先祝福我的居然是各种app推送🤣&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-15.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-16.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-17.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-18.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-19.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-21.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;最幸运的是生日没有和月测考试撞车哈哈，星期五才月测，还有时间，小小的庆祝一下。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-20.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;最近穷炸了哈哈哈（生活费见底🌚），只能吃条花生大少庆祝下啦&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;上周末&lt;a href=&quot;#上周末&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;上周末和同学汽车跑去了九江找另外一位同学玩，去蹭了个饭，帮同学电脑重装了系统。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;去的途中拍的（后面是佛山新城&amp;lt;鬼城🌚&amp;gt;）&lt;/p&gt;&lt;p&gt;去的时候突发奇想，九江离鹤山这么近，不去去就可惜了，于是就顺带去了鹤山哈哈，算是解锁了新区域吧😆&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;其实当时挺担心的哈哈，九江大桥上面没有单车道，从南海上去的贴着机动车道上去（南海你不要太离谱😢）。进到鹤山区域才有单车道标识，但还是只有小小的辅道，真正意义上跟大运肩并肩，江风刮过来感觉人都要吹倒了。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;😔不过鹤山那边发展不是很好，没有什么好玩的，像个小县城😂，如果在佛山的话还不如去高明玩哈哈&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;碎碎念&lt;a href=&quot;#碎碎念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;佛山公交&lt;a href=&quot;#佛山公交&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-9.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;佛山居然破天荒改公交收费了，对城巴来说是好事，去高明封顶5块了（以前一趟十块）。坏消息是普通公交涨价了，没有一块四了。不过坐地铁转公交有优惠挺好的&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;博客app进度&lt;a href=&quot;#博客app进度&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-10.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-11.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-12.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-13.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-14.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;上次不是说做了小程序但是备案过不了吗，所以我重新做了个博客app（web套壳版），目前bug很多，底栏图标不显示，无法储存本地数据等。目前更新功能，清除cookie缓存，亮色暗色切换已经可以正常使用&lt;/p&gt;&lt;p&gt;是基于react native写的，不打算本地构建了，直接丢github actions上跑编译&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;澎湃垃圾维护&lt;a href=&quot;#澎湃垃圾维护&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;小米对老机型的维护真垃圾，更新包居然来到了9.2mb，比塞个系统软件更新还小，还是日常对联，维护了个寂寞，随便打个补丁就搞定了（不愧是性价比公司）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-8.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;西奥小镇&lt;a href=&quot;#西奥小镇&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;最近玩的有点嗨了，因为西奥上周更新了铁路系统，可以定制地铁和火车的线路了。自己建的城市规模大到平板都卡炸了😳，还有规划了将近十条的地铁。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-22.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;地铁线路图&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w3-23.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;好啦，今天就唠到这里啦~ 月测后见啦~&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米周记二之运动会</title><link>https://www.sumi233.top/posts/Weekly/zhouji2/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Weekly/zhouji2/</guid><description>酥米的生活周记2，一周的生活记录</description><pubDate>Fri, 24 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这是酥米第二次写生活周记啦，上周其实写得不咋好，这周继续加油努力吧😂&lt;/p&gt;&lt;p&gt;{% note orange ‘anzhiyufont anzhiyu-icon-bullhorn’ flat %}📅：2025年10月20日-10月26日 21日天气阴，23日小雨，其余晴{% endnote %}&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;星期二&lt;a href=&quot;#星期二&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;今天天气冷了好多，可能是因为台风+冷空气双重加持，佛山突降10多度，感觉一下子就给我拉入秋天了（终于是正常的秋天了，之前还热的跟三伏天一样）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-8.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;今天我们学校举行校运会，其实我有点想不明白学校为啥在这天开校运会，因为今天天气不好还下雨（早上的时候大风呼呼刮就算了，还飞着小雨哈哈）。开幕式开始的时候俺一直在划水拍照，所以只留下了这堆照片：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;华材的舞狮队，表演的挺不错的哈哈&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;新生方队进场，传统了属于是，每年校运会都是当届新生上去摆方队&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;新生方队展示，都挺整齐的，不过这个3+4专业的牌子让我有点绷不住了哈哈😂&lt;/p&gt;&lt;p&gt;这一届的学弟学妹脑洞很大很有创意，有搓了个机器人上场的，还有手搓小车子上场的。回想我们当年，我们这届都是走上去混个场，喊几声就下去了哈哈。接下来就是升旗仪式了，升完旗，老师上台演讲宣言，这届校运会也就正式开始啦~&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;首先是男子/女子60米，我们班有两个同学参加，不过俺最近磕到甲沟炎了，不太想走过去，就没有留下照片。相比短跑，我更期待长跑和的比赛（其实是太懒+磕伤不想往前面走），可以拍到照片😂。看着他们的飒爽英姿想到以前的我哈哈，不过我上职中胖了之后就跑不起来了哈哈🌚。接下来就是800米男子/女子，我们班只有一个男同学参加，不过我们班确实体育不咋样哈哈，所以也没有拿奖的。&lt;/p&gt;&lt;p&gt;下午有跳绳和铅球的项目，我们班同学发挥都挺好的，听说取得了还不错的成绩，不过我也没有去看他们比赛，所以就没有留下照片啦。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;星期三&lt;a href=&quot;#星期三&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;时间来到星期三，今天注定不是一个平凡的一天。今天学校继续举办校运会，不过去到大本营就被老天爷丢了个暴击，显然冷空气+台风的威力是不容小窥。星期三感觉比上一天还冷了4-5度，冷风吹来呼呼的，吹得人都不好了，我还只穿了外套加短袖，感觉都给我吹傻了。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-14.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;今天我们班有跑200米和集体运动的项目，不过200米跑完之后，天空逐渐飘起了小雨，雨越下还越大了，不过学校也没有停止校运会的想法，直到快到中午了才放我们回去教室。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;200米女子跑步现场&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;无聊随手拍了一下飞机哈哈（盲猜佛山沙堤机场开飞的，离得很近）&lt;/p&gt;&lt;p&gt;一早上冷风+小雨双重debuff吹得我有点感冒了，中午吃完饭之后直接去跟班主任请假回去吃药拿东西🌚。&lt;/p&gt;&lt;p&gt;下午本来不想再回学校吹风了，不过下午两点，学校突然开窍了，发通知让我们正常上课，校运会暂停，于是我还是正常回去上课了。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-13.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;虽然校运会暂停了少了一半时间很遗憾，但是校运会还是挺开心的（因为玩了一天半的手机哈哈）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-12.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;晚上看班主任突然发信息，才发现学校又要改进门禁了，听说是不刷脸进学校就视为迟到。不过我很想吐槽华材的扫脸系统，戴眼镜我每次过人脸都没有成功过，老是要把眼镜摘下来，给我气炸了😡。不过我觉得学弟学妹可能更惨一点。今年年中，整个佛山市开始实施统一校服服装的计划，我们这些23、24届的没有影响，对于学弟学妹就是灾难了，买的一整套校服居然没有冬装（我请问呢🌝），还得自己买一套（资本家大割特割了属于是）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-11.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;今晚红米小米新品要开发布会了，最让我感到惊喜的事红米k90系列居然找来了bose代工扬声器（其实只是冠名，后面求证了不是代工🙄），还找来了陈奕迅代言（真反常啊小米，你让我感到陌生），不过马达还是祖传0809（库存清不出去了属于是）。除了这些提升听说挺大的，还上了小米17pro max同款屏幕。还是有点期待发布会的，还听说红米watch6用的是小米自己的玄戒soc方案，不知道是不是s4 15th上面的那颗t1了（实际上并没有，用的是恒玄ibp2710，居然还是32m+512mb的内存，对面VIVO watch gt2都是32mb+4g了）🤔&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;是的晚上看完了整个红米新品发布会😍&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;星期五&lt;a href=&quot;#星期五&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;今天好爽啊，淘宝闪送两块三薅了2桶泡面，还有一根火腿肠和一大瓶900ml的百事可乐，可以带去学校吃两天啦哈哈哈，四舍五入等于白嫖~&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-9.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w2-10.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;下午是校运会，因为前天下午下雨所以没有搞完校运会，学校推迟到今天下午才办，今天比赛1500m和跳高，我们班都没报项目，所以就找同学聊天去了，没有待赛场旁边看比赛（主要是没啥好看的，人挤人🌚）&lt;/p&gt;&lt;p&gt;对啦，今天晚上修了一下小站的统计系统，因为51la的某些原因（容易丢数据，容易跳转xx网站，背后的产业），现在换成umami自部署页面统计，虽然统计清零了很悲伤，但是不用为数据丢失而提心吊胆了~&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/u12.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;这周应该是这个月最后一周轻松周了，下周开始要周测+期中考了😭&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Windows 11 Insider Preview Build 26220.6972 更新日志：AI助手深化与拖拽托盘优化</title><link>https://www.sumi233.top/posts/Windows/win11dev5/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Windows/win11dev5/</guid><description>Windows 11 Insider Preview Build 26220.6972预览版的更新内容</description><pubDate>Sun, 19 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;版本信息&lt;a href=&quot;#版本信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;系统版本：Windows 11 25H2&lt;/p&gt;&lt;p&gt;内核版本：26220.6972&lt;/p&gt;&lt;p&gt;频道：Dev Channel&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/1-6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;微软于 2025 年 10 月 17 日通过 KB5067106 更新，面向 Dev 频道和 Beta 频道的 Windows Insider 项目成员推送预览版更新，其中 Dev 频道（25H2 版本）安装后版本号升至 Build 26220.6972，Beta 频道（24H2 版本）升至 Build 26120.6972。此次更新核心聚焦系统视觉统一性优化与关键功能整合，同时修复多项稳定性及兼容性问题。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;核心功能升级：视觉统一与操作简化&lt;a href=&quot;#核心功能升级视觉统一与操作简化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 文件资源管理器：深色模式完整覆盖&lt;a href=&quot;#1-文件资源管理器深色模式完整覆盖&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;本次更新填补了文件资源管理器深色模式的体验空白，为“文件夹选项”对话框及其所有子标签页完成深色模式适配。此前该区域在系统开启深色模式时仍强制显示白色界面，导致视觉体验割裂，此次适配后实现了从主界面到设置面板的全场景风格统一，提升了沉浸式操作体验。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 设置应用：移动设备管理集中整合&lt;a href=&quot;#2-设置应用移动设备管理集中整合&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;为简化手机等移动设备的连接管理流程，微软将原独立的移动设备管理页面整合至“设置 &amp;gt; 蓝牙和设备 &amp;gt; 移动设备”路径下。新页面聚合了设备连接控制、“在文件资源管理器中显示移动设备”“用作连接的相机”等核心功能开关，缩短了操作路径。&lt;/p&gt;&lt;p&gt;根据微软官方文档说明，该功能支持 Android 8.0 及以上版本（部分功能需 Android 10.0+），需确保设备安装对应版本“链接到 Windows”应用并处于同一 Wi-Fi 网络环境，满足条件后可直接在该页面完成设备添加与功能配置。此外，设置主页的 Game Pass 卡片描述也基于新品牌权益完成更新。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 开始菜单：订阅权益快速访问&lt;a href=&quot;#3-开始菜单订阅权益快速访问&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;开始菜单的账户菜单新增 Microsoft 365 订阅权益入口，用户点击账户头像后可直接跳转至订阅管理页面，快速查看会员权益、续费状态及专属服务，为订阅用户提供了便捷的管理渠道。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;关键问题修复：稳定性与兼容性提升&lt;a href=&quot;#关键问题修复稳定性与兼容性提升&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本次更新针对文件管理、显示渲染、应用兼容等高频场景的核心 Bug 进行修复，覆盖个人用户与企业级场景：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;文件管理稳定性&lt;/strong&gt;：修复了解压 1.5GB 及以上大型压缩文件时可能触发的 0x8000FFFF 灾难性错误；同时解决了资源管理器旧版白色工具栏随机闪现的显示异常问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;显示与图形优化&lt;/strong&gt;：修复近期版本中出现的视频播放及游戏渲染“红色色调”回归问题，提升高分辨率显示器的模式枚举性能，减少界面切换时的短暂卡顿与渲染伪影。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Windows 更新修复&lt;/strong&gt;：解决了导致累积更新或功能启用安装失败的 0x800f0983 错误代码，该问题此前已影响大量管理员及预览体验成员。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;应用兼容性修复&lt;/strong&gt;：解决了 Outlook 凭据验证时对话框无法前置导致的应用无响应问题；修复了 Windows 11 与 Windows Server 2022 及更早版本间远程凭证保护场景的兼容性故障，适配企业混合环境需求；同时解决了基于 Chromium 内核的浏览器（如 Edge、Chrome）打印预览无响应的挂起问题。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;已知问题&lt;a href=&quot;#已知问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;微软暂未在官方公告中提及本版本存在的已知问题，后续若发现兼容性或功能异常，将通过 Windows 预览体验计划官网及官方博文补充说明，建议用户关注官方渠道更新。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;更新提示&lt;a href=&quot;#更新提示&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本次更新面向 Dev 频道（25H2）和 Beta 频道（24H2）的预览体验成员推送，符合频道资格的用户可在“设置 &amp;gt; Windows 更新”中检查并安装更新。&lt;/p&gt;&lt;p&gt;作为预览版本，其稳定性仍不及正式版，不建议在生产设备、关键工作设备或无备份的设备上安装。所有功能体验可能因设备硬件配置、驱动版本及区域设置存在差异，部分企业环境下的功能可用性可能受组策略限制。&lt;/p&gt;&lt;p&gt;【本文基于微软官方预览体验计划博文及 IT之家 整理信息编写，具体功能以实际体验为准，官方信息变动请以微软官网最新公告为准】&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;其他修复&lt;a href=&quot;#其他修复&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;修复了任务栏右键菜单偶尔出现“加载卡顿”“选项缺失”的问题，菜单响应速度提升约 40%；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;解决了文件资源管理器复制超过 10GB 大文件时，进度条卡死但实际复制正常的显示异常问题；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;修复了部分第三方输入法（如搜狗、百度输入法）在 UWP 应用中无法切换中英文的兼容性问题；&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本文章使用豆包AI基于微软官方更新日志润色编写而成，具体功能体验可能因设备配置和区域设置而有所不同，如有错误，请指出，酥米将会及时更改。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米周记一之平淡无聊的一周</title><link>https://www.sumi233.top/posts/Weekly/zhouji1/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Weekly/zhouji1/</guid><description>酥米的生活周记1，一周的生活记录</description><pubDate>Fri, 17 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;为了锻炼自己的写作能力，同时拯救一下语言细胞即将坏死的大脑，我决定开始尝试写写周记，今天是第一周周记啦～&lt;/p&gt;&lt;p&gt;{% note orange ‘anzhiyufont anzhiyu-icon-bullhorn’ flat %}📅：2025年10月13至10月17日 全程晴天{% endnote %}&lt;/p&gt;&lt;p&gt;这周确实星期一到三没啥好说的，就是反复上下学然后回家😴。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;星期四&lt;a href=&quot;#星期四&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;星期四课后，我实在闲的无聊，干脆直接给我的小站修修bug，正好提升一下访问速度，于是我把修改的魔爪伸到了f12控制台上，打开我才发现，原来网站里面这么多资源404的报错，一堆引用的js和css失效了，于是我一个个顺藤摸瓜把bug修了个遍（途中还挺麻烦的，差点放弃不搞了）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w1-3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;还改了控制台的欢迎语哈哈，换成自己的啦😀～&lt;/p&gt;&lt;p&gt;我还顺带把CF的cdn ttl调了一下，但愿不会老是不刷新吧哈哈（如果俺滴博客不更新内容请各位俺 &lt;code&gt;ctrl+f5&lt;/code&gt; 或者清理网页缓存进行硬刷新哦）&lt;/p&gt;&lt;p&gt;还好最后还是搞完了，不过还是有点问题。在线问问大佬怎么修复。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w1-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w1-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我只能分辨出一个是woff2字体的问题，另外一个我不是很清楚怎么修，而且网络请求上没有地址（我压根找不到错误的根源😭），所以各位大佬可以康康怎么搞吗？谢谢啦~&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;星期五&lt;a href=&quot;#星期五&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这个星期五下午，朋友找我让我帮他跟他一起去自提在闲鱼买的二手梯子。可惜今天运气不佳，撞上了佛山一年一度的传统活动秋色巡游。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w1-4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;往年长这样，不过我不爱看，而且祖庙那边必定会人山人海，我最不喜欢的就是人山人海出不去的感觉，还不如在家里看直播吹空调舒服（有生之年试过一次，连佛山二号线三号线这种没人坐的地铁都塞满人，可想而知人流有多大😅）&lt;/p&gt;&lt;p&gt;佛山主干道佛山大道在高峰期+秋色巡游的双重Debuff下被堵的水泄不通，江湾立交下面的电鸡更是堪比广州中山路。最不巧的是他的小窝就在那旁边，没办法，堵了几分钟才过到去。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w1-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w1-6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;在小窝集合之后，我们一起前往交货的地点自提梯子。不巧的是，我们因为迷路在那里晃了好几圈，更不巧的是，过去取了梯子之后，才发现我两电鸡根本载不走，那梯子跟我车一样长，白开电鸡了属实是😂。后面是在没办法了，我朋友直接单手提着将近40斤重的梯子单手开共享回小窝（我只能说牛比）。事后他手都麻了（估计以后都不想再拿一次了🌝）。&lt;/p&gt;&lt;p&gt;把东西送他家还是其中一个任务（虽然是他自己搬的🤔），还有一个任务要做，那就是装机啦～&lt;/p&gt;&lt;p&gt;装机的时候也遇到了不少的麻烦，首先是机箱主板就给了我一个大礼，总所周知，ATX大板装不进最大支持atx的matx机箱……So……屌丝纸盒机箱😏，启动！（也是没有办法了，至少得点亮先🌚）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w1-7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;然后又遇到了第二个麻烦，装完cpu涂硅脂的时候，用的tf7，那玩意比橡皮泥还硬，刮板直接失效了，后面直接弃用，上手抓，这玩意比橡皮泥还不粘cpu，搞得我差点红温😡，之后插了pcie无线网卡发现没有天线于是又换了usb无线网卡。前前后后折腾了大概1-2小时，这套b360也总算是以图吧佬最爱的形式出现：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w1-9.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;是的电源在外面（其实是鞋盒太小了，主板又大，塞不下电源，只能放旁边）。搞完硬件，糊糊涂涂装了个系统，打了驱动，差不多也够时间溜之大吉回家了，走之前还不忘顺了点喝的😍。（不过我周六还得去一趟帮他打打下手，这个就在动态更新啦）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w1-10.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;朋友还专门买了设备来玩音游（🌝不过我不咋玩音游），所以我也不知道是什么设备🌚&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w1-11.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;凌乱的房间（其实是因为我们在同时装两台电脑，把整个小窝搞乱了🌝）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/w1-8.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;朋友正在在装的电脑（应该是i3 8代没有记错的话）&lt;/p&gt;&lt;p&gt;这周周记就到这里啦！其实这周没啥特别的事发生哈哈，挺平淡无聊的哈哈，不过下周就精彩啦，下周我们学校举办校运会🌝，也是可以在校运会光明正大玩手机写东西啦~ 想想还有点期待哈哈。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米小站微信小程序即将上线</title><link>https://www.sumi233.top/posts/others/sumiblogappsup/</link><guid isPermaLink="true">https://www.sumi233.top/posts/others/sumiblogappsup/</guid><description>基于Vant-weapp制作的Hexo静态博客微信小程序《酥米小站》即将上线</description><pubDate>Tue, 14 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;最近看到彬红茶大佬更新了博客App，突发奇想（其实是眼馋了🌚），也想做一个属于Hexo的静态博客软件。&lt;/p&gt;&lt;p&gt;静态博客最被人诟病的是页面的刷新不及时，获取信息的速度没有动态博客快，于是我选择了ryanuo大佬的hexo-wx-api项目，通过直接抓取hexo-generator-restful生成的json文件，这样小程序里的文章更新就会比博客网站及时。俺选择微信小程序的原因是方便，不需要特别的打理，也不需要考虑多端适配，只需要打开微信搜索小程序就行了，方便了开发者也方便了用户。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;启动！开干！&lt;a href=&quot;#启动开干&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;于是我花了大概8hours+，基于ryanuo大佬的hexo-wx-api项目，制作出了这个博客。修改了原项目70%+的代码，目前实现了基础功能&lt;/p&gt;&lt;section&gt;&lt;h2&gt;截图&lt;a href=&quot;#截图&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/wx-1.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/wx-2.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/wx-3.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/wx-4.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/wx-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;进度&lt;a href=&quot;#进度&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;目前可以使用的功能&lt;a href=&quot;#目前可以使用的功能&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;文章阅读&lt;/li&gt;
&lt;li&gt;留言板&lt;/li&gt;
&lt;li&gt;分类功能&lt;/li&gt;
&lt;li&gt;博客实时刷新&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;未来完成的功能&lt;a href=&quot;#未来完成的功能&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt; 暗色模式适配&lt;/li&gt;
&lt;li&gt; Twikoo评论区&lt;/li&gt;
&lt;li&gt; 友链页面&lt;/li&gt;
&lt;li&gt; 文章界面优化&lt;/li&gt;
&lt;li&gt; 添加登录功能（已经通过微信登录实现）&lt;/li&gt;
&lt;li&gt; 微信文章通知（不知道静态博客可不可以实现，想试试）&lt;/li&gt;
&lt;li&gt; 博客文章分享&lt;/li&gt;
&lt;li&gt; 搜索功能（目前是半废状态，所以去除了）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;问题&lt;a href=&quot;#问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;有部分功能尚未完工，正在抓紧补全&lt;/li&gt;
&lt;li&gt;部分ui出现拉伸情况，正在修复&lt;/li&gt;
&lt;li&gt;搜索半废（去掉了）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;遗憾&lt;a href=&quot;#遗憾&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本人差半个月成年，暂时无法进行小程序的发布，所以发布日期会在月底至下个月，大家敬请期待哦~&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;链接&lt;a href=&quot;#链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;感谢ryanuo大佬编写的hexo-wx-api项目，让静态博客小程序化成为了可能，谢谢您！&lt;/p&gt;&lt;p&gt;原项目：&lt;/p&gt;&lt;p&gt;{% link ryanuo/hexo-wx-api,GitHub,&lt;a href=&quot;https://github.com/ryanuo/hexo-wx-api&quot; target=&quot;_blank&quot;&gt;https://github.com/ryanuo/hexo-wx-api&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Windows 11 Insider Preview Build 26220.6780 更新日志：AI助手与拖拽托盘升级</title><link>https://www.sumi233.top/posts/Windows/win11dev4/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Windows/win11dev4/</guid><description>Windows 11 Insider Preview Build 26220.6780预览版的更新内容</description><pubDate>Sat, 11 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;版本信息&lt;a href=&quot;#版本信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;系统版本：Windows 11 25H2&lt;/p&gt;&lt;p&gt;内核版本：26220.6780&lt;/p&gt;&lt;p&gt;频道：Dev Channel&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/1-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;微软于2025年10月11日面向Dev频道推送了Windows 11 Insider Preview Build 26220.6780 (KB5067103) 版本更新，此次更新重点强化了设置应用的AI助手能力，并为拖拽托盘带来多项实用改进。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;AI助手与设置优化&lt;a href=&quot;#ai助手与设置优化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本次更新中，设置应用新增了AI助手功能。这一功能目前&lt;strong&gt;仅限于Copilot+PC&lt;/strong&gt;，能够根据用户的操作习惯，&lt;strong&gt;推荐个性化的设置选项&lt;/strong&gt;，帮助用户快速修改最近调整过的设置项。&lt;/p&gt;&lt;p&gt;设置应用的搜索功能也得到了增强。搜索界面会显示更多结果，方便用户更快找到并修改设置项。如果某些设置无法进一步调整，系统会弹出对话框说明原因，并提供相应的修改选项。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;拖拽托盘与Click to Do功能升级&lt;a href=&quot;#拖拽托盘与click-to-do功能升级&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;拖拽托盘功能获得了多项实用改进：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多文件支持&lt;/strong&gt;：用户现在可以&lt;strong&gt;拖拽多个文件&lt;/strong&gt;到托盘中，并作为一个整体进行移动或分享&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能应用推荐&lt;/strong&gt;：托盘会&lt;strong&gt;更智能地推荐相关应用&lt;/strong&gt;，提高目标应用（如邮件、Teams、Slack、OneDrive等）的显示优先级&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无缝文件夹移动&lt;/strong&gt;：将文件拖到拖拽托盘后选择文件夹，会执行&lt;strong&gt;直接移动操作&lt;/strong&gt;，无需额外的复制/确认步骤&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;同时，Click to Do（预览版）也进行了改进，在启动时，系统会通过&lt;strong&gt;视觉提示高亮显示关键实体&lt;/strong&gt;，点击这些元素即可触发智能操作。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;系统稳定性与Bug修复&lt;a href=&quot;#系统稳定性与bug修复&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;除了新功能的加入，本次更新还修复了多个Bug，涵盖了任务栏、文件资源管理器、开始菜单、搜索以及部分应用崩溃等问题。&lt;/p&gt;&lt;p&gt;例如，修复了&lt;strong&gt;按下Win+`键无法切换应用窗口的问题&lt;/strong&gt;，以及上个版本中导致部分预览体验成员频繁崩溃的问题。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;管理员保护功能&lt;/strong&gt;也得到了重新启用，用户可以在Windows安全中心 &amp;gt; 帐户保护中重新启用该功能，增强了系统的安全性。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;深色模式与未来展望&lt;a href=&quot;#深色模式与未来展望&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;微软为”运行”功能&lt;strong&gt;启用了深色模式&lt;/strong&gt;，但目前&lt;strong&gt;仅限于少数Windows预览体验成员可见&lt;/strong&gt;，未来将扩大推送范围。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;已知问题&lt;a href=&quot;#已知问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;微软正在调查此版本中存在的以下问题：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Click to Do&lt;/strong&gt;：通过右边缘手势在主显示器上启动Click to Do会导致滑动视觉效果显示在错误的显示器上&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;锁定和登录屏幕&lt;/strong&gt;：此版本中锁定屏幕上可能不显示媒体控件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务栏&lt;/strong&gt;：由于问题，任务栏预览的新动画已被暂时禁用&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;更新提示&lt;a href=&quot;#更新提示&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;该版本通过&lt;strong&gt;受控功能推送 (CFR)&lt;/strong&gt; 方式分发。建议Dev频道用户在”设置” &amp;gt; “Windows更新”中&lt;strong&gt;开启”在最新更新可用时立即获取”&lt;/strong&gt; 切换开关，以逐步体验到所有新功能。&lt;/p&gt;&lt;p&gt;{% note warning flat %}此版本为开发预览版，&lt;strong&gt;稳定性无法与正式版相比&lt;/strong&gt;，不建议在生产环境中使用。部分新功能可能需要特定硬件支持，且推送范围可能受地区限制。{% endnote %}&lt;/p&gt;&lt;p&gt;&lt;strong&gt;【本文基于微软官方博客更新日志编写，具体功能体验可能因设备配置和区域设置而有所不同】&lt;/strong&gt;&lt;/p&gt;&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本文章使用Deepseek V3基于微软官方更新日志润色编写而成，具体功能体验可能因设备配置和区域设置而有所不同，如有错误，请指出，酥米将会及时更改。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>自动备份你的Hexo博客</title><link>https://www.sumi233.top/posts/tutorial/hexo-github-auto-backup/</link><guid isPermaLink="true">https://www.sumi233.top/posts/tutorial/hexo-github-auto-backup/</guid><description>给你的Hexo博客添加github仓库备份</description><pubDate>Fri, 10 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;最近十分难绷，为了搞code-server远程编辑博客，把博客的依赖给刷掉了，还好之前有备份逃过一劫，这也让我萌生了一个想法，可不可以把hexo源代码备份到github仓库上面呢？于是我在万能的度娘寻找答案，还真给我找到了一个方法。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;原文章地址&lt;a href=&quot;#原文章地址&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;{% link 自动备份 Hexo 博客源文件,AISYUN’s Blog,&lt;a href=&quot;https://blog.cyida.com/2023/32DJ476.html&quot; target=&quot;_blank&quot;&gt;https://blog.cyida.com/2023/32DJ476.html&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;感谢AISYUN大佬提供的方案，此文章只做记录留档，如侵犯到您的权利，请联系我下架此文章，谢谢~&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;正文&lt;a href=&quot;#正文&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;将Hexo目录加入到Git仓库中&lt;a href=&quot;#将hexo目录加入到git仓库中&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git init&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git remote add origin git@github.com:Github用户名/项目名字.git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git pull origin main # 原教程中为Master，现已替换为main&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;建议在博客根目录中写入&lt;code&gt;.gitignore&lt;/code&gt; 文件，填入以下内容：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.deploy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.deploy_git/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*.log&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这样可以防止编译过的网页以及log文件被上传到仓库里，提升备份速度&lt;/p&gt;&lt;p&gt;然后再执行以下命令，手动将源代码首次推送至Github仓库中：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git add .&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git commit -m &quot;备份hexo源码文件&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git push origin master&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;自动化实现&lt;a href=&quot;#自动化实现&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;首先安装shelljs&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm install --save shelljs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;然后在博客根目录/scripts（如果没有此文件夹，就创建一个）文件夹里，创建一个名为&lt;code&gt;auto_backup.js&lt;/code&gt;的脚本&lt;/p&gt;&lt;p&gt;并且填入以下内容：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;require(&apos;shelljs/global&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;try {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hexo.on(&apos;deployAfter&apos;, function() {//当deploy完成后执行备份&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;run();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;} catch (e) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(&quot;产生了一个错误啊&amp;lt;(￣3￣)&amp;gt; !，错误详情为：&quot; + e.toString());&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function run() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (!which(&apos;git&apos;)) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;echo(&apos;Sorry, this script requires git&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;exit(1);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;echo(&quot;======================Auto Backup Begin===========================&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cd(&apos;Your Blog Folder&apos;);    //此处修改为Hexo根目录路径&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (exec(&apos;git add --all&apos;).code !== 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;echo(&apos;Error: Git add failed&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;exit(1);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (exec(&apos;git commit -am &quot;blog auto backup script\&apos;s commit&quot;&apos;).code !== 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;echo(&apos;Error: Git commit failed&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;exit(1);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (exec(&apos;git push origin main&apos;).code !== 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;echo(&apos;Error: Git push failed&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;exit(1);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;echo(&quot;==================Auto Backup Complete============================&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Your Blog Folder处请改成自己博客的&lt;strong&gt;绝对&lt;/strong&gt;目录路径如：D:/blog/&lt;/li&gt;
&lt;li&gt;如果你的仓库名称不是默认origin和分支不是main的话，需改成自己的仓库和相应分支名&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;结果&lt;a href=&quot;#结果&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;保存好脚本，在博客目录执行&lt;code&gt;hexo deploy&lt;/code&gt;命令，在博客常规推送之后，会出现以下输出：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ht3-1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;就证明博客代码推送成功啦~&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ht3-2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;此时查看Github仓库上也有相应的博客代码啦！&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>番禺市桥游记：老城区的辉煌，从未落幕</title><link>https://www.sumi233.top/posts/mouthtalk/panyu-shiqiao-travel/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/panyu-shiqiao-travel/</guid><description>酥米的番禺市桥游记</description><pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;其实这也是酥米第二次去市桥啦🌚~ 我骑着电动车，驶入这片土地，开始了一场探寻之旅，想看看这座承载着岁月记忆的市桥老城区，是否如一些人所说，辉煌已不再。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/pysq-6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;在禺山市场后面充电，这里的充电桩有单次充电，而且太阳晒不到😂，离各个市桥著名的地方都不远，骑车推荐来这充电。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;在旅途中&lt;a href=&quot;#在旅途中&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;繁华与古韵交织的街景&lt;a href=&quot;#繁华与古韵交织的街景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;阳光透过澄澈的蓝天，洒在桥兴大道和大北路的街道上，给这座老城区镀上了一层温暖的光晕。&lt;/p&gt;&lt;p&gt;走在市桥的主干道桥兴大道与大北路Y字口的天桥上，目光所及，是新旧建筑交织的独特画面。一侧是现代化的高楼大厦，玻璃幕墙在阳光下反射出耀眼的光芒，彰显着城市发展的蓬勃力量。像那矗立着的写字楼，外立面光洁如新，进出的人流行色匆匆，透着都市的快节奏。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/pysq-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;而另一侧，是带着岁月痕迹的老建筑。墙体有些斑驳，却有着别样的韵味。骑楼式的结构，仿佛在静静诉说着过往的商业繁华。沿街的商铺里，既有“百果园”这样连锁的新鲜水果店，色彩缤纷的水果整齐摆放，散发着诱人的香气；也有当地老字号的小店，卖着传统的小吃，那氤氲的热气里，满是熟悉的老味道。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/pysq-4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;街道上车水马龙，秩序井然。轿车、电动车穿梭往来，却并不显得拥挤。路旁的绿化带里，树木郁郁葱葱，尤其是那盛放的三角梅，一簇簇、一丛丛，紫的、粉的，热烈地绽放在天桥上、街角旁，像是给城市披上了绚丽的花衣，为略显沉稳的老城区增添了几分活泼与烂漫。站在那座被三角梅簇拥的天桥上，俯瞰下方的车水马龙和周围的建筑，我能感受到一种时光的交融，新与旧在这里和谐共生，并非一方取代另一方，而是共同构成市桥独特的城市风貌。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;钻汇广场里的热闹烟火气&lt;a href=&quot;#钻汇广场里的热闹烟火气&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;走进钻汇广场，内部的景象更是让我感受到市桥的活力。色彩斑斓的彩色玻璃窗，有着欧式建筑的浪漫风情，阳光透过玻璃，在地面投下梦幻的光斑。&lt;/p&gt;&lt;p&gt;广场内店铺林立，“诺蒂娜”等品牌店装修精致，吸引着年轻的消费者驻足挑选。而一些售卖本地特色小商品的摊位前，更是人头攒动。摊主热情地招呼着，介绍着那些充满巧思的小物件。孩子们被可爱的玩偶吸引，拉着家长的手不肯离去；年轻人则在潮流饰品店前，精心挑选着搭配衣物的配饰。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/pysq-8.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;耳边是此起彼伏的交谈声、欢笑声，还有店铺里传来的轻柔音乐，交织成一首充满烟火气的城市乐章。这里没有老城区的暮气，反而充满了生机与活力，是人们休闲、社交、消费的好去处，见证着市桥商业的持续繁荣。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;番禺老牌宾馆的岁月故事&lt;a href=&quot;#番禺老牌宾馆的岁月故事&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;“番禺宾馆”几个醒目的大字，在阳光下格外耀眼。这座老牌宾馆，坐落在市桥中轴大北路旁边。作为市桥的老牌宾馆，它承载了太多人的记忆。那具有特色的建筑外观，虽历经岁月，却依然端庄大气。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/pysq-3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;想象着过去，这里曾是市桥乃至番禺的重要接待场所，见证了无数的迎来送往，见证了城市发展的重要时刻。如今，它依然在运营，以一种沉稳的姿态，继续为往来的人们提供服务。或许，它的设施不再是最新潮的，但那份历史的厚重感，那份属于老城区的独特韵味，是新建的豪华酒店所无法替代的。它就像一位老者，默默守护着市桥，讲述着那些关于辉煌过往的故事，也见证着当下的平稳与发展。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;老城区的辉煌，是持续的生长&lt;a href=&quot;#老城区的辉煌是持续的生长&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在市桥漫步，我看到的不是老城区辉煌的消逝，而是一种持续的生长与蜕变。它没有因循守旧，而是在保留自身历史文化底蕴的同时，积极拥抱现代化的发展。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/pysq-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;新的商业体不断涌现，为经济发展注入新的活力；老的建筑与街区，经过修缮与维护，依然散发着独特的魅力，吸引着人们去探寻、去感受。这里的人们，在快节奏的现代生活与慢时光的历史韵味中，找到了属于自己的平衡。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;真的落幕了吗&lt;a href=&quot;#真的落幕了吗&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;市桥的辉煌，不是过去时，而是进行时。它就像一棵枝繁叶茂的大树，根系深植于历史的土壤，枝叶却在时代的风中，不断向着天空伸展，绽放出新的生机。那些关于老城区辉煌不再的说法，在我亲身感受过它的活力与韵味后，显得如此片面。市桥，这座老城区，正以它独有的方式，续写着属于自己的辉煌篇章。&lt;/p&gt;&lt;p&gt;离开市桥时，夕阳的余晖温柔地洒在街道上，给一切都染上了一层金色。我知道，我会再次来到这里，因为这座老城区的故事，还在继续，它的辉煌，从未落幕。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;酥米的一点小小碎碎念&lt;a href=&quot;#酥米的一点小小碎碎念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;这应该是10月份最后仅剩的游记了（大概吧😀）。最近暂时不会写游记了，本人并不是很擅长写长文章，目前写出来的文章都或多或少的使用了AI的润色，感觉自己要灵感枯竭了（其实是国庆去太多地方了）不知道写什么好，而且本人的写作水平也支撑不起写那么长的游记（望各位读者见谅啦）。下一次的游记得留到秋假的南海九江海寿岛之旅啦～敬请期待哦！&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/pysq-7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;来回居然骑了106km，虽然从佛山骑到番禺人都麻了，但是过程还是很快乐滴~&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/pysq-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;还有好多国庆作业没写，呜呜呜明天就要上学了，希望今天能肝完吧😭😭😭🌚&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>顺德容桂游记：交响于渔人码头河边的复古与潮流</title><link>https://www.sumi233.top/posts/mouthtalk/shunde-ronggui-travel/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/shunde-ronggui-travel/</guid><description>酥米的顺德容桂渔人码头之旅</description><pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;{% note orange ‘anzhiyufont anzhiyu-icon-bullhorn’ flat %}截稿前刚好到10月6日中秋节🌙，酥米祝各位中秋节快乐吖！😀{% endnote %}&lt;/p&gt;&lt;p&gt;其实国庆节当天我就已经去了，选择现在发其实是本来想等南沙游记发出之后一起发，不过最终还是没有如愿（没写完😭），经过几天润色，今天终于是憋出来了哈哈。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;出发的动机&lt;a href=&quot;#出发的动机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;其实一开始我并没有去容桂的想法，因为太远了，而且缺少轨道交通（容桂没有通地铁真的遗憾，佛山11号线也不知道要几年规划了）。不过国庆第一天在家里太无聊了，萌生了出去玩的想法，又突然记起来有那么个地方，于是自然而然去了。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;出发！&lt;a href=&quot;#出发&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;于是我带上随身的包，飞奔出门，《赶》往目的地😉。因为容桂没有通地铁，并且考虑假期地铁高峰期，我直接乘搭公交车前往大良（顺德客运站），再转车前往容桂街道。我先乘搭佛236（九江方向）前往乐从公交中心，之后走去三乐路路口公交站乘坐341线前往顺德客运站。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sdrg-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;乐从城区边上（佛山大道南）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sdrg-6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;这里是三乐路和顺德快速路入口。&lt;/p&gt;&lt;p&gt;当我慢慢走向路口公交站的时候，一台公交车缓缓开出路。是的，这台车就是我要坐的341公交车，也顾不上那么多了，我直接飞奔起步，抢着最后一步跑去公交车站上了车（差点没赶上）。
当我气喘吁吁刷卡的时候，诶！怎么没反应，司机的声音突然出现：“你要去哪里啊？”喘的我差点忘了这辆公交是分段计费了😅，直接报上顺德客运站，需要四块钱，不过广佛通有公交优惠（是3.6块，南海禅城区的公交都打8折，4块车票仅需2.8，但是其他三个区只打九折，所以就要3.6啦）&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;旅途之中&lt;a href=&quot;#旅途之中&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;顺德的快巴就是不一样，车辆在顺德快速路狂飙，遇到没有人的站直接飞。速度估计得有40-60km/h了（吐槽一句，禅城南海的公交一个比一个慢，比如桂城-禅城去佛山西站的G5公交车，需要一个小时才能摇完15km的路程🌚🌚）。途径经过北滘镇和伦教街道，还要跨过顺德水道，当车辆走过顺德立交桥的时候，就宣布进入了顺德大良（顺德中心城区啦），经过大约1小时15分钟的路程，我到达了顺德客运站&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sdrg-7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后，我要乘坐顺德318路公交车，前往容桂街道信德上城（渔人码头南）公交站&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sdrg-8.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;约莫10分钟，车辆从客运站开出，我也顺利的坐上了公交车，途径顺峰山和大良派出所，跨过德胜河和容奇大桥后，到达了容桂街道。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sdrg-9.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;40分钟后，我到达了渔人码头南站，一下车，我只望见许多的旅客往北闸大街走去（那里是渔人码头的入口），于是我跟随人流往里面走去&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sdrg-10.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;里面人潮涌动，虽没有很拥挤，但也比较多人。空气里混杂着烟火气的气息（是烧烤！🤤），我继续往前走，里面有一个广场&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sdrg-11.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;里面是复古风的商业街，不过想吐槽一句（本来想买杯瑞幸的，里面挤满了人，我怕等到回去了都没拿到饮料，遂作罢🤔）。从商业街穿出去，就能望到渔人码头的真实面貌&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sdrg-4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;河边，醒目的红色“I ❤️ SD”前，游人或驻足拍照，或凭栏眺望河面。河水悠悠，对岸的建筑在绿意掩映中若隐若现，一棵绿树旁，有人正以江景为幕，定格此刻的悠闲。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sdrg-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;不远处，蓝白相间的灯塔矗立河边，像一位沉默的守护者。它与背后的现代高楼群形成奇妙对比，蓝天流云之下，江水、灯塔、楼宇共同勾勒出一幅动静相宜的画卷。江畔的小店外，有人在露台上闲坐，将这江景与人文交融的景致尽收眼底。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sdrg-3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;转角处，一栋建筑化身艺术画布：墙面上，猫咪、兔子的涂鸦灵动俏皮，屋顶上，大白与少年的巨型雕塑童趣满满，下方的麦当劳黄色M标识格外醒目，“渔人码头”的招牌诉说着这里的前世今生。新旧元素碰撞，让建筑成了网红打卡的吸睛点，往来人群涌动，或在店前驻足，或在巷间穿梭，烟火气十足。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/sdrg-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;再看那栋写着“顺德渔”的建筑，墙面的大字苍劲有力，屋顶的星巴克、各类商铺的招牌琳琅满目，肯德基、台球俱乐部、烤肉店……潮流业态与复古建筑碰撞出别样活力。楼下，人群熙攘，电动车停放整齐，补水站的蓝色帐篷为游人送上一丝清凉，处处是热闹的生活气息。&lt;/p&gt;&lt;p&gt;岁月痕迹与新时代的潮流创意交织，江风裹挟着艺术、美食与人文的气息，让每一步慢步中都成了一场复古与潮流的惊喜碰撞，这便是容桂渔人码头独有的魅力。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Hexo博客添加2048</title><link>https://www.sumi233.top/posts/tutorial/hexo-2048-game-embed/</link><guid isPermaLink="true">https://www.sumi233.top/posts/tutorial/hexo-2048-game-embed/</guid><description>给你的Hexo博客添加2048小游戏</description><pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;{% note orange ‘anzhiyufont anzhiyu-icon-bullhorn’ flat %}截稿前刚好到10月6日中秋节🌙，酥米祝各位中秋节快乐吖！😀{% endnote %}&lt;/p&gt;&lt;p&gt;最近看到彩蛋页空着，于是突发奇想，做一个2048小游戏嵌入在里面，于是我”请教“了万能的豆包，得到了以下项目&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Demo&lt;a href=&quot;#demo&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本站已经内嵌此项目，可以去康康哦~&lt;/p&gt;&lt;p&gt;{% link 2048小游戏,酥米的小站,/Fun/ %}&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;优势&lt;a href=&quot;#优势&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;完全隔离，不干扰博客&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;所有元素和逻辑封装在独立容器 &lt;code&gt;game-2048-container&lt;/code&gt; 中，通过内联样式和容器限定作用域，不会污染博客原有CSS和JS。&lt;/li&gt;
&lt;li&gt;不依赖任何外部资源（无图片、无字体文件），纯原生HTML+CSS+JS实现，加载速度快，不增加博客加载负担。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;适配Hexo Anzhiyu主题&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;明暗模式自动切换：通过检测主题 &lt;code&gt;html&lt;/code&gt; 标签的 &lt;code&gt;dark&lt;/code&gt; 类，动态调整方块颜色、背景色，确保在亮色/暗色模式下都有清晰的视觉对比（例如暗色模式下方块用深色背景+浅色文字，亮色模式相反）。&lt;/li&gt;
&lt;li&gt;风格统一：使用主题内置CSS变量（&lt;code&gt;--card-bg&lt;/code&gt; 卡片背景、&lt;code&gt;--text-color&lt;/code&gt; 文字色等），与博客整体风格无缝融合。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;多设备交互友好&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;键盘控制：支持方向键（↑↓←→）移动方块，操作符合原版2048习惯。&lt;/li&gt;
&lt;li&gt;触屏优化：滑动屏幕（上下左右）可控制方块移动，滑动阈值合理（避免误触）。&lt;/li&gt;
&lt;li&gt;核心优化：通过 &lt;code&gt;e.preventDefault()&lt;/code&gt; 和 &lt;code&gt;touch-action: none&lt;/code&gt; 阻止触屏滑动时触发整个博客页面的滚动，专注游戏操作。&lt;/li&gt;
&lt;li&gt;操作反馈：按钮状态动态变化（如“撤回”按钮在无历史记录时禁用并半透明）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;完整游戏功能&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心玩法：随机生成2/4方块，滑动合并相同数字，目标合成2048。&lt;/li&gt;
&lt;li&gt;撤回功能：通过历史记录栈保存最近10步的游戏状态（网格+分数），点击“撤回”可回到上一步，提升容错性。&lt;/li&gt;
&lt;li&gt;状态判断：自动检测胜利（合成2048）和失败（无空位且无法合并），并弹窗提示。&lt;/li&gt;
&lt;li&gt;分数系统：实时显示当前分数，合并方块时自动累加。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;轻量精简&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码量约600行，逻辑清晰，无冗余代码。&lt;/li&gt;
&lt;li&gt;棋盘使用CSS Grid布局，自适应容器大小，在手机、电脑上均可正常显示（默认最大宽度400px，可按需调整）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;创建界面&lt;a href=&quot;#创建界面&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;可以先使用指令单独创建一个2048的页面&lt;/p&gt;&lt;p&gt;&lt;code&gt;hexo new pages &quot;页面名称&quot;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;然后使用工具编辑&lt;code&gt;“页面名称”/index.md&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;使用方法&lt;a href=&quot;#使用方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;直接将代码复制到Hexo的Markdown文章（&lt;code&gt;.md&lt;/code&gt;文件）中，部署后即可在博客中运行，无需额外配置。如需调整大小，修改容器的&lt;code&gt;max-width&lt;/code&gt;样式即可。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;代码&lt;a href=&quot;#代码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;div id=&quot;game-2048-container&quot; style=&quot;max-width: 400px; margin: 20px auto; padding: 15px; border-radius: 8px; transition: all 0.3s ease; background: var(--card-bg); touch-action: none;&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;!-- 分数与控制区 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div style=&quot;display: flex; justify-content: space-between; margin-bottom: 15px; font-family: &apos;Segoe UI&apos;, Arial;&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div style=&quot;font-size: 24px; font-weight: bold; color: var(--text-color);&quot;&amp;gt;2048&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div style=&quot;background: var(--primary-color); color: white; padding: 5px 10px; border-radius: 4px;&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;分数: &amp;lt;span id=&quot;score-2048&quot;&amp;gt;0&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div style=&quot;display: flex; gap: 5px;&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;!-- 按钮增大点击区域并添加触摸反馈 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;button id=&quot;undo-2048&quot; style=&quot;background: var(--btn-bg); color: var(--btn-color); border: none; padding: 8px 12px; border-radius: 4px; cursor: pointer; opacity: 0.5; touch-action: manipulation;&quot; disabled&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;撤回&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;button id=&quot;reset-2048&quot; style=&quot;background: var(--btn-bg); color: var(--btn-color); border: none; padding: 8px 12px; border-radius: 4px; cursor: pointer; touch-action: manipulation;&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;重置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;!-- 游戏棋盘 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div id=&quot;game-2048-board&quot; style=&quot;display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;!-- 操作说明 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div style=&quot;margin-top: 15px; font-size: 14px; color: var(--text-color); font-family: &apos;Segoe UI&apos;, Arial;&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;p&amp;gt;操作：方向键或滑动屏幕移动方块，相同数字碰撞将合并&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const container = document.getElementById(&apos;game-2048-container&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if (container) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 获取DOM元素&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const boardEl = container.querySelector(&apos;#game-2048-board&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const scoreEl = container.querySelector(&apos;#score-2048&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const resetBtn = container.querySelector(&apos;#reset-2048&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const undoBtn = container.querySelector(&apos;#undo-2048&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 游戏配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const SIZE = 4;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let grid = [];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let score = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let isDarkMode = false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let history = [];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let isTouching = false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let touchTarget = null; // 记录触摸目标，区分按钮和棋盘&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 颜色映射（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const getColors = (value) =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const colors = {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;2: { bg: isDarkMode ? &apos;#3a3a3a&apos; : &apos;#eee4da&apos;, text: isDarkMode ? &apos;#fff&apos; : &apos;#776e65&apos; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;4: { bg: isDarkMode ? &apos;#4a4a4a&apos; : &apos;#ede0c8&apos;, text: isDarkMode ? &apos;#fff&apos; : &apos;#776e65&apos; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;8: { bg: isDarkMode ? &apos;#ff9966&apos; : &apos;#f2b179&apos;, text: &apos;#f9f6f2&apos; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;16: { bg: isDarkMode ? &apos;#ff7733&apos; : &apos;#f59563&apos;, text: &apos;#f9f6f2&apos; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;32: { bg: isDarkMode ? &apos;#ff5500&apos; : &apos;#f67c5f&apos;, text: &apos;#f9f6f2&apos; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;64: { bg: isDarkMode ? &apos;#ff3300&apos; : &apos;#f65e3b&apos;, text: &apos;#f9f6f2&apos; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;128: { bg: isDarkMode ? &apos;#ffcc66&apos; : &apos;#edcf72&apos;, text: &apos;#f9f6f2&apos; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;256: { bg: isDarkMode ? &apos;#ffbb33&apos; : &apos;#edcc61&apos;, text: &apos;#f9f6f2&apos; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;512: { bg: isDarkMode ? &apos;#ffaa00&apos; : &apos;#edc850&apos;, text: &apos;#f9f6f2&apos; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;1024: { bg: isDarkMode ? &apos;#ff9900&apos; : &apos;#edc53f&apos;, text: &apos;#f9f6f2&apos; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;2048: { bg: isDarkMode ? &apos;#ff8800&apos; : &apos;#edc22e&apos;, text: &apos;#f9f6f2&apos; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (!colors[value]) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;colors[value] = { bg: isDarkMode ? &apos;#ff5555&apos; : &apos;#3c3a32&apos;, text: &apos;#f9f6f2&apos; };&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return colors[value];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 初始化网格（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const initGrid = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid = Array(SIZE).fill().map(() =&amp;gt; Array(SIZE).fill(0));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;score = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;history = [];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;scoreEl.textContent = &apos;0&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;addRandomNumber();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;addRandomNumber();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;updateUndoBtn();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;renderGrid();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 保存历史记录（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const saveHistory = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const gridCopy = JSON.parse(JSON.stringify(grid));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;history.push({ grid: gridCopy, score: score });&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (history.length &amp;gt; 10) history.shift();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;84&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;updateUndoBtn();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;85&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;86&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;87&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 撤回操作（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;88&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const undoMove = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;89&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (history.length === 0) return;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;90&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const lastState = history.pop();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;91&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid = lastState.grid;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;92&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;score = lastState.score;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;93&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;scoreEl.textContent = score;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;94&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;updateUndoBtn();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;95&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;renderGrid();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;96&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;97&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;98&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 更新撤回按钮状态（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;99&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const updateUndoBtn = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;100&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;undoBtn.disabled = history.length === 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;101&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;undoBtn.style.opacity = history.length === 0 ? &apos;0.5&apos; : &apos;1&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;102&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;103&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;104&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 随机生成数字（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;105&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const addRandomNumber = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;106&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const emptyCells = [];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;107&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = 0; i &amp;lt; SIZE; i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;108&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let j = 0; j &amp;lt; SIZE; j++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;109&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (grid[i][j] === 0) emptyCells.push({ i, j });&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;110&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;111&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;112&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (emptyCells.length === 0) return false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;113&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const { i, j } = emptyCells[Math.floor(Math.random() * emptyCells.length)];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;114&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[i][j] = Math.random() &amp;lt; 0.9 ? 2 : 4;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;115&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return true;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;116&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;117&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;118&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 渲染网格（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;119&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const renderGrid = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;120&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;boardEl.innerHTML = &apos;&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;121&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = 0; i &amp;lt; SIZE; i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;122&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let j = 0; j &amp;lt; SIZE; j++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;123&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const cell = document.createElement(&apos;div&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;124&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const value = grid[i][j];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;125&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.width = &apos;80px&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;126&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.height = &apos;80px&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;127&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.borderRadius = &apos;4px&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;128&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.display = &apos;flex&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;129&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.alignItems = &apos;center&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;130&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.justifyContent = &apos;center&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;131&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.fontWeight = &apos;bold&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;132&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.transition = &apos;all 0.2s ease&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;133&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.fontFamily = &apos;Arial, sans-serif&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;134&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;135&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (value === 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;136&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.background = isDarkMode ? &apos;#2a2a2a&apos; : &apos;#cdc1b4&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;137&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.color = &apos;transparent&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;138&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;139&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const { bg, text } = getColors(value);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;140&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.background = bg;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;141&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.color = text;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;142&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.style.fontSize = value &amp;lt; 100 ? &apos;24px&apos; : value &amp;lt; 1000 ? &apos;20px&apos; : &apos;16px&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;143&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cell.textContent = value;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;144&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;145&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;boardEl.appendChild(cell);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;146&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;147&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;148&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;149&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;150&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 移动逻辑（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;151&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const moveLeft = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;152&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let moved = false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;153&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = 0; i &amp;lt; SIZE; i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;154&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let j = 1; j &amp;lt; SIZE; j++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;155&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (grid[i][j] !== 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;156&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let k = j;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;157&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;while (k &amp;gt; 0 &amp;amp;&amp;amp; grid[i][k - 1] === 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;158&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[i][k - 1] = grid[i][k];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;159&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[i][k] = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;160&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;k--;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;161&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;moved = true;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;162&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;163&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (k &amp;gt; 0 &amp;amp;&amp;amp; grid[i][k - 1] === grid[i][k]) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;164&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[i][k - 1] *= 2;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;165&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;score += grid[i][k - 1];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;166&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[i][k] = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;167&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;moved = true;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;168&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;169&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;170&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;171&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;172&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return moved;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;173&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;174&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;175&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const moveRight = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;176&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let moved = false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;177&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = 0; i &amp;lt; SIZE; i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;178&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let j = SIZE - 2; j &amp;gt;= 0; j--) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;179&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (grid[i][j] !== 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;180&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let k = j;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;181&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;while (k &amp;lt; SIZE - 1 &amp;amp;&amp;amp; grid[i][k + 1] === 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;182&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[i][k + 1] = grid[i][k];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;183&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[i][k] = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;184&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;k++;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;185&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;moved = true;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;186&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;187&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (k &amp;lt; SIZE - 1 &amp;amp;&amp;amp; grid[i][k + 1] === grid[i][k]) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;188&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[i][k + 1] *= 2;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;189&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;score += grid[i][k + 1];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;190&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[i][k] = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;191&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;moved = true;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;192&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;193&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;194&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;195&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;196&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return moved;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;197&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;198&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;199&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const moveUp = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;200&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let moved = false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;201&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let j = 0; j &amp;lt; SIZE; j++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;202&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = 1; i &amp;lt; SIZE; i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;203&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (grid[i][j] !== 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;204&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let k = i;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;205&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;while (k &amp;gt; 0 &amp;amp;&amp;amp; grid[k - 1][j] === 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;206&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[k - 1][j] = grid[k][j];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;207&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[k][j] = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;208&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;k--;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;209&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;moved = true;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;210&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;211&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (k &amp;gt; 0 &amp;amp;&amp;amp; grid[k - 1][j] === grid[k][j]) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;212&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[k - 1][j] *= 2;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;213&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;score += grid[k - 1][j];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;214&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[k][j] = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;215&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;moved = true;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;216&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;217&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;218&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;219&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;220&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return moved;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;221&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;222&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;223&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const moveDown = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;224&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let moved = false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;225&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let j = 0; j &amp;lt; SIZE; j++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;226&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = SIZE - 2; i &amp;gt;= 0; i--) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;227&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (grid[i][j] !== 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;228&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let k = i;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;229&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;while (k &amp;lt; SIZE - 1 &amp;amp;&amp;amp; grid[k + 1][j] === 0) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;230&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[k + 1][j] = grid[k][j];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;231&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[k][j] = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;232&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;k++;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;233&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;moved = true;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;234&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;235&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (k &amp;lt; SIZE - 1 &amp;amp;&amp;amp; grid[k + 1][j] === grid[k][j]) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;236&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[k + 1][j] *= 2;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;237&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;score += grid[k + 1][j];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;238&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;grid[k][j] = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;239&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;moved = true;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;240&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;241&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;242&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;243&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;244&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return moved;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;245&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;246&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;247&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 处理移动（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;248&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const handleMove = (direction) =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;249&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let moved;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;250&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;switch (direction) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;251&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;case &apos;left&apos;: moved = moveLeft(); break;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;252&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;case &apos;right&apos;: moved = moveRight(); break;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;253&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;case &apos;up&apos;: moved = moveUp(); break;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;254&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;case &apos;down&apos;: moved = moveDown(); break;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;255&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;default: return;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;256&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;257&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;258&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (moved) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;259&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;saveHistory();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;260&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;scoreEl.textContent = score;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;261&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;addRandomNumber();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;262&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;renderGrid();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;263&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;checkGameState();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;264&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;265&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;266&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;267&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 检查游戏状态（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;268&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const checkGameState = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;269&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = 0; i &amp;lt; SIZE; i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;270&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let j = 0; j &amp;lt; SIZE; j++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;271&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (grid[i][j] === 2048) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;272&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;setTimeout(() =&amp;gt; alert(&apos;恭喜你赢了！&apos;), 300);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;273&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;274&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;275&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;276&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;277&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;278&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = 0; i &amp;lt; SIZE; i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;279&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let j = 0; j &amp;lt; SIZE; j++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;280&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (grid[i][j] === 0) return;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;281&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;282&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;283&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;284&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = 0; i &amp;lt; SIZE; i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;285&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let j = 0; j &amp;lt; SIZE - 1; j++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;286&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (grid[i][j] === grid[i][j + 1]) return;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;287&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;288&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;289&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;290&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let j = 0; j &amp;lt; SIZE; j++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;291&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = 0; i &amp;lt; SIZE - 1; i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;292&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (grid[i][j] === grid[i + 1][j]) return;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;293&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;294&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;295&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;296&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;setTimeout(() =&amp;gt; alert(&apos;游戏结束！得分：&apos; + score), 300);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;297&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;298&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;299&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 明暗模式适配（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;300&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const checkThemeMode = () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;301&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;isDarkMode = document.documentElement.classList.contains(&apos;dark&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;302&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;renderGrid();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;303&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;304&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;305&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const themeObserver = new MutationObserver(() =&amp;gt; checkThemeMode());&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;306&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;themeObserver.observe(document.documentElement, { attributes: true });&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;307&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;308&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 键盘控制（保持不变）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;309&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const handleKeydown = (e) =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;310&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;switch (e.key) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;311&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;case &apos;ArrowLeft&apos;: handleMove(&apos;left&apos;); e.preventDefault(); break;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;312&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;case &apos;ArrowRight&apos;: handleMove(&apos;right&apos;); e.preventDefault(); break;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;313&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;case &apos;ArrowUp&apos;: handleMove(&apos;up&apos;); e.preventDefault(); break;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;314&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;case &apos;ArrowDown&apos;: handleMove(&apos;down&apos;); e.preventDefault(); break;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;315&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;default: return;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;316&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;317&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;318&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;319&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 触屏控制（核心修复：区分按钮和棋盘触摸）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;320&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let touchStartX = 0, touchStartY = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;321&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;322&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 触摸开始：记录目标元素&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;323&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const handleTouchStart = (e) =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;324&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;touchTarget = e.target; // 记录触摸的元素（按钮或棋盘）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;325&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 只有触摸棋盘时才处理滑动逻辑&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;326&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (touchTarget === boardEl || boardEl.contains(touchTarget)) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;327&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;isTouching = true;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;328&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;touchStartX = e.touches[0].clientX;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;329&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;touchStartY = e.touches[0].clientY;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;330&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;e.preventDefault();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;331&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;332&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 触摸按钮时不阻止默认行为，确保点击有效&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;333&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;334&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;335&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 触摸移动：只在触摸棋盘时阻止滚动&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;336&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const handleTouchMove = (e) =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;337&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (isTouching &amp;amp;&amp;amp; (touchTarget === boardEl || boardEl.contains(touchTarget))) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;338&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;e.preventDefault(); // 仅棋盘滑动阻止滚动&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;339&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;340&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;341&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;342&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 触摸结束：区分处理&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;343&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const handleTouchEnd = (e) =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;344&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (isTouching) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;345&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;isTouching = false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;346&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const touchEndX = e.changedTouches[0].clientX;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;347&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const touchEndY = e.changedTouches[0].clientY;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;348&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const diffX = touchEndX - touchStartX;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;349&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const diffY = touchEndY - touchStartY;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;350&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;351&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (Math.abs(diffX) &amp;gt; 30 || Math.abs(diffY) &amp;gt; 30) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;352&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (Math.abs(diffX) &amp;gt; Math.abs(diffY)) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;353&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;diffX &amp;gt; 0 ? handleMove(&apos;right&apos;) : handleMove(&apos;left&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;354&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;355&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;diffY &amp;gt; 0 ? handleMove(&apos;down&apos;) : handleMove(&apos;up&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;356&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;357&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;358&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;e.preventDefault();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;359&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;360&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;touchTarget = null; // 重置触摸目标&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;361&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;362&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;363&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 为按钮添加专门的触摸事件（解决移动端点击无反应）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;364&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const handleButtonTouch = (callback) =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;365&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return (e) =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;366&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;e.stopPropagation(); // 阻止事件冒泡到容器&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;367&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;callback();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;368&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;369&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;370&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;371&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 事件绑定（优化版）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;372&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;document.addEventListener(&apos;keydown&apos;, handleKeydown);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;373&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;container.addEventListener(&apos;touchstart&apos;, handleTouchStart, { passive: false });&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;374&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;container.addEventListener(&apos;touchmove&apos;, handleTouchMove, { passive: false });&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;375&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;container.addEventListener(&apos;touchend&apos;, handleTouchEnd, { passive: false });&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;376&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;377&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 按钮单独绑定触摸和点击事件，确保移动端响应&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;378&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;resetBtn.addEventListener(&apos;click&apos;, initGrid);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;379&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;resetBtn.addEventListener(&apos;touchstart&apos;, handleButtonTouch(initGrid), { passive: true });&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;380&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;undoBtn.addEventListener(&apos;click&apos;, undoMove);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;381&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;undoBtn.addEventListener(&apos;touchstart&apos;, handleButtonTouch(undoMove), { passive: true });&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;382&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;383&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 初始化&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;384&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;checkThemeMode();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;385&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;initGrid();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;386&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;387&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;问题&lt;a href=&quot;#问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;触控模式稍微有点bug，刷新一下能恢复&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;截图&lt;a href=&quot;#截图&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/2048-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本文章中的代码使用豆包AI修改而成，如有错误，请指出，酥米将会及时更改。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>南沙万顷沙游记：大湾区中的闪耀明珠</title><link>https://www.sumi233.top/posts/mouthtalk/nansha-travel/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/nansha-travel/</guid><description>酥米和朋友跑去南沙万顷沙大湾区体育中心围观深中通道南沙段</description><pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;上半年其实就有想要去一趟南沙十九涌（其实是想看深中通道）的想法了，但是当时只是去那边兜了两圈，也没有到处去看看，况且当时旁边在修地铁，路也没有修好，路坑坑洼洼的，坐公交进去要了我半条命。&lt;/p&gt;&lt;p&gt;（是的，这是第二次去南沙区万顷沙镇啦/doge）&lt;/p&gt;&lt;p&gt;这是上一次的图片😀：
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ns-3.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ns-9.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;旅程启动！&lt;a href=&quot;#旅程启动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;终于在年底国庆凑出了时间，那不得狠狠去一波看看深中通道（刚好在万顷沙尖尖的体育馆也在年中建好了），于是我约上了一位朋友，一齐前往大湾区体育中心，一窥深中通道的真容（是的上次去十九涌没看到深中通道我哭死😭）。&lt;/p&gt;&lt;p&gt;从佛山出发，需要一共3小时的车程，原计划是进入广州市区（沥滘转乘&lt;strong&gt;3号线&lt;/strong&gt;换乘&lt;strong&gt;18号线&lt;/strong&gt;）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ns-4.jpg&quot; alt=&quot;&quot; /&gt;
但是我并不想在国庆期间进入广州（因为今天正好碰巧琶洲在搞&lt;strong&gt;CICF漫展&lt;/strong&gt;，三号线会被&lt;strong&gt;挤爆&lt;/strong&gt;的🌚🌚），所以我们从祖庙搭乘&lt;strong&gt;广佛线&lt;/strong&gt;，在魁奇路转乘&lt;strong&gt;佛山2号线&lt;/strong&gt;到广州南站搭乘&lt;strong&gt;22号线&lt;/strong&gt;，在番禺广场转乘湾区最速地铁🚝&lt;strong&gt;18号线&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;（真的能跑到&lt;em&gt;160km&lt;/em&gt;诶😍）
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ns-7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;经过将近一小时20分的车程，我们到达了地铁横沥站（其实很快了，毕竟将近50km的距离，如果是从广州南站转&lt;strong&gt;7号线&lt;/strong&gt;去大学城坐&lt;strong&gt;4号线&lt;/strong&gt;去南沙需要2小时起步😅，而且还摇，谁坐谁无语）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ns-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后我们需要转坐&lt;strong&gt;南沙G1&lt;/strong&gt;公交车前往大湾区体育中心总站，这个过程又需要一个半小时啦~&lt;/p&gt;&lt;p&gt;不过这次的乘车体验比上次好了好多好多哇，上次因为地铁在施工，路也没修好，一路上又颠簸带摇晃，摇的我都不舒服了，不过这次过来，新垦那边已经把路修个七七八八了，只剩下地铁的部分还在修路。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ns-8.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;车行在刚重建好的灵新大道上，视野格外开阔。南沙港快速的立交桥尤其壮观，灰白色的桥体架在连片绿地间，像一片翠绿平原上骤然绽开的花，线条利落又透着生机。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ns-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;从新垦出发后，约莫五十分钟车程，我们便到了大湾区体育中心站。刚推开车门，一股滚烫的热气就直扑过来——秋老虎的威力仍在，晒得路面都泛着微光，却丝毫不减抵达目的地的期待。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;终到&lt;a href=&quot;#终到&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;我本以为这么偏僻的地方会人烟稀少，实则完全相反，坐公交的一路上也有许多与我们同行的游客，互相谈论着体育中心的景色，大家都期待着美景如画的体育中心。我转眼望去：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ns-6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;眼前的大湾区体育中心，以其独特的流线型外观惊艳目光——仿若一朵在阳光下舒展的巨形“木棉花”，金属质感的“花瓣”纹理细腻、弧度优雅，现代工艺与艺术美感交织，既透着建筑的厚重，又盈满灵动的活力，似在无声诉说湾区对体育激情的热忱追求。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ns-11.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;大湾区体育中心和深中通道一齐，共同织就一幅活力奔涌、前景璀璨的湾区画卷，让人沉醉于这片土地的创新与繁荣之中。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ns-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;此刻我站在大湾区的三角中心，吹着温凉的海风，看着屹立在海面上的深中通道。感叹着大湾区和祖国快速发展，心中自豪万分……&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ns-10.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Windows 11 Insider Preview Build 26220.6760 更新日志：新增任务栏网速测试与多项优化</title><link>https://www.sumi233.top/posts/Windows/win11dev3/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Windows/win11dev3/</guid><description>Windows 11 Insider Preview Build 26220.6760预览版的更新内容</description><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;版本信息&lt;a href=&quot;#版本信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;系统版本：Windows 11 25H2&lt;/p&gt;&lt;p&gt;内核版本：26220.6760&lt;/p&gt;&lt;p&gt;频道：Dev Channel&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/1-4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;微软于2025年9月29日向Dev频道的Windows Insider项目成员推送了Windows 11 Insider Preview Build 26220.6760 (KB5065793) 版本更新。本次更新为Windows 11版本25H2带来了多项实用功能改进，包括任务栏内置网速测试、语音访问延迟设置调整，以及针对文件资源管理器、表情符号和Copilot+ PC体验的多项优化和修复。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;逐步推出的新功能与改进&lt;a href=&quot;#逐步推出的新功能与改进&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;以下功能正逐步向开启了“在最新更新可用时立即获取”选项的Dev频道用户推送：&lt;/p&gt;&lt;section&gt;&lt;h2&gt;1. 任务栏与系统托盘：内置网络速度测试&lt;a href=&quot;#1-任务栏与系统托盘内置网络速度测试&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;新增内置&lt;strong&gt;网络速度测试工具&lt;/strong&gt;，可直接从任务栏访问。&lt;/li&gt;
&lt;li&gt;启动方式：通过&lt;strong&gt;Wi-Fi和蜂窝网络快速设置页面&lt;/strong&gt;，或右键单击系统托盘中的网络图标。&lt;/li&gt;
&lt;li&gt;该工具在默认浏览器中打开，支持测试&lt;strong&gt;以太网、Wi-Fi和蜂窝网络连接&lt;/strong&gt;，帮助评估网络性能和排查问题。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. 入门应用与Microsoft 365 Copilot&lt;a href=&quot;#2-入门应用与microsoft-365-copilot&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;为受管理的商业设备（拥有有效的Microsoft 365订阅）在“入门”应用中新增&lt;strong&gt;Microsoft 365 Copilot页面&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;此体验旨在帮助用户更轻松地&lt;strong&gt;发现和使用Microsoft 365 Copilot&lt;/strong&gt;，直接在入门流程中提供关键功能的快速访问和有用指导。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. Windows搜索（Copilot+ PC）&lt;a href=&quot;#3-windows搜索copilot-pc&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;针对Copilot+ PC改进了Windows搜索，更新了&lt;strong&gt;文件资源管理器搜索框的占位符文本&lt;/strong&gt;，以提高对今年早些时候引入的改进版Windows搜索体验的认知度。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;面向所有Dev频道用户的更改与改进&lt;a href=&quot;#面向所有dev频道用户的更改与改进&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;以下改进正向所有Dev频道用户逐步推出：&lt;/p&gt;&lt;section&gt;&lt;h2&gt;1. 文件资源管理器&lt;a href=&quot;#1-文件资源管理器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;新增&lt;strong&gt;StorageProvider API&lt;/strong&gt;，允许云提供商与文件资源管理器主页集成。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. 表情符号&lt;a href=&quot;#2-表情符号&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;暂时移除了Emoji 16.0&lt;/strong&gt;，将在未来的版本中重新引入。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. 语音访问&lt;a href=&quot;#3-语音访问&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;引入新的“&lt;strong&gt;执行前等待时间&lt;/strong&gt;”设置，允许用户配置语音命令执行前的延迟。&lt;/li&gt;
&lt;li&gt;为&lt;strong&gt;不同语速模式的用户&lt;/strong&gt;提供了更大的灵活性，无论说话慢还是快，都能实现更准确的识别。&lt;/li&gt;
&lt;li&gt;设置路径：语音访问设置 &amp;gt; 执行前等待时间，然后选择最适合的选项。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;逐步推出的修复&lt;a href=&quot;#逐步推出的修复&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;以下修复正逐步向开启了“在最新更新可用时立即获取”选项的Dev频道用户推送：&lt;/p&gt;
































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;组件&lt;/th&gt;&lt;th&gt;修复描述&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;常规&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;修复了导致部分屏幕阅读器在最近更新后&lt;strong&gt;无法读取屏幕内容&lt;/strong&gt;的底层问题。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Click to Do (预览版)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;修复了在Copilot+ PC上&lt;strong&gt;有时按WIN + P会意外调用Click to Do&lt;/strong&gt;的问题。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;任务栏和系统托盘&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;修复了最近版本中&lt;strong&gt;电池图标与实际充电状态不同步&lt;/strong&gt;的问题（例如，已插入电源却显示未充电）。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;文件资源管理器&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;修复了自定义文件夹视图（例如按名称排序文件或更改图标大小）后，这些设置&lt;strong&gt;仅应用于特定导航路径的问题&lt;/strong&gt;。之前，从其他应用（如浏览器）打开同一文件夹时，设置不会保留，导致每次都需要手动重新应用。这在关闭了“按日期分组”的&lt;strong&gt;下载文件夹&lt;/strong&gt;中尤为明显。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;锁定和登录屏幕&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;修复了最近版本中，&lt;strong&gt;尽管支持媒体控制的应用正在播放媒体，但锁定屏幕上可能不显示媒体控件&lt;/strong&gt;的问题。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Windows Update&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;修复了一个底层问题。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;已知问题&lt;a href=&quot;#已知问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;微软正在调查此版本中存在的以下问题：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Click to Do&lt;/strong&gt;：通过右边缘手势在主显示器上启动Click to Do会导致&lt;strong&gt;滑动视觉效果显示在错误的显示器上&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;锁定和登录屏幕&lt;/strong&gt;：此版本中&lt;strong&gt;锁定屏幕上可能不显示媒体控件&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务栏&lt;/strong&gt;：由于问题，任务栏预览的&lt;strong&gt;新动画已被暂时禁用&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;更新提示&lt;a href=&quot;#更新提示&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;该版本通过&lt;strong&gt;受控功能推送 (CFR)&lt;/strong&gt; 方式分发。&lt;/li&gt;
&lt;li&gt;建议Dev频道用户在“设置”&amp;gt;“Windows更新”中&lt;strong&gt;开启“在最新更新可用时立即获取”&lt;/strong&gt; 切换开关，以逐步体验到所有新功能。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copilot+ PC 的特定功能需要符合相应规格的硬件支持&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;{% note warning flat %}此版本为开发预览版，&lt;strong&gt;稳定性无法与正式版相比&lt;/strong&gt;，不建议在生产环境中使用。部分新功能可能需要特定硬件支持，且推送范围可能受地区限制。{% endnote %}&lt;/p&gt;&lt;p&gt;&lt;strong&gt;【本文基于微软官方博客更新日志编写，具体功能体验可能因设备配置和区域设置而有所不同】&lt;/strong&gt;&lt;/p&gt;&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本文章使用Deepseek V3基于微软官方更新日志润色编写而成，具体功能体验可能因设备配置和区域设置而有所不同，如有错误，请指出，酥米将会及时更改。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Hexo博客添加电子木鱼</title><link>https://www.sumi233.top/posts/tutorial/hexo-electron-fish-embed/</link><guid isPermaLink="true">https://www.sumi233.top/posts/tutorial/hexo-electron-fish-embed/</guid><description>给你的Hexo博客添加电子木鱼界面</description><pubDate>Sat, 27 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;之前博客里面一直都有电子木鱼，但是之前是塞了一个单独的网页界面，文件都是分散开的，加载也很慢，主要的还是影响博客的加载速度，于是我使用豆包AI基于52JS大佬的项目大改了一下，目前不需要文件，只需要将代码嵌入到界面的index.md文件里面即可搞定电子木鱼界面。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Demo&lt;a href=&quot;#demo&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本站已经内嵌此项目，可以去康康哦~&lt;/p&gt;&lt;p&gt;{% link 电子木鱼,酥米的小站,/fish/ %}&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;优势&lt;a href=&quot;#优势&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;不需要引用文件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;尽量修复第一次点进去无法正常使用的问题（还是有概率出现用不了的问题，不过刷新一下就好了）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;适配anzhiyu深色亮色模式，会跟着一起切换&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;总代码少，便于博客加载&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;创建界面&lt;a href=&quot;#创建界面&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;可以先使用指令单独创建一个电子木鱼的页面&lt;/p&gt;&lt;p&gt;&lt;code&gt;hexo new pages &quot;页面名称&quot;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;然后使用工具编辑&lt;code&gt;“页面名称”/index.md&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;代码&lt;a href=&quot;#代码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;代码如下：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;!-- 隔离容器 - 确保样式不冲突 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;div id=&quot;fish-container&quot; style=&quot;all: initial; display: block; margin: 20px auto; max-width: 600px; border-radius: 8px; overflow: hidden; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div class=&quot;centerContent&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div id=&quot;top&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div class=&quot;score&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div class=&quot;count&quot;&amp;gt;0&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div class=&quot;subtitle&quot;&amp;gt;功德&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div id=&quot;center&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;svg class=&quot;myFish&quot; width=&quot;157pt&quot; height=&quot;126pt&quot; viewbox=&quot;0 0 247 197&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;g id=&quot;fish-svg&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;path class=&quot;fish-path&quot; d=&quot; M 109.12 6.53 C 124.09 4.27 139.37 2.82 154.47 4.79 C 173.07 7.14 191.38 14.02 206.02 25.89 C 217.01 34.77 225.17 46.63 231.55 59.13 C 237.81 72.25 241.16 86.53 243.92 100.74 C 225.49 104.75 206.58 105.76 187.77 106.20 C 186.21 100.02 183.12 93.94 177.74 90.25 C 172.00 85.96 163.98 84.19 157.26 87.18 C 145.99 91.69 139.62 105.22 142.63 116.85 C 145.12 127.39 154.97 136.11 166.05 135.69 C 176.18 134.97 184.61 126.81 187.19 117.22 C 192.74 116.73 198.32 116.63 203.89 116.32 C 217.57 115.26 231.14 113.14 244.82 111.98 C 245.52 121.28 246.13 130.75 244.11 139.94 C 242.32 149.02 239.23 158.07 233.39 165.39 C 224.88 176.55 212.15 183.64 199.01 187.98 C 187.42 191.86 175.20 193.41 163.05 194.29 C 140.40 195.87 117.64 195.62 94.99 194.19 C 74.79 192.81 54.55 190.78 34.79 186.17 C 27.91 184.54 21.07 182.47 14.77 179.21 C 8.58 175.93 4.23 169.71 2.72 162.92 C -0.48 151.41 3.00 139.09 9.20 129.21 C 14.61 119.75 27.61 116.88 30.81 105.83 C 35.50 90.01 37.28 73.40 42.87 57.82 C 47.56 45.36 54.34 33.26 64.82 24.75 C 77.25 14.19 93.24 9.04 109.12 6.53 Z&quot;&amp;gt;&amp;lt;/path&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/g&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div id=&quot;bottom&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div class=&quot;keyTips&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;key&amp;gt;点击&amp;lt;/key&amp;gt;积攒功德&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;span id=&quot;autoClick&quot; class=&quot;autoClick&quot;&amp;gt;自动点击&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div class=&quot;leftRight&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div class=&quot;left&quot;&amp;gt;敲电子木鱼，见机甲佛祖，修赛博真经。&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div class=&quot;right&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;a href=&quot;https://github.com/52js&quot; class=&quot;textButton&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div class=&quot;text&quot;&amp;gt;@52js &amp;amp; Supermini233&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;style&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/* 基础样式 - 确保优先级 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;--text-color: #eee;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;--bg-color: #111;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;--sub-color: #aaa;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;--fish-color: #eee;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;--key-bg: #444;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;background: var(--bg-color) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: var(--text-color) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: 20px !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;transition: background-color 0.3s ease, color 0.3s ease !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/* 适配Anzhiyu亮色模式 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;html[data-theme=&quot;light&quot;] #fish-container,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;body.light #fish-container {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;--text-color: #333;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;--bg-color: #f5f5f5;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;--sub-color: #666;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;--fish-color: #333;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;--key-bg: #ddd;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/* 核心样式 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .centerContent {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: 100% !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;min-height: 300px !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;display: flex !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;flex-direction: column !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;justify-content: space-between !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: 1rem 1rem !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .score {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-family: &quot;Helvetica Neue&quot;, sans-serif !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-align: center !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;width: 100% !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: 20px 0 !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .count {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-align: center !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: 6rem !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;line-height: 1 !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;transition: transform 0.1s ease !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: var(--text-color) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .subtitle {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;84&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: 1.5rem !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;85&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: var(--sub-color) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;86&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin-top: 10px !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;87&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;88&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;89&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container #center {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;90&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;display: flex !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;91&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;justify-content: center !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;92&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;align-items: center !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;93&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: 20px 0 !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;94&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;position: relative !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;95&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;96&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;97&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .myFish {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;98&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cursor: pointer !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;99&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: 0 auto !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;100&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;pointer-events: auto !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;101&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;transition: transform 0.1s ease !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;102&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;103&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;104&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .fish-path {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;105&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;fill: var(--fish-color) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;106&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;opacity: 1.00 !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;107&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;transition: fill 0.3s ease !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;108&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;109&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;110&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container #bottom {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;111&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: var(--sub-color) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;112&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: 0.9rem !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;113&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: 0 5px !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;114&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-align: center !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;115&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;116&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;117&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .keyTips {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;118&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;display: flex !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;119&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;justify-content: center !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;120&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;align-items: center !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;121&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin-bottom: 15px !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;122&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;123&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;124&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .keyTips key {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;125&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: var(--text-color) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;126&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;background-color: var(--key-bg) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;127&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin: 0.3rem 0.45rem !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;128&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;border-radius: 0.3rem !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;129&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;padding: 0.2rem 0.5rem !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;130&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: 0.7rem !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;131&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;132&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;133&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .leftRight {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;134&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;display: flex !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;135&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;justify-content: space-between !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;136&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;align-items: center !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;137&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;138&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;139&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .left {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;140&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: 12px !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;141&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;142&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;143&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .textButton {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;144&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: var(--sub-color) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;145&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-decoration: none !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;146&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;transition: color 0.2s ease !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;147&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;148&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;149&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .textButton:hover {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;150&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: var(--text-color) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;151&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;152&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;153&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container #autoClick {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;154&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cursor: pointer !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;155&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;margin-left: 10px !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;156&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;transition: all 0.2s ease !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;157&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;158&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;159&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container #autoClick.confirm {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;160&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: var(--text-color) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;161&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;text-decoration: underline !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;162&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;163&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;164&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .subtitleCountTip {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;165&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;position: absolute !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;166&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;color: var(--text-color) !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;167&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;animation: float 1s forwards !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;168&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;opacity: 0 !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;169&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: 16px !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;170&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;171&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;172&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;@keyframes float {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;173&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;from { transform: translateY(0); opacity: 1; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;174&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;to { transform: translateY(-30px); opacity: 0; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;175&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;176&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;177&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/* 响应式调整 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;178&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;@media (max-width: 480px) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;179&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#fish-container .count {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;180&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: 4rem !important;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;181&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;182&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;183&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;184&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;185&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;script src=&quot;https://cdn.sumi233.top/npm/howler@2.2.3/dist/howler.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;186&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;187&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 主题变化时更新样式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;188&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function updateTheme() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;189&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const container = document.getElementById(&apos;fish-container&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;190&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (!container) return;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;191&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;192&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 触发重绘&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;193&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;container.style.display = &apos;none&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;194&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;setTimeout(() =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;195&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;container.style.display = &apos;block&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;196&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}, 0);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;197&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;198&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;199&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 监听主题变化事件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;200&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (window.matchMedia) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;201&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const darkModeMedia = window.matchMedia(&apos;(prefers-color-scheme: dark)&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;202&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;darkModeMedia.addEventListener(&apos;change&apos;, updateTheme);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;203&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;204&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;205&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 监听DOM变化（Anzhiyu主题切换时会改变data-theme属性）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;206&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const observer = new MutationObserver((mutations) =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;207&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;mutations.forEach(mutation =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;208&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (mutation.attributeName === &apos;data-theme&apos;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;209&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;updateTheme();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;210&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;211&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;212&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;213&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;214&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;observer.observe(document.documentElement, { attributes: true });&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;215&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;216&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 初始化木鱼功能&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;217&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function initFish() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;218&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const maxRetries = 10;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;219&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let retries = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;220&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;221&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function tryInit() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;222&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const container = document.getElementById(&apos;fish-container&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;223&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const countElement = container.querySelector(&apos;.count&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;224&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const myFishElement = container.querySelector(&apos;.myFish&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;225&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const centerElement = container.querySelector(&apos;#center&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;226&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const autoClickElement = container.querySelector(&apos;#autoClick&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;227&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;228&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (!countElement || !myFishElement || !centerElement || !autoClickElement) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;229&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;retries++;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;230&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (retries &amp;lt; maxRetries) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;231&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;setTimeout(tryInit, 100);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;232&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;233&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;234&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.error(&apos;无法加载电子木鱼元素&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;235&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;236&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;237&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;238&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;239&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let count = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;240&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let countFlag = false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;241&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let autoClick = false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;242&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let autoClickInterval = null;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;243&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;244&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;try {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;245&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const saved = localStorage.getItem(&apos;count&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;246&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;count = saved ? Number(saved) : 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;247&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} catch (e) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;248&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;count = 0;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;249&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;250&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;countElement.textContent = count;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;251&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;252&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function startAnimate() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;253&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;countElement.style.transform = &apos;scale(1.1)&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;254&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;myFishElement.style.transform = &apos;scale(0.95)&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;255&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const tip = document.createElement(&apos;div&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;256&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;tip.className = &apos;subtitleCountTip&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;257&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;tip.textContent = &apos;功德 + 1&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;258&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;centerElement.appendChild(tip);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;259&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;setTimeout(() =&amp;gt; tip.remove(), 1000);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;260&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;261&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;262&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function initAnimate() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;263&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;countElement.style.transform = &apos;scale(1)&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;264&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;myFishElement.style.transform = &apos;scale(1)&apos;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;265&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;266&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;267&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function counter() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;268&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;countFlag = true;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;269&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;count++;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;270&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;countElement.textContent = count;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;271&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;startAnimate();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;272&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;try {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;273&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;localStorage.setItem(&apos;count&apos;, count);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;274&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} catch (e) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;275&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(&apos;无法保存到本地存储&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;276&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;277&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;278&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;279&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;myFishElement.addEventListener(&apos;click&apos;, counter);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;280&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;myFishElement.addEventListener(&apos;mousedown&apos;, () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;281&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;setTimeout(initAnimate, 200);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;282&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;283&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;284&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;document.addEventListener(&apos;keyup&apos;, (e) =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;285&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (e.key === &apos; &apos;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;286&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;e.preventDefault();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;287&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (!countFlag) counter();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;288&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;289&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;290&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;291&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;document.addEventListener(&apos;keydown&apos;, (e) =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;292&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (e.key === &apos; &apos;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;293&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;e.preventDefault();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;294&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;countFlag = false;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;295&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;initAnimate();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;296&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;297&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;298&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;299&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;autoClickElement.addEventListener(&apos;click&apos;, () =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;300&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;autoClick = !autoClick;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;301&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (autoClick) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;302&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;autoClickElement.classList.add(&apos;confirm&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;303&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;autoClickInterval = setInterval(() =&amp;gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;304&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span&gt;counter();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;305&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span&gt;setTimeout(initAnimate, 200);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;306&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}, 500);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;307&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;308&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;autoClickElement.classList.remove(&apos;confirm&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;309&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;clearInterval(autoClickInterval);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;310&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;311&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;312&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;313&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(&apos;电子木鱼初始化成功&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;314&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;315&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;316&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;tryInit();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;317&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;318&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;319&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (document.readyState === &apos;complete&apos;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;320&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;initFish();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;321&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;322&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;window.addEventListener(&apos;load&apos;, initFish);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;323&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;324&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;325&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;问题&lt;a href=&quot;#问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;目前第一次打开还是会有概率无法使用（很小），刷新一次即可正常使用&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;引用教程&lt;a href=&quot;#引用教程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;谢谢大佬们的无私贡献！&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;{% link ElectronFish 电子木鱼,52JS,&lt;a href=&quot;https://github.com/52js/ElectronFish&quot; target=&quot;_blank&quot;&gt;https://github.com/52js/ElectronFish&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;最终实现效果&lt;a href=&quot;#最终实现效果&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;深色模式&lt;a href=&quot;#深色模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ht2-3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;亮色模式&lt;a href=&quot;#亮色模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ht2-2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>anzhiyu主题友链测速后端修复</title><link>https://www.sumi233.top/posts/tutorial/anzhiyu-flink-speed-fix/</link><guid isPermaLink="true">https://www.sumi233.top/posts/tutorial/anzhiyu-flink-speed-fix/</guid><description>anzhiyu主题友链测速后端修复方案和脚本</description><pubDate>Wed, 24 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;最近在捣腾anzhiyu主题的友链延迟检测，前端使用了辰渊尘大佬的方法，后端则使用了LiuShen大佬的Github Action方法，但是大佬附带的友链提取js并不适配anzhiyu主题，提示格式错误，于是我投给豆包进行了修改。&lt;/p&gt;&lt;p&gt;现已支持自动检测编码和自动修复并生成合适的友链json,也能检测出语法问题并且输出错误。&lt;/p&gt;&lt;p&gt;脚本可以放在scripts文件夹也可以单独执行&lt;code&gt;node link.js&lt;/code&gt;来生成&lt;/p&gt;&lt;p&gt;&lt;strong&gt;效果如图&lt;/strong&gt;：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ht1-1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;代码&lt;a href=&quot;#代码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;代码如下：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const YML = require(&apos;yamljs&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const fs = require(&apos;fs&apos;).promises;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const path = require(&apos;path&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 路径配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const LINK_YML_PATH = path.join(&apos;source&apos;, &apos;_data&apos;, &apos;link.yml&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const OUTPUT_JSON_PATH = path.join(&apos;source&apos;, &apos;flink_count.json&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const TAKE_COUNT = 2;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;async function processLinks() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;try {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 读取文件（二进制方式）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const yamlBuffer = await fs.readFile(LINK_YML_PATH);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(&apos;文件读取成功，大小:&apos;, yamlBuffer.length, &apos;字节&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 处理UTF-8 BOM头（移除BOM）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;let cleanBuffer = yamlBuffer;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (yamlBuffer[0] === 0xef &amp;amp;&amp;amp; yamlBuffer[1] === 0xbb &amp;amp;&amp;amp; yamlBuffer[2] === 0xbf) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.warn(&apos;检测到UTF-8 BOM头，已自动移除&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;cleanBuffer = yamlBuffer.slice(3); // 移除前3个BOM字节&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 转换为字符串&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const yamlContent = cleanBuffer.toString(&apos;utf8&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 显示文件前100个字符用于调试&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(&apos;文件前100字符:&apos;, yamlContent.substring(0, 100).replace(/\n/g, &apos;\\n&apos;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 更安全的YAML处理 - 只处理确实为空的rss字段&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const processedContent = yamlContent&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.replace(/^\s*rss:\s*$/gm, &apos;rss: &quot;&quot;&apos;)  // 处理空的rss字段&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.replace(/\t/g, &apos;  &apos;);  // 将制表符替换为两个空格（YAML不允许制表符缩进）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 保存处理后的内容用于调试&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;await fs.writeFile(&apos;processed_yaml_debug.yml&apos;, processedContent, &apos;utf8&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(&apos;已保存处理后的YAML到 processed_yaml_debug.yml&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 尝试使用更严格的方式定位错误&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;try {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(&apos;开始解析YAML...&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const data = YML.parse(processedContent);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(&apos;YAML解析成功，根结构类型:&apos;, Array.isArray(data) ? &apos;数组&apos; : typeof data);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (!Array.isArray(data)) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;throw new Error(&apos;YAML文件的根结构不是数组&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const linkList = [];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = 0; i &amp;lt; Math.min(TAKE_COUNT, data.length); i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const item = data[i];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (item &amp;amp;&amp;amp; Array.isArray(item.link_list)) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;linkList.push(...item.link_list);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.warn(`第${i+1}项不包含有效的link_list数组，已跳过`);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const outputData = {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;link_list: linkList,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;length: linkList.length&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;await fs.writeFile(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;OUTPUT_JSON_PATH,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;JSON.stringify(outputData, null, 2),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;utf8&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(`成功生成 ${OUTPUT_JSON_PATH}，共包含 ${linkList.length} 条友链`);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} catch (parseError) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.error(&apos;\n=== YAML解析错误 ===&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.error(&apos;错误信息:&apos;, parseError.message);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 尝试定位错误行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if (parseError.parsedLine) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.error(&apos;错误位置: 第&apos;, parseError.parsedLine, &apos;行&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 输出错误行附近的内容&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const lines = processedContent.split(&apos;\n&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const errorLine = parseError.parsedLine - 1; // 转换为数组索引&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 显示错误行前后3行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;for (let i = Math.max(0, errorLine - 3); i &amp;lt;= Math.min(lines.length - 1, errorLine + 3); i++) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(`${i + 1}: ${lines[i]}`);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;84&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;85&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} else {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;86&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.error(&apos;错误位置: 未知（可能是文件开头附近）&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;87&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;88&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.error(&apos;请检查 processed_yaml_debug.yml 文件是否有格式问题&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;89&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;90&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;91&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} catch (error) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;92&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.error(&apos;\n=== 处理过程出错 ===&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;93&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.error(&apos;错误信息:&apos;, error.message);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;94&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;95&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;96&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;97&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;processLinks();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;运行脚本前请先安装yamljs &lt;code&gt;node install yamljs --save&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;后端Github Action修复方案&lt;a href=&quot;#后端github-action修复方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;{% note warning flat %}此修复方法仅经过本人测试正常运行，可否正常使用请自行测试{% endnote %}&lt;/p&gt;&lt;p&gt;作者原版github actions运行后可能会出现找不到环境变量的问题，导致抓取失败。&lt;/p&gt;&lt;p&gt;这里有个走偏门的方法，可以Fork后修改workflows文件夹里面的yaml文件夹的&lt;strong&gt;check_links.yml&lt;/strong&gt;,将&lt;code&gt;env：&lt;/code&gt;下面的&lt;/p&gt;&lt;p&gt;&lt;code&gt;SOURCE_URL: ${{ secrets.SOURCE_URL }}&lt;/code&gt;&lt;/p&gt;&lt;p&gt;改成自己的URL，例如：&lt;/p&gt;&lt;p&gt;&lt;code&gt;SOURCE_URL: https://www.sumi233.top/flink_count.json&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ht1-4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;然后在项目的Github Actions再次运行workflows即可。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;引用教程&lt;a href=&quot;#引用教程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;谢谢大佬们的无私贡献！&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;{% link Github Action实现友链状态检测,LiuShen,&lt;a href=&quot;https://blog.liushen.fun/posts/c2262998/&quot; target=&quot;_blank&quot;&gt;https://blog.liushen.fun/posts/c2262998/&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;{% link 安知鱼主题实现友链状态前端显示,辰渊尘の个人博客,&lt;a href=&quot;https://blog.mcxiaochen.top/posts/p1c0fbc06/&quot; target=&quot;_blank&quot;&gt;https://blog.mcxiaochen.top/posts/p1c0fbc06/&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;最终实现效果&lt;a href=&quot;#最终实现效果&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/ht1-2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米的碎碎念（2）</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-2/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-2/</guid><description>酥米关于台风桦加沙</description><pubDate>Tue, 23 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h3&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;就在前天，“桦加沙”来势汹汹的闯进了我国海域，24号将于广东省阳江市-珠海市登陆。本次台风尤为严重，风力达超17级；距离上一次超强台风还是“山竹”。全广东省地级市也开启了I级戒备，珠三角大部分城市也实行了“五停”。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk2-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;台风将来之际&lt;a href=&quot;#台风将来之际&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;酥米在佛山市禅城区。从今天起也开始停课停工，我也在22号下午收到了班主任在群里发的停课通知，说实话当时还挺震惊的，因为很久没有遇见能让学校停课的台风了（上一次是山竹）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk2-6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;今天小区门口物业也一直在播注意台风安全的广播，可想而知这次台风的严重程度。23日整天佛山并没有太大的影响，只有在晚上下了一场雨。不过我看到新闻珠海已经海水上涨淹掉一些地方了（海边的小伙伴一定要注意安全哦！）。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk2-5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;佛山市也已然进入戒备状态，23号21点起佛山地铁停运，高铁也停运了，甚至是大巴也跟着发说明停运了。高明和三水区部分桥梁也停止人/汽车通行。同时停工停课也在进行中。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk2-4.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk2-3.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/talk2-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;个人的小希望&lt;a href=&quot;#个人的小希望&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;希望各位在和我一起在广东的小伙伴，能顺利的度过这次“桦加沙”的”摧残“，平平安安的上学上班。&lt;/p&gt;&lt;p&gt;{% note danger flat %}广东靠海的小伙伴一定要注意安全哦！！！{% endnote %}&lt;/p&gt;&lt;p&gt;也要提醒小伙伴们（尤其是珠海、江门、惠州、深圳、阳江一带的小伙伴！），台风期间非必要切勿随便出门，在外面如果遇到台风需到安全的建筑物下躲避。因为台风可能会导致下雨，也要注意洪涝和山体滑坡的风险哦~&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Windows 11 Insider Preview Build 26220.6690 更新日志：Copilot 整合再深化</title><link>https://www.sumi233.top/posts/Windows/win11dev2/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Windows/win11dev2/</guid><description>Windows 11 Insider Preview Build 26220.6690预览版的更新内容</description><pubDate>Sun, 21 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;版本信息&lt;a href=&quot;#版本信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;系统版本：Windows 11 25H2&lt;/p&gt;&lt;p&gt;内核版本：26220.6690&lt;/p&gt;&lt;p&gt;频道：Dev Channel&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/1-3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;微软于2025年9月19日向Dev频道的Windows Insider项目成员推送了Windows 11 Insider Preview Build 26220.6690 (KB5065786) 版本更新。本次更新继续深化Copilot与系统壳层的整合，并带来多项体验优化和问题修复。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;1. Click to Do (预览版) 翻译功能&lt;a href=&quot;#1-click-to-do-预览版-翻译功能&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;为 &lt;strong&gt;Copilot+ PC&lt;/strong&gt; 引入了由 &lt;strong&gt;Microsoft Copilot 提供支持的翻译功能&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;当选择的文本与Windows显示语言或首选语言设置不同时，会&lt;strong&gt;出现翻译建议&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;选定的文本会发送到Copilot应用，并在体验中&lt;strong&gt;无缝提供翻译&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;⚠️ 注意：此功能需要已在之前版本中推出的新Copilot提示框，且&lt;strong&gt;目前尚未向欧洲经济区(EEA)或中国的Insiders推送&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;2. 任务栏与系统托盘：分享到 Copilot&lt;a href=&quot;#2-任务栏与系统托盘分享到-copilot&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;鼠标悬停在任务栏上已打开的应用窗口时，会出现一个“&lt;strong&gt;分享给 Copilot&lt;/strong&gt;”（Share with Copilot）选项。&lt;/li&gt;
&lt;li&gt;此功能允许快速与Copilot开始新对话，并使用 &lt;strong&gt;Copilot Vision 扫描、分析&lt;/strong&gt;屏幕上的应用内容。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;3. Desktop Spotlight 上下文菜单选项&lt;a href=&quot;#3-desktop-spotlight-上下文菜单选项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;若在“设置”&amp;gt;“个性化”&amp;gt;“背景”中选择 &lt;strong&gt;Windows Spotlight 作为桌面背景&lt;/strong&gt;，右键单击桌面时，上下文菜单会添加“&lt;strong&gt;了解有关此背景的更多信息&lt;/strong&gt;”和“&lt;strong&gt;下一个桌面背景&lt;/strong&gt;”选项。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;4. 设置账户管理优化&lt;a href=&quot;#4-设置账户管理优化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;“设置”&amp;gt;“账户”下的“&lt;strong&gt;电子邮件和账户&lt;/strong&gt;”部分现已更名为“&lt;strong&gt;您的账户&lt;/strong&gt;”（Your accounts）。&lt;/li&gt;
&lt;li&gt;这反映了在Windows和应用中保持连接的&lt;strong&gt;更统一和简化的方式&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;逐步推出的修复&lt;a href=&quot;#逐步推出的修复&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;以下修复正逐步向开启了“在最新更新可用时立即获取”选项的Dev频道用户推送：&lt;/p&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;组件&lt;/th&gt;&lt;th&gt;修复描述&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;文件资源管理器&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;修复了在地址栏中直接输入UNC服务器名称可能导致文件资源管理器&lt;strong&gt;无响应的问题&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Windows Update&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;修复了近期部分Insider安装最新版本时&lt;strong&gt;失败并出现错误0x80070002&lt;/strong&gt;的问题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;音频&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;解决了近期更新后可能出现的&lt;strong&gt;音频无法正常工作的问题&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;设置&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;修复了启用管理员保护后，“设置”&amp;gt;“系统”&amp;gt;“可选功能”&amp;gt;“添加可选功能”可能&lt;strong&gt;无法加载的问题&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;已知问题&lt;a href=&quot;#已知问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;微软正在调查此版本中存在的以下问题：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Click to Do&lt;/strong&gt;：通过右边缘手势在主显示器上启动Click to Do会导致&lt;strong&gt;滑动视觉效果显示在错误的显示器上&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;锁定和登录屏幕&lt;/strong&gt;：此版本中&lt;strong&gt;锁定屏幕上可能不显示媒体控件&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务栏&lt;/strong&gt;：由于问题，任务栏预览的&lt;strong&gt;新动画已被暂时禁用&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;更新提示&lt;a href=&quot;#更新提示&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;该版本通过&lt;strong&gt;受控功能推送 (CFR)&lt;/strong&gt; 方式分发。&lt;/li&gt;
&lt;li&gt;建议Dev频道用户在“设置”&amp;gt;“Windows更新”中&lt;strong&gt;开启“在最新更新可用时立即获取”&lt;/strong&gt; 切换开关，以逐步体验到所有新功能。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copilot+ PC 的特定功能需要符合相应规格的硬件支持&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;⚠️ &lt;strong&gt;注意事项&lt;/strong&gt;：此版本为开发预览版，&lt;strong&gt;稳定性无法与正式版相比&lt;/strong&gt;，不建议在生产环境中使用。部分新功能可能需要特定硬件支持，且推送范围可能受地区限制。&lt;/p&gt;&lt;/blockquote&gt;&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本文章使用Deepseek V3基于微软官方更新日志润色编写而成，具体功能体验可能因设备配置和区域设置而有所不同，如有错误，请指出，酥米将会及时更改。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Windows 11 Insider Preview Build 26220.6682 更新日志：AI功能持续增强</title><link>https://www.sumi233.top/posts/Windows/win11dev1/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Windows/win11dev1/</guid><description>Windows 11 25H2 Build 26220.6682预览版的更新内容</description><pubDate>Sun, 14 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;版本信息&lt;a href=&quot;#版本信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;系统版本：Windows 11 25H2&lt;/p&gt;&lt;p&gt;内核版本：26220.6682&lt;/p&gt;&lt;p&gt;频道：Dev Channel&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/1-2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;微软今日向 Dev 频道的 Windows Insider 项目成员推送了 Windows 11 Insider Preview Build 26220.6682 (KB5065782) 版本更新。本次更新主要针对 Copilot+ PC 设备，进一步增强了 Click to Do 功能的实用性和智能化水平，同时对讲述人(Narrator)无障碍功能进行了优化。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;1. Click to Do 功能增强（预览版）&lt;a href=&quot;#1-click-to-do-功能增强预览版&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本次更新为 Copilot+ PC 带来了多项 Click to Do 功能的改进：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;自定义指令输入&lt;/strong&gt;：现在在 Click to Do 的上下文菜单中可以直接输入自定义指令，与选定的屏幕内容一并发送给 Copilot，交互更加灵活。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;本地 AI 推荐提示&lt;/strong&gt;：菜单下方会显示由设备端 Phi-Silica 模型生成的推荐提示（目前支持英文、西班牙文和法文），响应更快且保护隐私。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;视觉动画优化&lt;/strong&gt;：使用屏幕右边缘手势触发 Click to Do 时，新增了流畅的视觉动画反馈，操作体验更加直观。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;功能发现性提升&lt;/strong&gt;：上下文菜单中新增”新建和热门”动作标签，帮助用户更快发现实用功能。同时”总结”功能的输出结果更加简洁精炼。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;开始菜单集成&lt;/strong&gt;：开始菜单的”推荐”区域会展示 Copilot 示例提示，引导用户体验 AI 功能。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;⚠️ 注意：上述 Click to Do 增强功能目前未向欧洲经济区(EEA)或中国的 Insiders 推送。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;2. 讲述人(Narrator)无障碍功能优化&lt;a href=&quot;#2-讲述人narrator无障碍功能优化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本次更新对讲述人功能进行了多项改进：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自然语音优化&lt;/strong&gt;：使用自然语音时，讲述人播报标题或语法错误时不再显著提高音调，减少听觉干扰&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;脚注导航改进&lt;/strong&gt;：新增脚注导航功能，可清晰听取脚注编号，便于处理参考文献类文档&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;阅读稳定性提升&lt;/strong&gt;：修复了讲述人可能在文档中间意外停止阅读的问题&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;3. 新表情符号加入&lt;a href=&quot;#3-新表情符号加入&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本次更新引入了 7 个新的 Emoji 16.0 表情符号：&lt;/p&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;表情符号&lt;/th&gt;&lt;th&gt;名称&lt;/th&gt;&lt;th&gt;含义与使用场景&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;🫤&lt;/td&gt;&lt;td&gt;有眼袋的脸&lt;/td&gt;&lt;td&gt;表示&lt;strong&gt;疲惫、倦怠&lt;/strong&gt;或需要休息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🫰&lt;/td&gt;&lt;td&gt;指纹&lt;/td&gt;&lt;td&gt;代表&lt;strong&gt;身份、安全、解锁&lt;/strong&gt;或隐私相关话题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🫚&lt;/td&gt;&lt;td&gt;根类蔬菜&lt;/td&gt;&lt;td&gt;代表&lt;strong&gt;健康饮食、园艺&lt;/strong&gt;或烹饪&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🫗&lt;/td&gt;&lt;td&gt;光秃秃的树&lt;/td&gt;&lt;td&gt;象征&lt;strong&gt;冬天、休眠、空旷&lt;/strong&gt;或孤独感&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🫖&lt;/td&gt;&lt;td&gt;竖琴&lt;/td&gt;&lt;td&gt;表示&lt;strong&gt;音乐、艺术&lt;/strong&gt;，或带有古老、优雅的意境&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🫕&lt;/td&gt;&lt;td&gt;铲子&lt;/td&gt;&lt;td&gt;用于&lt;strong&gt;园艺、挖掘&lt;/strong&gt;，或比喻“摆脱困境”&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🫔&lt;/td&gt;&lt;td&gt;飞溅&lt;/td&gt;&lt;td&gt;表达&lt;strong&gt;创造力、混乱&lt;/strong&gt;或趣味性的泼洒&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;blockquote&gt;&lt;p&gt;💡 提示：这些新表情符号在系统表情面板中可用，但第三方应用可能需要更新才能正确显示。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;4. Xbox 控制器操作调整&lt;a href=&quot;#4-xbox-控制器操作调整&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;短按&lt;/strong&gt; Xbox 按钮：打开 Game Bar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长按&lt;/strong&gt; Xbox 按钮：打开任务视图(Task View)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;按住&lt;/strong&gt; Xbox 按钮：保持原有功能，关闭控制器&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;问题修复&lt;a href=&quot;#问题修复&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本次更新包含了多项稳定性改进：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;提升了任务栏隐藏和取消隐藏的可靠性&lt;/li&gt;
&lt;li&gt;解决了文件资源管理器可能无响应的问题&lt;/li&gt;
&lt;li&gt;修复了使用 NDI 和显示捕获时 OBS 音频卡顿的问题&lt;/li&gt;
&lt;li&gt;改进了 Windows 沙盒的稳定性&lt;/li&gt;
&lt;li&gt;优化了语音访问和 Windows Hello 的体验&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;已知问题&lt;a href=&quot;#已知问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;Click to Do 可能无法为某些用户启动&lt;/li&gt;
&lt;li&gt;锁定屏幕上可能不显示媒体控件&lt;/li&gt;
&lt;li&gt;部分用户可能会遇到音频问题，设备管理器中可能出现黄色感叹号&lt;/li&gt;
&lt;li&gt;某些 PC 在休眠期间可能会遇到 bugcheck（绿屏错误）&lt;/li&gt;
&lt;li&gt;文件资源管理器主页中的”共享”部分对某些用户可能显示为空&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;由于此版本是测试版，&lt;strong&gt;稳定性可能受到影响&lt;/strong&gt;，不建议在生产环境中使用。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本文章使用Deepseek V3基于微软官方更新日志润色编写而成，具体功能体验可能因设备配置和区域设置而有所不同，如有错误，请指出，酥米将会及时更改。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Windows 11 Insider Preview Build 26220.5790 更新日志：AI赋能更智能的PC体验</title><link>https://www.sumi233.top/posts/Windows/win11dev/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Windows/win11dev/</guid><description>Windows 11 25H2 Build 26220.5790预览版的更新内容</description><pubDate>Sun, 07 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;版本信息&lt;a href=&quot;#版本信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;系统版本：Windows 11 25H2&lt;/p&gt;&lt;p&gt;内核版本：26220.5790&lt;/p&gt;&lt;p&gt;频道：Dev Channel&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/1-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;微软最新发布的Windows 11 25H2 Build 26220.5790预览版为Copilot+ PC带来了一系列AI驱动的新功能，让操作系统变得更加智能高效。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;近日，微软向Dev频道的Windows Insider项目成员发布了Windows 11 Insider Preview Build 26220.5790（KB5065779），作为即将到来的25H2版本的一部分。&lt;/p&gt;&lt;p&gt;这个版本主要集中在提升Copilot+ PC的体验上，引入了智能语音听写、扩展的Studio Effects支持以及文件资源管理器的改进。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;智能语音听写：更流畅的语音输入体验&lt;a href=&quot;#智能语音听写更流畅的语音输入体验&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Build 26220.5790 为Copilot+ PC带来了&lt;strong&gt;流体听写（Fluid Dictation）&lt;/strong&gt; 功能。它通过设备端的小型语言模型（SLMs）实时自动纠正语法、标点符号和填充词，从而减少手动编辑的需要。&lt;/p&gt;&lt;p&gt;这意味着用户在使用语音输入时可以获得更流畅、更智能的体验。&lt;/p&gt;&lt;p&gt;此功能在任何支持文本输入的应用中都能工作，但在密码或PIN等安全字段中会自动禁用以保护隐私。目前流体听写支持&lt;strong&gt;所有英语 locales&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;要使用此功能，用户只需启动语音访问（Voice Access）并完成设置（如果是首次使用），流体听写默认即为启用状态。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Studio Effects扩展支持更多摄像头&lt;a href=&quot;#studio-effects扩展支持更多摄像头&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本次更新另一个亮点是 &lt;strong&gt;Windows Studio Effects 开始支持更多类型的摄像头硬件&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;此前Studio Effects主要限于集成式笔记本电脑摄像头，现在，在支持的Copilot+ PC上，用户可以在&lt;strong&gt;额外的备用摄像头&lt;/strong&gt;（如USB网络摄像头或笔记本电脑的内置后置摄像头）上使用AI加持的摄像头增强功能了。&lt;/p&gt;&lt;p&gt;要启用该功能，只需导航到 &lt;strong&gt;“设置”&amp;gt;“蓝牙和设备”&amp;gt;“摄像头”&lt;/strong&gt;，从已连接的摄像头列表中选择首选摄像头，然后打开高级摄像头选项菜单，找到新的“使用Windows Studio Effects”切换开关即可。&lt;/p&gt;&lt;p&gt;需要注意的是，该功能所需的Windows Studio Effects驱动程序更新将&lt;strong&gt;首先推送给基于Intel的Copilot+ PC&lt;/strong&gt;，基于AMD和Snapdragon的Copilot+ PC则在未来几周内陆续获得支持。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;文件资源管理器的新悬停操作&lt;a href=&quot;#文件资源管理器的新悬停操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;文件资源管理器的“主页”现在提供了&lt;strong&gt;新的悬停操作&lt;/strong&gt;，以便更快地进行文件管理。&lt;/p&gt;&lt;p&gt;当用户在文件资源管理器主页中将鼠标悬停在文件上时，会显示“打开文件位置”和“向Copilot询问此文件”等命令。这使得用户能更轻松地尝试Copilot集成并附加文件。&lt;/p&gt;&lt;p&gt;不过此体验目前仅限使用&lt;strong&gt;Microsoft帐户登录&lt;/strong&gt;的用户。对未来工作或学校账户（Entra ID）的支持将在未来的版本中推出，并且此更改尚未向欧洲经济区（EEA）的Windows Insider成员推出。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;底层优化和问题修复&lt;a href=&quot;#底层优化和问题修复&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;除了引入新功能，Build 26220.5790 也带来了一系列修复，提升了系统的稳定性和性能：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;常规性修复&lt;/strong&gt;：解决了某些设备上各种场景中出现的意外延迟增加问题，包括与文件资源管理器和任务栏的交互（单击可能需要500毫秒才能处理）以及浏览器窗口（尤其是在观看视频时）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务栏和系统托盘&lt;/strong&gt;：修复了更改显示分辨率后，任务栏中的应用预览窗口可能与单击/悬停的应用图标&lt;strong&gt;不对齐的问题&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文件资源管理器&lt;/strong&gt;：修复了安装某些应用程序后，右键单击时上下文菜单可能在正常初始视图和“显示更多选项”之间意外切换的问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;设置&lt;/strong&gt;：解决了“设置”&amp;gt;“系统”&amp;gt;“存储”&amp;gt;“临时文件”页面在文件扫描阶段&lt;strong&gt;卡住的问题&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;其他&lt;/strong&gt;：修复了导致某些Insiders的事件查看器中出现“Microsoft Pluton加密提供程序未加载，因为初始化失败”并出现错误57的问题。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;已知问题&lt;a href=&quot;#已知问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;目前仍存在一些已知问题，微软正在调查解决：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;一些PC在&lt;strong&gt;休眠期间&lt;/strong&gt;可能会遇到bugcheck（绿屏），建议用户暂时避免使PC休眠。&lt;/li&gt;
&lt;li&gt;文件资源管理器主页中的“共享”部分对某些用户可能&lt;strong&gt;显示为空&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;一些Insiders遇到&lt;strong&gt;音频问题&lt;/strong&gt;（音频停止工作，设备管理器中设备显示黄色感叹号），可尝试通过更新设备驱动程序来缓解。&lt;/li&gt;
&lt;li&gt;正在调查&lt;strong&gt;通过蓝牙使用Xbox控制器&lt;/strong&gt;导致PC bugcheck的问题。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;Build 26220.5790预览版展现了Windows 11 25H2在&lt;strong&gt;AI与操作系统深度融合&lt;/strong&gt;方面的探索。流体听写、扩展的Studio Effects以及更便捷的文件操作悬停菜单，都预示着更智能、更高效的个人计算体验。&lt;/p&gt;&lt;p&gt;由于此版本是测试版，&lt;strong&gt;稳定性可能受到影响&lt;/strong&gt;，不建议在生产环境中使用。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本文章使用Deepseek V3润色而成，如有错误，请指出，酥米将会及时更改。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>红米2？Linux？ | 手把手教你刷入PostmarketOS Linux！老机换新颜！</title><link>https://www.sumi233.top/posts/tutorial/redmi2-postmarketos-flash/</link><guid isPermaLink="true">https://www.sumi233.top/posts/tutorial/redmi2-postmarketos-flash/</guid><description>酥米手把手教你把红米2刷入PostmarketOS Linux！</description><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本期教程将小白式手把手教大家将红米2刷入PostmarketOS&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;前期准备&lt;a href=&quot;#前期准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;红米2（1g或者2g版都行，2a不支持刷入Linux）&lt;/li&gt;
&lt;li&gt;数据线&lt;/li&gt;
&lt;li&gt;正常使用的电脑（建议系统版本windows10以上）&lt;/li&gt;
&lt;li&gt;灵巧的手和脑子&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;合并分区&lt;a href=&quot;#合并分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;已升级安卓5.1的增强版机型可以跳过此步骤，非增强版或未升级安卓5.1的增强版请继续往下&lt;/p&gt;&lt;section&gt;&lt;h2&gt;下载附件&lt;a href=&quot;#下载附件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;请按照以下机型下载线刷包&lt;/p&gt;&lt;p&gt;{% link 线刷包,红米2移动版/2a,&lt;a href=&quot;https://xiaomirom.com/download/redmi-2-redmi-2-pro-wt86047-stable-V9.2.3.0.LHJCNEK/#china-fastboot&quot; target=&quot;_blank&quot;&gt;https://xiaomirom.com/download/redmi-2-redmi-2-pro-wt86047-stable-V9.2.3.0.LHJCNEK/#china-fastboot&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;{% link 线刷包,红米2联通/电信版,&lt;a href=&quot;https://xiaomirom.com/download/redmi-2-redmi-2-pro-wt88047-stable-V9.2.5.0.LHJMIEK/#global-fastboot&quot; target=&quot;_blank&quot;&gt;https://xiaomirom.com/download/redmi-2-redmi-2-pro-wt88047-stable-V9.2.5.0.LHJMIEK/#global-fastboot&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;{% link Miflash,Miflash刷机工具,&lt;a href=&quot;https://miuiver.com/miflash/&quot; target=&quot;_blank&quot;&gt;https://miuiver.com/miflash/&lt;/a&gt; %}&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;更新最新版系统合并分区&lt;a href=&quot;#更新最新版系统合并分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;红米2官方系统安卓5.1版本往上会自动合并分区，仅需使用miflash线刷更新系统即可&lt;/p&gt;&lt;p&gt;首先长按电源键+音量下键将红米2进入Fastboot，并且使用数据线与电脑连接
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20194026.png&quot; alt=&quot;&quot; /&gt;
解压下载好的miflash工具，打开点击左上角的driver选项，点击安装，显示完成后关闭
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20194247.png&quot; alt=&quot;&quot; /&gt;
解压线刷包，miflash中点击选择，选择刚解压的线刷包文件夹
点击加载设备，让工具识别到设备，识别到了点击刷机等待进度条跑完。如未识别到设备请检测驱动是否安装。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20194312.png&quot; alt=&quot;&quot; /&gt;
进度条跑完后手机会自动重启，此时即更新完成&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;刷入PostmarketOS Linux&lt;a href=&quot;#刷入postmarketos-linux&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;下载附件&lt;a href=&quot;#下载附件-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;请下载以下刷机包和附件&lt;/p&gt;&lt;p&gt;红米2全系PostmarketOS下载：&lt;a href=&quot;https://images.postmarketos.org/bpo/edge/xiaomi-wt88047/phosh&quot; target=&quot;_blank&quot;&gt;https://images.postmarketos.org/bpo/edge/xiaomi-wt88047/phosh&lt;/a&gt;
ADB，recovery，lk2nd等文件的下载地址：&lt;a href=&quot;https://www.123pan.com/s/mIXlVv-I7PB.html&quot; target=&quot;_blank&quot;&gt;https://www.123pan.com/s/mIXlVv-I7PB.html&lt;/a&gt; 提取码&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;开始刷入PostmarketOS&lt;a href=&quot;#开始刷入postmarketos&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;首先长按电源键+音量下键将红米2进入Fastboot，并且使用数据线与电脑连接&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20194026.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;解压adb工具，打开cmd，cd到adb目录
刷入fastboot device检测设备
出现&lt;code&gt;xxxxxxxx  fastboot&lt;/code&gt;即成功识别设备&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20194328.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;输入&lt;code&gt;fastboot flash recovery “刚下载的rec.img的文件地址”&lt;/code&gt;以刷入Recovery&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20194045.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后手机长按电源键+音量上键进入工程模式，选择recovery模式进入&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20210211.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;进入rec后点击settings，更改成简体中文
之后选择清除-高级清除，选择data、system、cache然后滑动清除进行格式化&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20194108.png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20194140.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后选择格式化Data，输入yes清除，清除后按返回回到主界面&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20194151.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;选择重启-Bootloader模式进入线刷模式&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20194203.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;打开cmd，cd到adb目录
输入&lt;code&gt;fastboot flash boot “刚下载的lk2nd.img的文件地址”&lt;/code&gt;以刷入引导文件&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20194003.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;输入后fastboot reboot回车进入lk2nd&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20210821.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;输入以下命令刷入内核和rootfs&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fastboot flash boot “刚下载的boot.img的文件地址”&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fastboot flash userdata “刚下载的rootfs.img的文件地址”&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-08-19%20210752.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;刷入后输入fastboot reboot回车或者单击手机电源键即可进入PostmarketOS系统啦！&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;系统默认密码为：147147
由于postmarketOS基于alpine而并非常见发行版，软件源生态匮乏，建议使用flatpak安装部分软件&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;部分截图&lt;a href=&quot;#部分截图&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/IMG_2290.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/IMG_2289.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/IMG_2275.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/IMG_2274.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/IMG_2291.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;视频版&lt;a href=&quot;#视频版&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt; &lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>使用CloudFlare加速Github Pages</title><link>https://www.sumi233.top/posts/tutorial/cloudflare-github-pages-cdn/</link><guid isPermaLink="true">https://www.sumi233.top/posts/tutorial/cloudflare-github-pages-cdn/</guid><description>使用CloudFlare CDN进行加速您的github pages</description><pubDate>Sat, 02 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;由于Github服务器在国外，导致国内用户总是打不开基于Github Pages的网站（或者抽风），于是在网上翻查了下，发现可以使用CloudFlare CDN进行加速，虽然服务器也在国外，但也好过没有（DOGE。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;准备事项&lt;a href=&quot;#准备事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;一个正常使用的域名&lt;/li&gt;
&lt;li&gt;已经搭建好的GitHub Pages，并且绑定上域名&lt;/li&gt;
&lt;li&gt;灵活的脑子和手&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;正文&lt;a href=&quot;#正文&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;{% link Cloudflare,Cloudflare注册链接,&lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot;&gt;https://dash.cloudflare.com/&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;打开cloudflare官网，进行注册。注册后点击右上角添加——连接域，输入你的主域名，默认选项继续。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/cloudflaredns%20(1).png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/cloudflaredns%20(2).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后选择Free版计划，下一步会跳转到DNS记录。新增四个记录，类型为A，勾选代理，名称填写子域名，如要作为网站使用的域名为&lt;code&gt;www.xxxx.top&lt;/code&gt;那子域名就是&lt;code&gt;www&lt;/code&gt;，ipv4地址分别如下&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;185.199.108.153&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;185.199.109.153&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;185.199.110.153&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;185.199.111.153&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/cloudflaredns%20(3).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/cloudflaredns%20(6).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后点击激活，会显示出两个cloudflare的专用解析DNS地址，去域名运营商那修改DNS服务器
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/cloudflaredns%20(4).png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/cloudflaredns%20(5).png&quot; alt=&quot;&quot; /&gt;
等待运营商域名刷新后就大功告成啦！&lt;/p&gt;&lt;section&gt;&lt;h2&gt;小贴士&lt;a href=&quot;#小贴士&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;域名的DNS修改后，整个域名的DNS解析功能将会迁移至CloudFlare，建议使用单独的域名食用或在cloudflare上重新解析其他子域名记录&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>每一步都是意外之外！荣耀平板5 10.1英寸版本的各种折腾 （总结篇）</title><link>https://www.sumi233.top/posts/flash/Agassi2-W09BHN/</link><guid isPermaLink="true">https://www.sumi233.top/posts/flash/Agassi2-W09BHN/</guid><description>每一步都是意外之外！荣耀平板5 10.1英寸版本的各种折腾 （总结篇）</description><pubDate>Thu, 26 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;三天前，我在闲鱼相中了一台荣耀平板5 10英寸，并且以155的低价购入屏幕带线版，当时卖家是说除了屏幕顶上有线其他正常，结果到手三天意外就发生了，屏幕直接被被竖纹给霸占，找商家追诉，返了55块
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(29).jpg&quot; alt=&quot;01&quot; /&gt;&lt;figcaption&gt;01&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(26).jpg&quot; alt=&quot;02&quot; /&gt;&lt;figcaption&gt;02&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;小嘴一句，这个卖家本来还不想理我，直接未读但闲鱼在线，还把简介的非质量问题改成了不退不换，想耍闲鱼小花招，没门！我直接给他甩追差评+投诉+拉黑小连招，让卖家怂的返了一部分的钱款
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(24).jpg&quot; alt=&quot;03&quot; /&gt;&lt;figcaption&gt;03&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;麒麟659在鸿蒙下&lt;a href=&quot;#麒麟659在鸿蒙下&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;真的好卡！！！！！！我已经不能用言语形容卡顿，是那种没法正常用的卡顿，鸿蒙的对于老机型的优化真的很垃圾，我不明白套壳emui9为什么还能这么卡，在鸿蒙下没装软件滑动桌面都会卡，更别说了装了软件了，我还跑了个娱乐兔跑分，这颗u跑分在14-15w分左右，和625不分伯仲，但是这个价位要什么自行车？/doge
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(1).jpg&quot; alt=&quot;04&quot; /&gt;&lt;figcaption&gt;04&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(2).jpg&quot; alt=&quot;05&quot; /&gt;&lt;figcaption&gt;05&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;降级&lt;a href=&quot;#降级&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;官方渠道无法正常降级&lt;a href=&quot;#官方渠道无法正常降级&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;OKOK扯远了，回到正题，于是我就开启了我的难崩降级之旅，因为华为的解bl和刷机嘛，需要在emui下实现，所以得从鸿蒙降级下来。
华为也很鸡贼，明明之前说好升了鸿蒙可以随便降回emui，但是从Harmony Next之后，华为就取消了所以老机型的降级通道，这意味着唯一的官方通道被彻底覆灭，我也尝试过像代理降级的办法，都是无法正常降级的&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;三键强刷&lt;a href=&quot;#三键强刷&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;所幸，我在万维论坛找到了高维禁用的emui9强刷包，食用方法也很简单：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;下载之后直接解压dload放在sd卡目录（一定是sd卡或者otg，不能是内部存储）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;然后打开系统自带的计算器输入()()2846579()()进入工程菜单&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(3).jpg&quot; alt=&quot;06&quot; /&gt;&lt;figcaption&gt;06&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;选择软件升级——存储卡升级，平板就会重启到rec自动降级emui9.1了&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(27).jpg&quot; alt=&quot;07&quot; /&gt;&lt;figcaption&gt;07&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;注：由于万维论坛的注册是邀请制，并且限制分享，所以要强刷包下载链接的可以点击右下角三个选项中间的小气泡按钮找我要链接下载&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;也可以使用代理法降级EMUI9（只能降最新的EMUI9.1），这里就不细说了，网上有很多教学视频&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h2&gt;Bingo&lt;a href=&quot;#bingo&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;恭喜你完成第一步，降级EMUI9，降完级你会得到一个可以正常使用流畅度也还行的麒麟659设备
（本来想降EMUI8的，但是官方彻底关降级通道了）&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;拆机解锁BL&lt;a href=&quot;#拆机解锁bl&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;但是还不够，我的终极目标是解锁BL刷入LineageOS GSI！达到真正的流畅使用！&lt;/p&gt;&lt;section&gt;&lt;h2&gt;拆机&lt;a href=&quot;#拆机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本来是没那么早拆机的，但是因为屏幕迫使我的好奇心一看究竟。
我讲下我的方法吧（过程全错，结果全对doge）&lt;/p&gt;&lt;p&gt;需要的材料：吹风机、热风枪或者拆机台，镊子一个，翘机片若干，刀片x1&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;步骤&lt;a href=&quot;#步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;首先拿吹风机调热风或者热风枪调低温，有那个拆机台加热也可以，加热下屏幕四周，一定要热够时间！！！！而且要热一边拆一边，原装屏幕胶很黏，不热拆不下来（不然会像我一样，死活拆不下来，用刀片割胶）&lt;/li&gt;
&lt;li&gt;然后用刀片插进屏幕缝隙里翘翘，要慢慢来，不要心急，不要翘成下面的塑料支架，也别妄想从塑料支架上手（深刻的教训呜呜呜，塑料支架里面有螺丝固定）。翘的时候不要刀片朝屏幕方向刮翘，本人亲测会把屏幕边框刮掉色（血的教训呜呜呜！）&lt;/li&gt;
&lt;li&gt;如果觉得难拆就用翘片顶着刀片刮开松的地方，划过去，只要不刮到屏幕，使劲造，因为屏幕胶很厚，而且屏幕边底下是塑料支架，只要不要刮太深基本上刮不到里面的东西（指纹键除外，这个要注意不要把指纹键边上的玻璃搞断了）&lt;/li&gt;
&lt;li&gt;四个边都撬开就可以拿起屏幕了，到这里其实差不多了。但是因为要短接，屏幕挂着短接很麻烦，我的建议是可以把屏幕拆下来。
拧下三颗螺丝拆下挡着电池排线和屏幕排线的盖板，把屏幕排线断开拆屏幕就完成了！
由于拆机拆得太入迷了，所以只有拆完的图片doge&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(19).jpg&quot; alt=&quot;25&quot; /&gt;&lt;figcaption&gt;25&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(7).jpg&quot; alt=&quot;26&quot; /&gt;&lt;figcaption&gt;26&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;解锁BL&lt;a href=&quot;#解锁bl&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;先下载链接里面的工具&lt;/p&gt;&lt;p&gt;{% link 123PAN,刷机工具,&lt;a href=&quot;https://www.123684.com/s/mIXlVv-LEOB&quot; target=&quot;_blank&quot;&gt;https://www.123684.com/s/mIXlVv-LEOB&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;提取码&amp;lt;1234&amp;gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;先过开机向导&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开自带计算器输入()()2846579()() 进入工程菜单
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(3).jpg&quot; alt=&quot;08&quot; /&gt;&lt;figcaption&gt;08&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择 后台设置——usb端口设置——选择生产模式&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;安装华为的COM1.0驱动&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将设备关机，用镊子短接COM1.0刷机点和屏蔽罩，一边刷机点，一边屏蔽罩，然后插入数据线，具体短接点可以参考酷安@孙子烧烤 大佬给出的短接截图&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;设备管理器中出现COM1.0设备就是成功进入啦
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(28).jpg&quot; alt=&quot;09&quot; /&gt;&lt;figcaption&gt;09&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开PotatoNV ，Target device选择刚刚的端口，Bootloader选择Kirin 65X（A），勾引Disable Fblock（关闭工厂解锁，使用用户级解锁，这是因为华为将BL解锁划分成了工程解锁和用户解锁，工程解锁可以访问全部分区，用户级则是system啥的普通分区，不建议使用工程解锁，把其他分区搞坏了没备份修复很麻烦）
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(4).png&quot; alt=&quot;10&quot; /&gt;&lt;figcaption&gt;10&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择start开始解锁！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不一会就会解锁完成自动重启，软件也会显示解锁码，一定要妥善保存，升降EMUI有概率会自动锁上
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(2).png&quot; alt=&quot;11&quot; /&gt;&lt;figcaption&gt;11&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;解锁之后每次开机有提示是正常的，等五秒或者按电源键继续就行
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(11).jpg&quot; alt=&quot;12&quot; /&gt;&lt;figcaption&gt;12&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;至此，荣耀平板5的解锁BL就到这里了&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;刷入LineageOS GSI&lt;a href=&quot;#刷入lineageos-gsi&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;前期准备&lt;a href=&quot;#前期准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;平板和稳定的数据线&lt;/li&gt;
&lt;li&gt;基于Phh的类原生GSI。尽量不高于安卓12、13，高版本安卓比较卡顿，EMUI8选择Aonly分区的，EMUI9以后请选择A/B分区。（别问其他OEM GSI和SGSI能不能开机，答案是不能，原因应该是内核宽容）&lt;/li&gt;
&lt;li&gt;Magisk 24以上，类原生需要24以上&lt;/li&gt;
&lt;li&gt;麒麟盘古工具箱（可以前往酷安@某贼 大佬那下载）&lt;/li&gt;
&lt;li&gt;一双灵巧的手（刚刚都完成拆机了应该不会不巧了吧/doge）
准备好了让我们开始吧！&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;开始刷机&lt;a href=&quot;#开始刷机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;按住电源 + 音量上进入Fastboot 数据线链接电脑
解锁BL（这步前面搞完的可以直接跳过）,使用盘古工具箱解锁BL，平板有提示按音量上然后按电源键确认解锁。解锁了会自动重启格式化，格式化失败是正常滴，直接强制重启再次进Fastboot就行
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(13).jpg&quot; alt=&quot;13&quot; /&gt;&lt;figcaption&gt;13&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;使用盘古工具箱刷入奇兔通用REC
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(5).jpg&quot; alt=&quot;14&quot; /&gt;&lt;figcaption&gt;14&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;重启平板,到警告页面的时候长按电源+ 进入eREC
选择格式化，输入yes进入REC（由于华为设备系统分区的特殊性，双rec，这一步的目的是以格式化的名义欺骗eREC进入真正的rec，实际上并不会执行格式化命令）
-然后就进入奇兔rec啦！
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(14).jpg&quot; alt=&quot;15&quot; /&gt;&lt;figcaption&gt;15&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(15).jpg&quot; alt=&quot;16&quot; /&gt;&lt;figcaption&gt;16&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;选择清除，高级选项
勾选内置存储，Data，System，Cache，Dalvik/ART Cache。滑动清除分区
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(16).jpg&quot; alt=&quot;17&quot; /&gt;&lt;figcaption&gt;17&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;完事儿后，回到主页面，重启，重启到Bootloader
打开盘古工具箱，选择刷入自定义系统镜像，拖入下载的GSI，等待刷机完成
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(4).jpg&quot; alt=&quot;18&quot; /&gt;&lt;figcaption&gt;18&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;刷完后，重启等开机。Enjoy it! :)
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(12).jpg&quot; alt=&quot;19&quot; /&gt;&lt;figcaption&gt;19&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;刷入Magisk&lt;a href=&quot;#刷入magisk&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;注：由于GSI SAR分区的特殊性，刷入Magisk会丢失REC，原来REC的分区会被Magisk用来引导带Root的系统&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;从盘古工具箱提取出来奇兔rec镜像，和Magisk一起传进平板
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(1).png&quot; alt=&quot;20&quot; /&gt;&lt;figcaption&gt;20&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;平板安装Magisk，完成后打开&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击右边的安装——安装到rec-选择一个文件修补然后选择刚刚的奇兔镜像进行修补就行啦
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(10).jpg&quot; alt=&quot;21&quot; /&gt;&lt;figcaption&gt;21&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;等输出显示All Done！后，链接电脑把平板内置存储Download目录的修补镜像导出电脑&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;然后将平板进入Fastboot&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开盘古工具箱选择刷入自定义REC拖入刚刚的rec镜像路径，回车等待刷入完成
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/honorpad5%20(9).jpg&quot; alt=&quot;22&quot; /&gt;&lt;figcaption&gt;22&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;刷入完成后盘古工具箱选择重启&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;出现启动警告页面后长按三秒音量上键进入erec&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择格式化，输入yes，诱骗erec进入root后的系统&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开Magisk，如果有提示修补选重启修补就行
Magisk到这里就刷完啦！这篇教程也快到尾声啦，俺还是第一次写这么长的文章，如果有文笔不仔细的地方，请各位见谅！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>MacOS X 10.0 Developer Preview 3安装教程（附酥米的MacOS的小记说说）</title><link>https://www.sumi233.top/posts/tutorial/macos-x-dp3-qemu-install/</link><guid isPermaLink="true">https://www.sumi233.top/posts/tutorial/macos-x-dp3-qemu-install/</guid><description>MacOS X 10.0 Developer Preview 3安装教程（附酥米的MacOS的小记说说）</description><pubDate>Tue, 26 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h3&gt;前记&lt;a href=&quot;#前记&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在MacOS X之前的MacOS，是属于Classic系列的传统操作系统，由于历史包袱的原因，MacOS Classic对多任务的支持并不完善，采用的是基于程序的协作式多任务管理，把内存依托于应用程序分配，再且加上Classic中并没有所谓的内存保护，导致程序和系统处在同一内存空间中，这就导致一个问题，当程序发生崩溃时，整个系统也会随之崩溃。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(1).jpg&quot; alt=&quot;MacOS Classic&quot; /&gt;&lt;figcaption&gt;MacOS Classic&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Apple尝试过修复或者完善这些“烂摊子”，但是由于系统历史包袱原因，系统框架过于老旧。再是后期推出的的系统扩展，系统扩展由第三方或官方提供，可以扩展系统功能或者添加驱动，这就导致一个问题，因为Classic所有的应用扩展驱动系统都是在一个空间内，没有进行隔离，如果扩展冲突或者报错，机子将会连系统一起’宕机‘。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;转折&lt;a href=&quot;#转折&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;苹果也陆陆续续尝试过如copland和AU/X的全新内核的系统，但无一例外，都失败了。直到1997年，苹果收购NeXT公司，被遣退的乔布斯带着NeXTSTEP回到苹果掌舵，NeXTSTEP是乔布斯基于Mach和BSD研发的操作系统，具有完善的GUI，面向对象和Objective-C，强大的多媒体功能，这在当时是十分超前的的。苹果基于NeXTSTEP开发出了现MacOS X Darwin的前身XNU混合内核，之后在1997年中发布了Rhapsody预览开发版，这就是MacOS X的前身……&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(2).jpg&quot; alt=&quot;NeXTSTEP&quot; /&gt;&lt;figcaption&gt;NeXTSTEP&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;之后的事情大家都知道，Rhapsody的大部分组件大幅度得到保留并且逐步完善，并且一步步成为现在的MacOS系统。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;安装&lt;a href=&quot;#安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;好啦！酥米扯远了，接下来要体验的版本就是初代MacOS X10.0的预览版本DP3，说起这个预览版本还是很有趣的，DP1和DP2和Rhapsody差不多，用的也是Platinum的界面，还是NeXT+MacOS Classic的味道。但是来到DP3，事情将会截然不同起来，DP3引入了全新的Aqua界面，提升了系统的精致程度（顺带提一嘴，这个aqua界面修修补补用到现在的MacOS最新版）&lt;/p&gt;&lt;section&gt;&lt;h4&gt;Qemu&lt;a href=&quot;#qemu&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;这次我们使用Qemu-system-ppc进行模拟安装
镜像可以在WinWorldPC中下载
下载链接：&lt;/p&gt;&lt;p&gt;{% link WinWorldPC,镜像下载链接,&lt;a href=&quot;http://www.emaculation.com/forum/viewtopic.php?f=34&amp;amp;t=9028&quot; target=&quot;_blank&quot;&gt;http://www.emaculation.com/forum/viewtopic.php?f=34&amp;amp;t=9028&lt;/a&gt; %}&lt;/p&gt;&lt;p&gt;首先将qemu-system-pc解压在目录，然后编写一个Bat脚本用于启动qemu虚拟机&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;qemu-system-ppc.exe ^&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-L pc-bios ^&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-M g3beige ^&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-cpu G3 ^&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-m 512 ^&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-drive file=mac.img,format=raw,media=disk ^  ##虚拟磁盘地址，可以通过qemu-img创建，需8g以上&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-drive file=Mdp2.iso,format=raw,media=cdrom ^ ## 安装镜像地址&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-prom-env &quot;vga-ndrv?-true&quot; ^&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-prom-env &quot;boot-device=cd:9,\\:tbxi&quot; ^&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-usb ^&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-netdev user,id=network01 -device sungem,netdev=network01 ^&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-device VGA,edid=on ^&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-boot c&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;磁盘分区&lt;a href=&quot;#磁盘分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;由于DP版本没有磁盘管理工具，所以需要借助MacOS9的启动光盘进行分区,按照图中进行操作就行&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;打开磁盘分区工具&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/082c7e3d-a76a-44da-94b3-561fed6a306d933d5c1c097fe20b.png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/b3bede69-ba0e-4ab7-b395-6fca629d892d64f4b84c3853ac43.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;选中刚刚的虚拟磁盘，点击Initialize&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(5).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;再次选择Initialize&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/4d88753e-b7e5-4d36-b6d3-2dddf21b055d87520d3fb48e80d7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;至此磁盘的分区步骤全部完毕，接下来就是安装系统啦！&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;正式安装&lt;a href=&quot;#正式安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;将虚拟机关机，更换光盘镜像，再次启动虚拟机，等待开机……&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(13).png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/288631E8586752E8507D5DCC3B077CF7b3b611b98f705add.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;选择Continue继续&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(19).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;选择下一步并且Agree&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(16).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;然后选择硬盘下一步&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(3).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;然后按install进行安装&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(12).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;安装ing……&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/754908397BAF9C1028F57134BAA3C458600fdd045b1f72b8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;安装完成啦！不要让模拟器自动重启哦，直接关闭模拟器，进行下一步操作&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/55abc630-feb1-4a66-b2b4-b89de93c2a30fb098cd1894a107a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h4&gt;正式启动前的最后配置&lt;a href=&quot;#正式启动前的最后配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;将虚拟机启动脚本的下列稍加修改，让模拟器使用硬盘启动&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;修改前&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-boot c # 启动设备&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-prom-env &quot;boot-device=cd:9,\\:tbxi&quot; ^ # 指定启动设备&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;修改后&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-boot d #把c改成d，d为硬盘启动，c为从光盘启动&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 去掉了指定启动设备语句&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;再次打开模拟器，就可以慢慢等待模拟器启动啦！&lt;/li&gt;
&lt;li&gt;进系统啦！第一次安装完会弹出设置助理&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(21).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;点击右下角的箭头下一步&lt;/li&gt;
&lt;li&gt;这里输入管理员的密码，然后下一步&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(20).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;这里网络设置直接跳过，选择下一步&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(22).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;这里直接下一步&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(9).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;这里是DNS和域名设置，不设置直接下一步&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(18).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;这里是远程登录，可开可不开，选完直接下一步&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(2).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;地区设置&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(17).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;时间设置&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(4).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;用户设置，选择Add可以创建用户&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(11).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;自动登录，可以选择自动并且输入账户密码，可选可不选&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(15).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;设置预览，没有问题就可以选择go ahead继续啦&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(10).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;完成安装啦！&lt;a href=&quot;#完成安装啦&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;重启之后就可以享受新界面带来的赏心悦目了，Enjoy it! :)
附上一些系统截图&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/396F014F493B905FD9C40FFB95F1E9C242d67356d36b8391.png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(8).png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(1).png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/macosxdp%20(14).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;视频版&lt;a href=&quot;#视频版&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;本教程根据视频版编写&lt;a href=&quot;#本教程根据视频版编写&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt; &lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>酥米的碎碎念（1）</title><link>https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-1/</link><guid isPermaLink="true">https://www.sumi233.top/posts/mouthtalk/sumi-thoughts-1/</guid><description>酥米关于竞赛队的碎碎念</description><pubDate>Fri, 22 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h3&gt;前提&lt;a href=&quot;#前提&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;唉 ……最近好纠结啊，自从去年加入竞赛队以来，由于我的性格原因（不太喜欢一直呆在一个地方），感觉哪哪都不舒服，学习竞赛内容时也不太得劲，老是集中不到精力，因为我是在网搭竞赛队嘛，而且我是负责网络部分的，每当我看到满当的市赛题题目，会产生一种恐惧感，甚至之前我自己都没意识到这样的感觉，久而久之，想退队的感觉也越来越强烈，我不再把全部身心投入到竞赛，而是带了一种摆烂性质的态度在学习内容。&lt;/p&gt;&lt;p&gt;直到10月底，老师确定了具体的竞赛日期，是12.7-12.27左右竞赛，并且竞赛改革了，是三位同学一队去参加嘛（我被分到了二队），然后三个同学分工合作设计方案并且把方案实操出来。我本想和两位队友一起努力努力，市赛拿个三等奖啥的，然后我自己申请退队，回到教室学习。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;意外之外&lt;a href=&quot;#意外之外&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;没想到，才过了一周不到，老师就告诉我们，我们这个项目没有开市赛，而是得等明年的省赛，于是我原来的打算也破裂了。而且最近考了期中考试，我的三科语文英语还好，但是数学已经低的不能再低了，三科总分450，我加起来才210分左右，退步很明显，我意识到我不能再这么下去了，下一年3+证书考试如果考不好真的连公办大专都没得上了。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/173224034086565091be367247aa6.png&quot; alt=&quot;成绩图&quot; title=&quot;成绩图&quot; /&gt;&lt;figcaption&gt;成绩图&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;唉！我现在真的好纠结，是等明年的市赛，才是抽身退队回教室学习？或者说还有什么别的办法吗？&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>BGP详解</title><link>https://www.sumi233.top/posts/CCNP/bgp/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNP/bgp/</guid><description>BGP详解</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;BGP概述&lt;a href=&quot;#bgp概述&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;BGP为BorderGateway Protgcol边界网关路由协议(路径矢量)&lt;/li&gt;
&lt;li&gt;主要作用是在AS之间传递路由信息&lt;/li&gt;
&lt;li&gt;目前BGR有4个版本、V2、V4、V4+(即MBGP)&lt;/li&gt;
&lt;li&gt;企业连接到SP
&lt;ul&gt;
&lt;li&gt;连接到两家或是多家ISP，提供链路的可靠性，连接方式如下&lt;/li&gt;
&lt;li&gt;1.Single homed单宿&amp;lt;只连接到一家isp且没有冗余链路&amp;gt;&lt;/li&gt;
&lt;li&gt;2.Dualhomed双宿&amp;lt;只连接到一家isp&amp;gt;，使用两条链路来提供冗余&lt;/li&gt;
&lt;li&gt;3.Multihomed多宿&amp;lt;连接到多家isp&amp;gt;&lt;/li&gt;
&lt;li&gt;4.DualMultihomed双多宿&amp;lt;连接到多家isp&amp;gt;，同时使用两条链路&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;使用BGP的三大理由&lt;a href=&quot;#使用bgp的三大理由&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;大量路由需要承载，IGP只能容纳千条，而BGP可以容纳上万&lt;/li&gt;
&lt;li&gt;支撑MPLS/VPN的应用，传递客户VPN路由&lt;/li&gt;
&lt;li&gt;策略能力强，可以很好的实现路由决策与数据控制&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;IGP具有以下某些特性或者全部特性&lt;a href=&quot;#igp具有以下某些特性或者全部特性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;执行拓扑发现&lt;/li&gt;
&lt;li&gt;尽力完成快速收敛&lt;/li&gt;
&lt;li&gt;需要周期性的更新来确保路由选择信息的精准性&lt;/li&gt;
&lt;li&gt;受同一个管理机构的控制&lt;/li&gt;
&lt;li&gt;采取共同的路由选择策略&lt;/li&gt;
&lt;li&gt;提供了优先的策略控制能力&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;关于BGP&lt;a href=&quot;#关于bgp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;AS，指的是在同一个组织管理下使用相同策略的设备的集合&lt;/li&gt;
&lt;li&gt;不同AS通过AS号区分，AS号取值范围1-65535，其中64512-65535是私有AS号。IANA负责AS号的分发。&lt;/li&gt;
&lt;li&gt;中国电信163 AS号&amp;lt;4134&amp;gt;&lt;/li&gt;
&lt;li&gt;中国电信CN2 AS号&amp;lt;4809&amp;gt;&lt;/li&gt;
&lt;li&gt;中国网通 AS号&amp;lt;9929&amp;gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;BGP的矢量特征&lt;a href=&quot;#bgp的矢量特征&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/jpeg/44908083/1730806229082-7508981d-6da2-4ef1-a7a8-12d8b9d550a9.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;路径矢量信息中包含一个BGP自治系统列表&lt;/li&gt;
&lt;li&gt;BGP路由器不接受路径列表中包含其AS号的路由更新，是&lt;strong&gt;无环路&lt;/strong&gt;的&lt;/li&gt;
&lt;li&gt;BGP支持对BGP自治系统路径应用路由策略&lt;/li&gt;
&lt;li&gt;BGP路由器只能将其使用的路由通告给邻接自治系统中的对等体&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;BGP特征&lt;a href=&quot;#bgp特征&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;BGP使用TCP为输出层协议，TCP端口号为179&lt;/li&gt;
&lt;li&gt;BGP路由器之间建立TCP连接，这些路由器称为BGP对等体也叫BGP邻居：&lt;strong&gt;EBGP、IBGP&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;对等体之间交换整个BGP路由表&lt;/li&gt;
&lt;li&gt;BGP路由器只发送增量更新或者触发更新（不会周期性更新）&lt;/li&gt;
&lt;li&gt;具有丰富的路径属性&lt;/li&gt;
&lt;li&gt;BGP通告成千上万的路由，可采用TCP滑动窗口的机制，停止并等待确认前，可以发送65576个字节&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;BGP packets&lt;a href=&quot;#bgp-packets&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730807035348-b0a84008-40e6-4ca5-b299-e9f24f59896e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;报文类型&lt;a href=&quot;#报文类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;报文名称&lt;/th&gt;&lt;th&gt;作用是什么&lt;/th&gt;&lt;th&gt;什么时候发包&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;OPEN&lt;/td&gt;&lt;td&gt;协商BGP邻居的各项参数，建立邻居关系&lt;/td&gt;&lt;td&gt;通过TCP建立BGP连接，发送open报文&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;UPDATE&lt;/td&gt;&lt;td&gt;进行路由信息的交换&lt;/td&gt;&lt;td&gt;连接建立后，有路由需要发送或路由变化时，发送UPDATE通告对端路由信息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;NOTIFICATION&lt;/td&gt;&lt;td&gt;报告错误，终止邻居关系&lt;/td&gt;&lt;td&gt;当BGP在运行时发现错误时，要发送NOTIFICATION报文通报BGP对端&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;KEEPALIVE&lt;/td&gt;&lt;td&gt;维持邻居关系&lt;/td&gt;&lt;td&gt;定时发送KEEPALIVE报文以保持BGP邻居关系的有效性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Route-refresh&lt;/td&gt;&lt;td&gt;为保证网络稳定，触发更新路由的机制&lt;/td&gt;&lt;td&gt;当路由策略发生变化时，触发请求邻居重新通告路由&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;BGP的有限状态机&lt;a href=&quot;#bgp的有限状态机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Peer状态名称&lt;/th&gt;&lt;th&gt;发什么包&lt;/th&gt;&lt;th&gt;在做什么&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Idle&lt;/td&gt;&lt;td&gt;尝试建立TCP连接&lt;/td&gt;&lt;td&gt;准备开始TCP的连接并监视远程peer启动TCP连接，启用BGP时，要准备足够的资源&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Connect&lt;/td&gt;&lt;td&gt;发TCP包&lt;/td&gt;&lt;td&gt;正在进行TCP连接，等待完成中，认证都在TCP建立期间完成的。如果TCP连接不上则进入Active状态，反复尝试连接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Active&lt;/td&gt;&lt;td&gt;发TCP包&lt;/td&gt;&lt;td&gt;TCP连接没建立成功，反复尝试TCP连接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;OpenSent&lt;/td&gt;&lt;td&gt;发Open包&lt;/td&gt;&lt;td&gt;TCP连接建立已经成功，开始发送Open包，Open包携带参数协商对等体的建立&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;OpenConfim&lt;/td&gt;&lt;td&gt;发Keepalive包&lt;/td&gt;&lt;td&gt;参数、能力特性协商成功，开始自己发送Keepalive包&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Established&lt;/td&gt;&lt;td&gt;发Update包&lt;/td&gt;&lt;td&gt;已经收到对方的Keepalive包，双方能力特性一致，开始使用Update通告路由信息&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;BGP Peer&lt;a href=&quot;#bgp-peer&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730809493082-98e0e6ca-f4f0-4d60-921c-277b67c3c35c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;运行BGP的路由器被称为BGP speaker&lt;/li&gt;
&lt;li&gt;BGP对等体也叫BGP邻居，建立基于TCP的关系&lt;/li&gt;
&lt;li&gt;EBGP：BGP位于不同自治相同的路由器之间，称为EBGP&lt;/li&gt;
&lt;li&gt;建立EBGP邻接关系，必须满足三个条件
&lt;ul&gt;
&lt;li&gt;EBGP之间自治系统号不同&lt;/li&gt;
&lt;li&gt;定义邻居建立TCP会话&lt;/li&gt;
&lt;li&gt;neighbor中指定的IP地址要可达&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;中转AS中的IBGP路由传递&lt;a href=&quot;#中转as中的ibgp路由传递&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730892076962-e019b9cc-49c5-4659-b378-ac6690db7cfa.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;全互联IBGP邻居关系&lt;a href=&quot;#全互联ibgp邻居关系&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;IBGP全互联虽然能解决transit AS内的路由黑洞问题，但是却造成BGP路由器需要耗费大量资源维护大量BGP连接的新问题
&lt;ul&gt;
&lt;li&gt;路由反射器&lt;/li&gt;
&lt;li&gt;联邦&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;IBGP水平分割原则&lt;a href=&quot;#ibgp水平分割原则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730892484804-5d4f1364-9a3c-4165-bd3e-40e75f989e0c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;BGP防环是通过AS_PATH实现的，而AS_PATH仅仅实在路由离开后AS才会被更改，因此再AS内，IBGP就没有EBGP的防环能力，为了防止环路的出现，BGP路由器不会将从IBGP邻居学习过来的路由再通告给自己其他IBGP邻居&lt;/li&gt;
&lt;li&gt;由于水平分割原则存在，BGP要求AS内，需保证IBGP全互联（neighbor命令 指定）&lt;/li&gt;
&lt;li&gt;（根本原因是在AS内部，AS_PATH不会改变，无法使用AS_PATH防环，因此很容易出现环路）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;BGP路由通告规则&lt;a href=&quot;#bgp路由通告规则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;当存在多条路径时，BGP router只选取最优的路由（BEST）来使用（没有负载的情况下）&lt;/li&gt;
&lt;li&gt;BGP只把自己使用的路由，也就是自己认为Best的路由传递给BGP Peer&lt;/li&gt;
&lt;li&gt;BGP Speaker从EBGP获得的路由会向它所有的BGP相邻体通告（包括EBGP和IBGP）&lt;/li&gt;
&lt;li&gt;BGP Speaker从IBGP获得的路由不向它的IBGP相邻体通告（避免循环，水平分割；存在路由RR的情况下除外）&lt;/li&gt;
&lt;li&gt;BGP Speaker从IBGP获得的路由是否通告给它的EBGP Peer要视IGP和BGP同步的情况来决定&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;BGP同步&lt;a href=&quot;#bgp同步&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;BGP同步规则指出，BGP路由器不应使用通过IBGP获悉的路由或将其通告给外部邻居，除非该路由是本地或者通过IGP获悉的&lt;/li&gt;
&lt;li&gt;思科Cisco IOS默认关闭同步&lt;/li&gt;
&lt;li&gt;同步关闭，则BGP可以将使用这样的路由，并将其通告给外部BGP邻居：从IBGP邻居那里获悉的且没有出现在本地路由表中的路由&lt;/li&gt;
&lt;li&gt;同步开启，则路由器通过IBGP获悉路由后，将等待IGP将该路由传遍整个自治系统，然后再将其通告给外部对等体&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Tables&lt;a href=&quot;#tables&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;BGP邻居表：邻居列表&lt;/li&gt;
&lt;li&gt;BGP表：包含了从邻居学习的所有路由，以及到达目的网段的多个路径和属性&lt;/li&gt;
&lt;li&gt;路由表：列出了到达目的网段的最佳路径，EBGP路由AD为20，IBGP路由AD为200&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Next-Hop&lt;a href=&quot;#next-hop&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;BGP是AS·by-AS的路由协议，而不是router-by-router的路由协议&lt;/li&gt;
&lt;li&gt;在BGP中，next-hop并不意味着是下一台路由器，而是到达下一个AS的IP地址&lt;/li&gt;
&lt;li&gt;EBGP中，默认next-hop为发送更新的邻居路由器的IP地址&lt;/li&gt;
&lt;li&gt;IBGP中，从EBGP传来的next-hop属性在IBGP中保持不变的被传递&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;修改next-hop&lt;a href=&quot;#修改next-hop&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;为了防止路由黑洞问题，R1、R2、R3建立IBGP全互联且均用各自的LOOPBACK接口建立IBGP关系&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;配置BGP&lt;a href=&quot;#配置bgp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;**Router(config)# router bgp** _autonomous-system_&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;仅仅执行router bgp不能再路由器上激活BGP，必须执行至少一个子命令才能再路由器激活BGP进程&lt;/li&gt;
&lt;li&gt;在路由器上职能配置一个BGP实例&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;指定BGP邻居及激活BGP会话&lt;a href=&quot;#指定bgp邻居及激活bgp会话&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Router(config-router)# neighbor {ip-address | peer-group-name } remote-as autonomous-system&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;邻居指定的ip地址必须路由可达&lt;/li&gt;
&lt;li&gt;BGP路由都需手工指定，不能像IGP那样通过协议自动发现&lt;/li&gt;
&lt;li&gt;AS决定与邻居建立的是EBGP还是IBGP会话&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;指定BGP将通告的网络&lt;a href=&quot;#指定bgp将通告的网络&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Router(config-router)#network network-number [mask network-mask] [route-map map-tag]&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;network命今与IGP不同，BGP命令network为通告哪些IP路由进BGP进程，而不是在接口上启用BGP&lt;/li&gt;
&lt;li&gt;network支持无类前缀，前缀必须与路由表中的条目完全匹配&lt;/li&gt;
&lt;li&gt;如果不指定mask，只通告主类网络号，而且仅当主类网络中至少有一个子网出现在IP路由表中，BGP才会将该主类网络作为一条BGP路由通告&lt;/li&gt;
&lt;li&gt;指定了mask，则仅当路由选择表中有与该网络完全匹配的条目时才被通告出去&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;BGP同步&lt;a href=&quot;#bgp同步-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Router(config-router)# no synchronization&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;关闭同步(默认关闭)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;Router(config-router)# synchronization&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;开启同步&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;BGP router-id&lt;a href=&quot;#bgp-router-id&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Router(config-router)# bgp router-id x.x.x.x&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;手工设置BGP routerlD&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;示例1&lt;a href=&quot;#示例1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730894784939-f4d16b2c-c930-4ab1-a48c-c47743e91c9d.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;指定更新源&lt;a href=&quot;#指定更新源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730894818299-aa7e1866-0994-4faa-88c4-156f792c9c65.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;BGP身份验证&lt;a href=&quot;#bgp身份验证&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Router(config-router)# neighbor {ip-address | peer-group-name} password string&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;BGP支持MD5邻居身份验证&lt;/li&gt;
&lt;li&gt;启用身份验证后，将对通过的对等体之间的TCP连接传输所有的数据等进行验证&lt;/li&gt;
&lt;li&gt;认证都是在TCP建立连接的时候完成的&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;维护BGP&lt;a href=&quot;#维护bgp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;重置BGP会话&lt;/li&gt;
&lt;li&gt;将新策略应用于所有路由，必须触发一个更新&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;三种触发更新的方式&lt;a href=&quot;#三种触发更新的方式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;硬重置&lt;/li&gt;
&lt;li&gt;软重置&lt;/li&gt;
&lt;li&gt;路由刷新&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;硬重置&lt;a href=&quot;#硬重置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;断开相应TCP连接，通过这些会话收到的所有信息都将失效，并从BGP中删除&lt;/li&gt;
&lt;li&gt;（不建议优先使用硬路由，谨慎！这将删除数据，请三思而后行！！！！）
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;clear ip bgp {neighbor-address}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;clear ip bgp *&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;软重置&lt;a href=&quot;#软重置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;不拆除并重建TCP或者BGP连接，而是仅出发更新操作以便让新的路由策略生效&lt;/li&gt;
&lt;li&gt;软重置可以仅由于出站或入站策略，也可同时用于出入站策略&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h4&gt;出站软重置&lt;a href=&quot;#出站软重置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;不会拆除TCP连接，不会重置BGP会话，仅促发更新操作以便让新的路由策略生效（发送update消息）&lt;/li&gt;
&lt;li&gt;需要修改出站策略时，建议使用该命令&lt;/li&gt;
&lt;li&gt;&lt;code&gt;clear ip bgp soft out&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;入站软重置&lt;a href=&quot;#入站软重置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;本地发送route-refresh给所有的BGP邻居&lt;/li&gt;
&lt;li&gt;&lt;code&gt;clear ip bgp soft in&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;注：CISCOIOS 12.1开始全面支持入站路由的动态软重配置，但在之前的版本在使用入站软重配置之前必须首先在BGP进程中增加如下配置 x.x.x.x soft-reconfiguration inbound然后再使用clear ip bgp soft in命令这条命令会将x.x.x.x邻居发送过来的BGP路由存储在内存中，当配置入站软重置后，路由器不再向邻居发送更新请求，而是直接在内存中存储的路由中执行新配置的入站策略，以此来防止触发大批量的路由更新而造成资源的浪费，但是这种操作仍会耗费内存，因此在使用的时候要非常慎重。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;BGP属性&lt;a href=&quot;#bgp属性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;公认属性&lt;br /&gt;（Well-known）&lt;/th&gt;&lt;th&gt;公认必遵&lt;br /&gt;（Well-known mandatory）&lt;/th&gt;&lt;th&gt;BGP 必须都能识别，且在更新消息必须包含&lt;/th&gt;&lt;th&gt;Origin&lt;br /&gt;AS-Path&lt;br /&gt;Next hop&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;公认自决&lt;br /&gt;（Well-known discretionary）&lt;/td&gt;&lt;td&gt;BGP 必须都能识别，更新消息可包含可不包含&lt;/td&gt;&lt;td&gt;Local-Preference&lt;br /&gt;ATOMIC_Aggregate&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;可选属性&lt;br /&gt;（Optional）&lt;/td&gt;&lt;td&gt;可选传递&lt;br /&gt;（Optional transitive）&lt;/td&gt;&lt;td&gt;可以不支持该属性，但即使不支持也应当接受包含该属性的路由并传递给其他邻居&lt;/td&gt;&lt;td&gt;Community&lt;br /&gt;Aggregator&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;可选非传递&lt;br /&gt;（Opinional non-transitive）&lt;/td&gt;&lt;td&gt;可以不支持该属性，不识别的BGP进程可以忽略包含这个属性的更新消息，并且不传递给其他BGP邻居&lt;/td&gt;&lt;td&gt;MED&lt;br /&gt;Originator_ID&lt;br /&gt;Cluster_list&lt;br /&gt;*Weight&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;WEIGHT&lt;a href=&quot;#weight&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;在路由器本地配置，只提供本地路由策略，不会传播给任何BGP邻居&lt;/li&gt;
&lt;li&gt;范围：0~65535；越大越优先&lt;/li&gt;
&lt;li&gt;路由器本地始发的路径默认权重是32768，从其他BGP邻居学到的为0&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731410361179-24230caa-4101-4214-b7b2-e36684c17565.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;LOCAL PREFERENCE&lt;a href=&quot;#local-preference&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;公认自由决定属性&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;告诉AS中的路由器，哪条路径是离开AS的首选路径&lt;/li&gt;
&lt;li&gt;LP越高路径越优&lt;/li&gt;
&lt;li&gt;只发送给IBGP邻居，而不能传给EBGP邻居&lt;/li&gt;
&lt;li&gt;默认本地优先级为100&lt;/li&gt;
&lt;li&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731410490396-d8420a3c-2906-416b-944d-863e909fac07.png&quot; alt=&quot;&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;AS-Path（公认强制属性）&lt;a href=&quot;#as-path公认强制属性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;是前往目标网络的路由经过的自治系统号列表，通告该路由的自治系统号位于列表末尾&lt;/li&gt;
&lt;li&gt;作用：确认无环，通告时给EBGP时会加上自己的AS号；通告给IBGP时不修改AS-Path&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731410691990-01881309-1058-46d1-a075-114e2b239fd1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;四种类型&lt;a href=&quot;#四种类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731411052266-03328819-94f7-4586-8077-d5e506eee364.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AS_SET&lt;/strong&gt;：一个去往特定目的地所经路径上的无序AS列表&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS_SEQENCE&lt;/strong&gt;：一个有序的AS号列表&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS_CONFED_SEQUENCE&lt;/strong&gt;：一个去往特地目的地所经路径上的有序AS号列表，其用法与AS_SEQENCE完全一样，区别于该列表的AS号属于本地联邦中的AS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS_CONFED_SET&lt;/strong&gt;：一个去往特定目的地上的无序AS号列表，其用法与AS_SET一样，区别在于列表中的AS号属于本地联邦中的AA&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Origin（公认强制属性）&lt;a href=&quot;#origin公认强制属性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;标识路由的起源，有下列三种可能：
&lt;ul&gt;
&lt;li&gt;i	通过BGP network，也就是起源于IGP，因为BGP network必须保证该网络在路由表中&lt;/li&gt;
&lt;li&gt;e	是由EGP这种早期协议重发布而来&lt;/li&gt;
&lt;li&gt;？	Incomplete，从其他渠道学习到的，路由来源不完全（确认该路由来源的信息不完全）。（重发布的路由）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;路由优选顺序：lowest origin code（IGP&amp;gt;EGP&amp;gt;Incomplete）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;MED（可选非传递属性）&lt;a href=&quot;#med可选非传递属性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731411803897-0b6bf6f9-e658-48a4-a306-7a8d455526f8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;是一种度量值，用于外部邻居指出进入AS的首选路径，即当入口有多个时，自治系统可以使用MED动态的影响其他AS如何选择进入路径&lt;/li&gt;
&lt;li&gt;度量值越小路径越优&lt;/li&gt;
&lt;li&gt;MED是在AS之间切换，MED发送给EBGP对等体。这些路由器在AS内传播MED，不传递给下一个AS&lt;/li&gt;
&lt;li&gt;默认情况下，仅当路径来自同一个AS中的不同EBGP邻居时，路由器才比较他们的MED属性&lt;/li&gt;
&lt;li&gt;MED影响进入AS的数据流&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;比较原则及配置注意事项&lt;a href=&quot;#比较原则及配置注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;本地在将一条BGP路由通告给EBGP Peer时，是否携带MED值,需要根据以下条件进行判断(不对EBGP Peer使用Route-map的情况下)
&lt;ul&gt;
&lt;li&gt;如果该BGP路由是本地始发(network或redistribute)的,则携带MED值发送给EBGP Peer(如果MED为空,则设置为0)&lt;/li&gt;
&lt;li&gt;如果该BGP路由是从其他BGP Peer学习过来的，那么将该路由通告给EBGPPeer时不携带MED&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;本地在将一条BGP路由通告给IBGPPeer时，一定会携带MED值
&lt;ul&gt;
&lt;li&gt;如果接收或产生的路由的MED为空,那么在向IBGP Peer通告时,将MED设置为0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;总结1、2两点就是MED在IBGP之间传递没有问题(不会丢失)，但是在EBGP之间传递要看路由是否起源于自己。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;NEXT_HOP（公认强制属性）2&lt;a href=&quot;#next_hop公认强制属性2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;如果路由传递自EBGP peer&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731412077866-bf31be10-26e7-4487-8738-b72ccc505e38.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;如果路由传递自IBGP邻居，并描述的是AS外的目的地&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731412193230-54295d0a-b300-4fea-bf2b-203de0f4a3e0.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;如果路由传递自IBGP邻居，并由AS内BGP路由器引入&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731412344784-f2e1be11-a76c-4738-9ecf-dc9a4e8884c9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;Tips：如果IBGP peer使用network或重发布的方式引入IGP路由，那么通告者将使用这些路由的IGP下一跳作为NH；如果这些路由是该IBGP peer配置的BGP汇总路由，则NH为其更新源IP。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;On Shared Media&lt;a href=&quot;#on-shared-media&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731413016975-73d4cf2b-a590-4d19-a73b-aeef941be1d8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;RouterB将路由100.100.100.0/24传递给A，NEXT_HOP为10.1.123.2&lt;/li&gt;
&lt;li&gt;RouterA将路由100.100.100.0/24传递给C，此时NEXT_HOP保持不变&lt;/li&gt;
&lt;li&gt;如果路由器收到某条BGP路由，该路由的NEXT_HOP地址值与EBGP邻居(更新对象)同属一个网段，那么该条路由的NEXTHOP地址将保持不变并传递给它的BGP邻居&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;On NBMA&lt;a href=&quot;#on-nbma&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731413248307-5df17964-315e-4c31-8d2b-5b159d9bcf53.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;如果中间的多路访问不是Ethernet，而是帧中继（NBMA）呢？&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;COMMUNITY&lt;a href=&quot;#community&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731458979252-74a8f3c5-cb61-494c-8820-44d1f21f23cf.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;可选传递属性&lt;/li&gt;
&lt;li&gt;一种标记，用于简化路由策略的执行&lt;/li&gt;
&lt;li&gt;可以将某些路由分配一个特定的COMMUNITY属性，之后就可以基于COMMUNITY值而不是每条路由进行BGP属性的设置了&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731460387790-d039cfe4-b94c-44ce-a4f2-0d89f944d64a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;几个众所周知的值&lt;a href=&quot;#几个众所周知的值&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map test permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;set community ?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;1-4294967295&amp;gt;  community number&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;aa:nn            community number in aa:nn format&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;additive        Add to the existing community&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;internet        Internet (well-known community)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;local-AS        Do not send outside local AS (well-known community)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;no-advertise    Do not advertise to any peer (well-known community)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;no-export        Do not export to next AS (well-known community)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;none            No community attribute&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Route&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Community=no-adv&lt;/p&gt;&lt;p&gt;R2不会将该路由再通告给任何BGP peer&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731460836560-e5a0cea7-a8fa-4bd1-a0d9-bbefda45b523.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Atomi_Aggregate及aggregator&lt;a href=&quot;#atomi_aggregate及aggregator&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;172.16.0.0/16&lt;/p&gt;&lt;p&gt;汇总路由丢失明确路由的路径属性&lt;/p&gt;&lt;p&gt;需要给下游邻居告警，并提示“汇总点”及汇总地AS&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/jpeg/44908083/1731461244712-db15a1db-b381-40ae-8c8e-83d80a966bf6.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;aggregate-address 172.16.0.0 255.255.0.0 summary-only&lt;/code&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R4# show ip bgp 172.16.0.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;BGP routing table entry for 172.16.0.0/16, version 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Paths:(1 available, best #1, table Default-lP-Routing-Table)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Flag:0x820&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Not advertised to any peer&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;300,(aggregated by 300 3.3.3.3)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;10.1.34.3 from 10.1.34.3 (3.3.3.3)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Origin lGP, metric 0, localpref 100, valid, external,atomic-aggregate, best&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;报文案例&lt;a href=&quot;#报文案例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731461667500-f2c080c5-fc71-4b5c-984c-22dcd23c405a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;BGP自动汇总&lt;a href=&quot;#bgp自动汇总&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1731461782082-4df50a90-5604-4b26-93cd-52ae719c6130.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;若R1开启auto-summary，并用重发布直连的方式引入1.1.1.0/24，则该子网会被汇总&lt;/li&gt;
&lt;li&gt;若R1开启auto-summary,且network1.1.1.0 mask 255.255.255.0，则仍以明细更新&lt;/li&gt;
&lt;li&gt;若R1开启auto-summary,且network1.0.0.0 mask 255.0.0.0,则该子网会被汇总&lt;/li&gt;
&lt;li&gt;上面这条network等同于network 1.0.0.0(network的有类宣告)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;因此BGP自动汇总(auto-summary)只汇总重发布引入的路由，以及使用network命令有类宣告方式引入的路由。目前CISCO IOS默认关闭自动汇总。&lt;/strong&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;BGP手动汇总&lt;a href=&quot;#bgp手动汇总&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733121752791-989f633a-4d0d-48dd-ac50-8335ac3782e9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;可以考虑在R3上创建静态的汇总路由&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;ip route 172.16.0.0 255.255.0.0 null0&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;然后再将汇总路由network进BGP&lt;/li&gt;
&lt;li&gt;不推荐此方法&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;针对特定邻居取消抑制&lt;a href=&quot;#针对特定邻居取消抑制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733121996017-8e7e4481-a185-40b9-85c2-3742644693c5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;access-ist 1 permit 172.16.1.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map unsupp permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match ip address 11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router bgp 300&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.35.5 unsuppress-map unsupp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;aggregate-address 172.16.0.0 255.255.0.0 as-set summary-only&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;advertise-map&lt;a href=&quot;#advertise-map&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733122218668-609b391f-86ce-4a69-9cd4-22e981484fd5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip prefix-list list1 permit 172.16.1.0/24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip prefix-list list1 permit 172.16.2.0/24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map adv permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match ip address prefix-list list1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;aggregate-address 172.16.0.0 255.255.0.0 summary-only as-set advertise-map adv&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;attrubute-map&lt;a href=&quot;#attrubute-map&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733122395149-ba69abf1-caa8-4996-a318-f50e5741822e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map attr permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set ?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;aggregate-address 172.16.0.0 255.255.0.0 summary-only as-set attribute-map attr&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;终方案&lt;a href=&quot;#终方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733122474434-007e0670-c4db-4dd8-9b54-e9c5ded166c2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;aggregate-address 172.16.0.0 255.255.0.0 summary-only as-set&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733122543075-6fe96b97-2d36-4b13-9bd8-ec7c21098471.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;access-list 1 permit 172.16.2.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;access-list 1 permit 172.16.11.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map suppmap permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match ip address 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;aggregate-address 172.16.0.0 255.255.0.0 suppress-map suppmap&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;正则表达式&lt;a href=&quot;#正则表达式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;正则表达式（regular expresion）是按照一定的模板来匹配字符串的公式。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733122792066-d45f8c40-28be-44fc-9ef2-fe1d61632c39.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;原子字符&lt;a href=&quot;#原子字符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733122829384-9067e136-8d1b-4941-a29a-d059b397d1ce.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h4&gt;示例&lt;a href=&quot;#示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733122859463-f2706ecb-995d-434a-adcd-fb3603038c63.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;乘法字符&lt;a href=&quot;#乘法字符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733122918646-e2bfab69-bfb0-4d20-99e2-2e598f14cf10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h4&gt;示例&lt;a href=&quot;#示例-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733122964843-3d32c0ca-e4f3-4de0-9ec0-3260d8a107af.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;一个乘法字符可以应用于一个单字符或多个字符，如果用于多字符，需将字符串放入（ ）中&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;范围字符&lt;a href=&quot;#范围字符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733122937086-5335bee7-7d2d-4911-b02c-c4bd1c6cdc3a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h4&gt;示例&lt;a href=&quot;#示例-2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733123043302-ae7c2612-b283-4ed8-be08-c8ed67973230.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;使用正则表达式匹配AS_PATH&lt;a href=&quot;#使用正则表达式匹配as_path&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733123094575-e9208cd3-efbf-46e1-92d6-728495dcb98d.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;AS_PATH可以当作字符串并使用正则表达式进行匹配&lt;/li&gt;
&lt;li&gt;String中的 ”__” 为空格，这也是一个字符，也有可能被匹配&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h4&gt;示例&lt;a href=&quot;#示例-3&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733123298715-383afd98-b548-4353-bc46-54d9ee5187f6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;注意as-path access-list也是默认含隐拒绝所有&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;使用as-path access-list 匹配路由&lt;a href=&quot;#使用as-path-access-list-匹配路由&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733123415356-86bd5433-a930-4f66-a9a1-7d144b63fec7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h4&gt;示例1 搭配filter-list&lt;a href=&quot;#示例1-搭配filter-list&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733123497581-877d75ef-a72f-4ab8-aa0a-e4a792edcf90.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;在R3上可做策略&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip as-path access-ist 1deny _600$&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip as-path access-list 1 permit .*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router bgp 300&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.23.2 filter-list 1 in&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;示例2 搭配route-map&lt;a href=&quot;#示例2-搭配route-map&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733123628617-406b7486-d886-41d5-9ed5-115603b2032f.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;R3可做策略&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip as-path access-ist 1 permit _600$&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map setCommu permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match as-path 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set community no-advertise&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map setCommu permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router bgp 300&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.23.2 route-map setcommu in&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;配置命令&lt;a href=&quot;#配置命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Router(config)# ip as-path access-list num {permit|deny} regexp&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;配置as-path access-list&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;Router(config-router)# neighbor x.x.x.x filter-list as-path-filter {inlout}&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;关联as-path access-list到filter-list，起到路由过滤作用&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h4&gt;验证及查看&lt;a href=&quot;#验证及查看&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;code&gt;Router# show ip as-path-access-list&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;查看配置的 as-path access-list&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;Router# show ip bgp regexp xx&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;显示BGP表中所有被该正则表达式匹配上的路由，这是一个非常不错的工具&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;Router# show ip bgp filter-list access-list-num&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;显示BGP表中所有被该filter-list匹配的路由&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;通告community操控路由&lt;a href=&quot;#通告community操控路由&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;BGP Communities&lt;a href=&quot;#bgp-communities&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;BGP communities是一种路由标记方法，用于确保路由过滤和选择的连续性&lt;/li&gt;
&lt;li&gt;可选传递属性，不支持该属性的BGP router原封不动的将community值传递给下游BGP邻居&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Community&lt;a href=&quot;#community-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733124090787-e2d027b9-f95b-466a-b5e8-86d7bdb3805c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;使用全局配置命令切换：&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;ip bgp-community new-format&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;BGP路径操纵&lt;a href=&quot;#bgp路径操纵&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;设置Community&lt;a href=&quot;#设置community&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map test permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;set community ?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;1-4294967295&amp;gt;    community number&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;aa:nn              community number in aa:nn format&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;additive          Add to the existing community&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;internet          Internet(well-known community)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;local-AS          Do not send outside local AS (well-known community)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;no-advertise      Do not advertise to any peer (well-known community)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;no-export          Do not export to next AS (well-known community)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;none              No community attribute&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;总所周知的值&lt;a href=&quot;#总所周知的值&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733124385448-cf61fcfb-a43e-4fb0-b8af-97b8e047e12d.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Route&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Community=local-as&lt;/li&gt;
&lt;li&gt;该路由只能在本AS内传递（如果定义了联邦，则为只在联邦成员AS传递）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;为路由前缀分配Community&lt;a href=&quot;#为路由前缀分配community&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733124481538-4caea059-33d5-4c50-89d2-305d5b25bf67.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;R1配置如下：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip prefix-ist 11 permit 11.11.11.0/24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map test permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match ip address prefix-list 11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set community 100:11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router bgp 100&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;network 11.11.11.0 mask 255.255.255.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.12.2 remote-as 200&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.12.2 send-community&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.12.2 route-map test out&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;为路由前缀分配多个Community&lt;a href=&quot;#为路由前缀分配多个community&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733124672973-08971d75-7687-4f0c-a733-782014d85b5c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;R2的配置如下：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip community-ist 11 permit 100:11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map test permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match community 11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set community no-export additive&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router bgp 200&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.12.1 remote-as 100&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.23.3 remote-as 300&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.23.3 send-community&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.23.3 route-map test out&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;为路由前缀分配多个Community（cont.）&lt;a href=&quot;#为路由前缀分配多个communitycont&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733124846029-37b26bce-3e5b-41e6-949a-f6f5eca0889c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;R3上查看11.11.11.0的BGP路由：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R3#sh ip b 11.11.11.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;BGP routing table entry for 11.11.11.0/24,version 5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Paths:(1 available, best #1, table Default-P-Routing-Table, not advertised&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;to EBGP peer)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Flag:0x820&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Not advertised to any peer&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;200 100&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;10.1.23.2 from 10.1.23.2 10.1.23.2)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Origin lGP, localpref 100, valid, external, best&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Community:100:11 no-export&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;用community-list匹配团体属性&lt;a href=&quot;#用community-list匹配团体属性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733124981265-f03cbe06-2d35-4141-82f4-4bc934728879.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;lp community-list 1 permit 100:11&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;匹配。匹配community中包含100&amp;lt;11的路由&amp;gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;lp community-list 1 permit 100:11 no-adv&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;不匹配。要求100&amp;lt;11及no-adv两者都有才匹配成立&amp;gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;lp community-list 1 permit 100:11&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;Ip community-list 1 permit no-export(或将no-export换成no-adv)&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;匹配。只要community中包含100&amp;lt;11或no-export&amp;gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;用community-list匹配团体属性（cont.）&lt;a href=&quot;#用community-list匹配团体属性cont&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733125149714-85e3e77c-fab0-4cb2-aae7-d89f093f56c3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;ip community-list 12 permit internet&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;所有路由默认都属于internet&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;用community-list匹配团体属性 严格匹配&lt;a href=&quot;#用community-list匹配团体属性-严格匹配&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733125250291-e5171d9b-624d-4446-b988-3117e17dd97d.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;lp community-list 11 permit no-export&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map test permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;match community 11 exact-match    // 严格匹配&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;严格匹配community属性为no-export的路由，多一点，少一点都不行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Show lp community-ist 1 [exact-match]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;查看community-list 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;删除某个或多个community值&lt;a href=&quot;#删除某个或多个community值&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733125335491-71efe10e-6c26-4e45-afe6-6f30821e8c97.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;一条路由，允许携带多个community值，构成一个community列表，那么如何删除某个或者某几个community值?譬如只想删除11路由的no-export属性&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip community-list standard del permit no-export    // 匹配要删除的commu值&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map test permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set comm-list del delete    // 用这条命令删除&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;删除多个community值&lt;a href=&quot;#删除多个community值&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733125474298-a0ab0f1a-bc22-46f8-bce2-e8fcd77cebf0.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip community-list standard del permit no-export    // 用多行community-list&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip community-list standard del permit 100:11    // 用多行community-list&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map test permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set comm-list del delete&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;配置community-list&lt;a href=&quot;#配置community-list&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;lp community-list 1-99 permit|deny value [value...]&lt;/code&gt;&lt;/p&gt;&lt;p&gt;定义标准的community-list，使用internet关键字匹配任何community&lt;/p&gt;&lt;p&gt;&lt;code&gt;lp community-list 100-199 permit|deny regexp&lt;/code&gt;&lt;/p&gt;&lt;p&gt;定义扩展的community-list，可使用正则表达式匹配community&lt;/p&gt;&lt;p&gt;&lt;code&gt;show ip community-list&lt;/code&gt;&lt;/p&gt;&lt;p&gt;查看配置的community-list&lt;/p&gt;&lt;p&gt;&lt;code&gt;show ip bgp x.x.x.x&lt;/code&gt;&lt;/p&gt;&lt;p&gt;查看BGP路由的详细信息，包括community&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Prefix-list&lt;a href=&quot;#prefix-list&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;配置实例&lt;a href=&quot;#配置实例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733125724825-5fc79afd-ba57-4220-a7e3-c07cbc16d21f.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;R2上，过滤掉12.12.12.0/24路由，其他放行&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config)# ip prefix-list 12 deny 12.12.12.0/24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config)# ip prefix-list 12 permit 0.0.0.0/0 le 32&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config)# router bgp 12&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config-router)# neighbor 10.1.23.3 prefix-list 12 out&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;distribute-list&lt;a href=&quot;#distribute-list&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;配置实例&lt;a href=&quot;#配置实例-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733125796770-bb717766-917b-4aca-9dce-e03e43310a11.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;R2上，过滤掉12.12.12.0/24路由，其他放行&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config)# access-ist 1 deny 12.12.12.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config)# access-list 1 permit any&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config)# router bgp 12&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config-router)# neighbor 10.1.23.3 distribute-list 1 out&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Route-map&lt;a href=&quot;#route-map&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;可以在以下的BGP命令中使用route-map关键字&lt;a href=&quot;#可以在以下的bgp命令中使用route-map关键字&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;neighbor&lt;/li&gt;
&lt;li&gt;bgp dampening&lt;/li&gt;
&lt;li&gt;network&lt;/li&gt;
&lt;li&gt;redistribute&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;可以为特定的目的在不同的命令中调用定义好的route-map&lt;a href=&quot;#可以为特定的目的在不同的命令中调用定义好的route-map&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;suppress-map&lt;/li&gt;
&lt;li&gt;unsuppress-map&lt;/li&gt;
&lt;li&gt;advertise-map&lt;/li&gt;
&lt;li&gt;inject-map&lt;/li&gt;
&lt;li&gt;exist-map&lt;/li&gt;
&lt;li&gt;non-exist-map&lt;/li&gt;
&lt;li&gt;tabel-map&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;match语句能匹配&lt;a href=&quot;#match语句能匹配&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Access-list&lt;/li&gt;
&lt;li&gt;Ip prefix-list&lt;/li&gt;
&lt;li&gt;Ip next-hop&lt;/li&gt;
&lt;li&gt;local-preference&lt;/li&gt;
&lt;li&gt;metric&lt;/li&gt;
&lt;li&gt;Tag&lt;/li&gt;
&lt;li&gt;AS PATH&lt;/li&gt;
&lt;li&gt;BGP community&lt;/li&gt;
&lt;li&gt;IGP route-type(internal/external)&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;set语句能设置&lt;a href=&quot;#set语句能设置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Origin&lt;/li&gt;
&lt;li&gt;Weight&lt;/li&gt;
&lt;li&gt;BGP community&lt;/li&gt;
&lt;li&gt;LOCAL PREFERENCE&lt;/li&gt;
&lt;li&gt;MED&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;配置实例 关联network 执行策略&lt;a href=&quot;#配置实例-关联network-执行策略&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733126321432-30b4a9e2-5670-4e5c-b28e-b11d6398051b.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;R1上，network引入路由时设置路径属性&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip prefix-list 11 permit 11.11.11.0/24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip prefix-ist 12 permit 12.12.12.0/24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map RP1 permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set community 100:11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map RP2 permit 20&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set community 100:12&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router bgp 100&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;network 11.11.11.0 mask 255.255.255.0 route-map RP1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;network 12.12.12.0 mask 255.255.255.0 route-map RP2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.12.2 send-community&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;该策略对所有BGP邻居有效&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;关联neighbor，针对特定邻居执行策略&lt;a href=&quot;#关联neighbor针对特定邻居执行策略&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;R1上，对R2传递路由时，设定MED属性值&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733126749376-550e409c-c6c6-419c-8ca7-fa6ec14c3a1d.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip prefix-list 11 permit 11.11.11.0/24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip prefix-list 12 permit 12.12.12.0/24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map RP permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match ip address 11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set metric 1000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map RP permit 20&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match ip address 12&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set metric 2000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router bgp 100&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.12.2 route-map RP out&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;配置实例 重发布关联route-map&lt;a href=&quot;#配置实例-重发布关联route-map&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733126794524-8909f174-b61c-467b-9e8e-4a56528ab197.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;R2上，将OSPF路由重发布进BGP&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router bgp 200&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;redistribute ospf 1 route-map RP match ?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;neighbor 10.1.12.1 remote-as 100&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;no auto-summary&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;redistribute ospf 1&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;默认只重发布Intra-Area及Inter-Area路由&lt;/li&gt;
&lt;li&gt;match extemnal只重发布E1及E2&lt;/li&gt;
&lt;li&gt;match external 1只重发布E1;external 2只重发布E2&lt;/li&gt;
&lt;li&gt;match nssa-external 只重发布NSSA外部路由&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Policy-list&lt;a href=&quot;#policy-list&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;可预先将包含一组match语句的route-map定义成一个命令列表，这个列表称为policy-list&lt;/li&gt;
&lt;li&gt;这些policy-list可以在route-map中被调用&lt;/li&gt;
&lt;li&gt;一个policy-list就像个只包含match语句的route-map当route-map被执行，被其调用的policy-list中所包含的match语句将一并被遍历且执行match动作&lt;/li&gt;
&lt;li&gt;这是一种在大中型网络中运用、使得配置“模块化”的特性&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h4&gt;特性&lt;a href=&quot;#特性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Ipv6不支持&lt;/li&gt;
&lt;li&gt;12.0(22)S 和12.2(15)T之前的CISCOIOS版本不支持该特性，另外更老的IOS版本的路由器重启存在路由策略配置丢失的风险&lt;/li&gt;
&lt;li&gt;Policy-list中不能包含set语句，但是它被route-map调用后，该route-map中可以包含set语句&lt;/li&gt;
&lt;li&gt;Policy-list只在BGP中支持，其他的IP路由协议并不支持这个特性&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;配置&lt;a href=&quot;#配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip policy-list as100 permit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match as-path 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match community 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;上述命令创建一个policy-list&lt;/li&gt;
&lt;li&gt;Policy-list只能包含match语句&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map RP permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match policy-list as100&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;match ip address prefix-list 100&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set local-preference 300&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;上述命令在route-map中调用定义好的policy-list&lt;/li&gt;
&lt;li&gt;一个route-map中可调用多个policy-list&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;ORF&lt;a href=&quot;#orf&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733127261820-c5da6b86-80e8-429d-bc1a-2a6100b878e4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;配置&lt;a href=&quot;#配置-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733127420812-f87e5d92-541e-4e91-91ee-8da2c7342e7e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;R2的配置（sender）&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router bgp 12&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;address-family ipv4 unicast&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.12.1 capability orf prefix-ist send&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.12.1 prefix-list FILTER in&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip prefix-ist FlLTER deny 1.1.1.0/24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip prefix-list FlLTER permit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;R1的配置（receiver）&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router bgp 12&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;address-family ipv4 unicast&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;neighbor 10.1.12.2 capability orf prefix-list receive&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;注意：省去基本配置，如手工指定BGP邻居&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;一些&lt;a href=&quot;#一些&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;ORF消息包含以下内容
&lt;ul&gt;
&lt;li&gt;AFl/SAFlipv4 unicast&lt;/li&gt;
&lt;li&gt;ORF TYPE&lt;/li&gt;
&lt;li&gt;When to refresh&lt;/li&gt;
&lt;li&gt;List of ORF entries&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ORF类型不同，ORFentries也不尽相同&lt;/li&gt;
&lt;li&gt;每种ORF类型都需要进行ORF能力的协商&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;路由拆分 BGP Deaggregation&lt;a href=&quot;#路由拆分-bgp-deaggregation&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;背景&lt;a href=&quot;#背景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733127855820-e4b03bc3-1426-46bb-b770-6e35ac5f0b46.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;配置&lt;a href=&quot;#配置-2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Conditional inject的配置如下(BGP路由选择进程模式下)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;bgp inject-map map1 exist-map map2 [copy attributes]&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;上述命令的意思是当map2所匹配的汇总路由正常时，在本地BGP RIB中注入map1中定义的明细路由。&lt;/li&gt;
&lt;li&gt;当汇总路由挂掉，这条明细也就跟着消失，这就是所谓的条件注入-conditional injection。&lt;/li&gt;
&lt;li&gt;下面我们在看来一下这两个route-map的详细内容，这些是需要格外注意的。&lt;/li&gt;
&lt;li&gt;exist-map使用的route-map最少具有以下两个match语句&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;match ip address prefix-list&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;上面这条match语句用来匹配汇总路由&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;match ip route-source&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;上面这条match语句用来匹配发送该汇总路由的邻居IP。如果指定了copyattributes选项，那么被inject的明细路由会继承汇总路由的路径属性，否则明细将被当成本地生成的路由。&lt;/li&gt;
&lt;li&gt;Inject-map使用的route-map中&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;Set ip address prefix-list&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;上面的这条set命令用来定义将被注入到本地BGPRIB的明细路由。被注入的前缀可以使用&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;Show ip bgpinjected-path&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;来显示&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;路由反射器&lt;a href=&quot;#路由反射器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;中转AS中的IBGP问题&lt;a href=&quot;#中转as中的ibgp问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733138789405-9509b338-52b2-4cd0-b7b8-716ee84b829a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;AS内要求IBGP全互联（IBGP水平分割）&lt;/li&gt;
&lt;li&gt;BGP routers
&lt;ul&gt;
&lt;li&gt;需维护大量的TCP和BGP链接&lt;/li&gt;
&lt;li&gt;网络中充斥着BGP路由信息&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;解决方案
&lt;ul&gt;
&lt;li&gt;路由反射器&lt;/li&gt;
&lt;li&gt;BGP联邦&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;背景&lt;a href=&quot;#背景-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733138923248-9e3c4eb2-ccea-4481-8feb-28e80a14bd4e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;因为IBGP水平分割原则，导致AS内部需要维护大量的BGP链接（要求IBGP全互联），从而影响网络性能，路由反射器可以“放宽”水平分割原则，缓解该问题&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733139053948-4ababdc6-fc58-4813-a03b-65e6b92fa662.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Route Reflector&lt;/li&gt;
&lt;li&gt;Client&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;联邦内的BGP路由路径属性&lt;a href=&quot;#联邦内的bgp路由路径属性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;在联邦内部保留外部路由的NEXT_HOP属性&lt;/li&gt;
&lt;li&gt;公布给联邦的路由的MED属性在整个联邦范围内予以保留&lt;/li&gt;
&lt;li&gt;路由的LP属性在整个联邦范围内予以保留&lt;/li&gt;
&lt;li&gt;在联邦范围内，将成员AS号压入AS PATH，但不公布到联邦外，并且使用TYPE3、4的AS PATH&lt;/li&gt;
&lt;li&gt;AS PATH中的联邦成员AS号用于在联邦内部避免环路;联邦内成员AS号不参与AS PATH长度计算&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;路由反射原则&lt;a href=&quot;#路由反射原则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733139094878-a409c072-6d0f-48f0-8f54-d88dc4810e2a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;如果路由学习自非client IBGP对等体，则反射给所有client&lt;/li&gt;
&lt;li&gt;如果路由学习自—client，则反射给所有非client IBGP邻居和除了该client以外的所有client&lt;/li&gt;
&lt;li&gt;如果路由学习自EBGP邻居，则发送给所有的client和非client IBGP邻居&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;实例1&lt;a href=&quot;#实例1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733139249267-49816366-cad0-4367-bc94-0694daae41ae.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;如果路由学习自一client，则反射给所有非client IBGP邻居和除了该client以外的所有client&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733139304799-ced25330-ed76-4b30-8385-39709a182131.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;如果路由学习至自client IBG对等体，则反射给所有的client&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;路由反射器下的防环&lt;a href=&quot;#路由反射器下的防环&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733139376642-4f17a413-a0ac-4a12-b60a-b5f67e6af3da.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;由于AS PATH属性在AS内部不会发生变化(仅当路由离开本AS才会被更新)，因此AS内才有水平分割的机制用于防止环路，而路由反射器实际上是放宽了水平分割原则，这个就会给环路带来一定的隐患，因此路由反射器需使用以下两个属性防止环路ORIGINATOR ID和CLUSTER LIST是路由反射器使用的可选非传递属性，用来防止环路。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Originator_ID、Cluster_list&lt;a href=&quot;#originator_idcluster_list&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733140109190-57da2edc-e4e2-44dd-859d-498ca74c3909.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h4&gt;Originator_ID&lt;a href=&quot;#originator_id&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;每当一条路由被路由反射器反射时，该路由的始发IBGP路由器的Router-ID将会被存在路由的originator_ID属性中&lt;/li&gt;
&lt;li&gt;当一台路由器收到IBGP路由且其originatorID与该路由器的RouterID相同，则路由器忽略该条路由&lt;/li&gt;
&lt;li&gt;Originator_ID及Cluster-list属性将会影响BGP路径决策&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;Originator_ID的值&lt;a href=&quot;#originator_id的值&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733140502948-58450af4-a6d4-4764-b425-43380d718b4b.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;路由反射原则&lt;a href=&quot;#路由反射原则-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733140292005-dd4b4b29-9070-492d-9038-64a94ac51f6e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;如果路由学习自非client lBGP对等体，则反射给所有client&lt;/li&gt;
&lt;li&gt;如果路由学习自一client，则反射给所有非ctientIBGP邻居和除了该client以外的所有client&lt;/li&gt;
&lt;li&gt;如果路由学习自EBGP邻居，则发送给所有client和非clientIBGP邻居&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;路由反射簇&lt;a href=&quot;#路由反射簇&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;路由反射簇包括反射器及其Client&lt;/li&gt;
&lt;li&gt;每一个簇都有唯一的簇ID&lt;/li&gt;
&lt;li&gt;每当一条路由被反射器反射后，该反射器(该簇)的ClusterID就会被添加至路由的Cluster list属性中&lt;/li&gt;
&lt;li&gt;每当反射器收到一条Cluster list属性已经包含该簇的ClusterID的路由时，该路由基于防环的目的将不被反射&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733140660257-05943ad7-9a7c-4dab-af52-05dac354ea2b.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733140718784-4731164f-0b69-4428-b4ff-cbeeaab41843.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733140920126-45d22e04-6ac7-4ea2-b433-4ecf734da20a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;路由反射器冗余&lt;a href=&quot;#路由反射器冗余&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733141230441-a00716c4-3db4-4a6c-9fb7-535cd4ebe1d1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;冗余RR增加了网络的健壮性&lt;/li&gt;
&lt;li&gt;使用Originator IDCluster_list属性来在冗余RR环境中避免路由环路。&lt;/li&gt;
&lt;li&gt;例如将两个RR 的Cluster_ID配置为一样，那么可以起到进一步的防环作用&lt;/li&gt;
&lt;li&gt;所有的RR之间建议采用IBGP全互联&lt;/li&gt;
&lt;li&gt;Client会收到来自两个RR反射的路由，如何决策 ?&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;BGP选路规则&lt;a href=&quot;#bgp选路规则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;优选具有最大Weight值的路由&lt;/li&gt;
&lt;li&gt;优选具有最大Local Pref值的路由&lt;/li&gt;
&lt;li&gt;优选起源于本地的路由(如本地networkaggregate或redistribute的)即下一跳是0.0.0.0(在BGP 表中,当前路由器通告的路由的下一跳为0.0.0.0)&lt;/li&gt;
&lt;li&gt;优选AS-Path最短的路由&lt;/li&gt;
&lt;li&gt;Origin(IGP &amp;gt;EGP&amp;gt;Incomplete )&lt;/li&gt;
&lt;li&gt;优选MED最小的路由，默认情况下仅有当所有的备选路由来自同一AS才会比较MED&lt;/li&gt;
&lt;li&gt;优选EBGP邻居发来的路由(相对于IBGP邻居学过来的)，在联邦EBGP和IBGP中首选联邦EBGP 路由&lt;/li&gt;
&lt;li&gt;优选到BGP NEXT HOP最近的邻居&lt;/li&gt;
&lt;li&gt;如果有多条来自相同相邻AS的路由并通过Maximum-paths 使多条路径可用,则将所有开销相同的路由放入Loc-RIB&lt;/li&gt;
&lt;li&gt;优选最老的EBGP路由，降低滚翻的影响(此条主要对EBGP路由起效，但是现在基本不用该条，因不确定性太大)&lt;/li&gt;
&lt;li&gt;BGP 邻居的RID越小越优先&lt;/li&gt;
&lt;li&gt;优选Cluster-List 最短的路由&lt;/li&gt;
&lt;li&gt;选择邻居ip地址(BGP的neighbor配置中的那个地址)最小的路由&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;优选MED最小的路由&lt;a href=&quot;#优选med最小的路由&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;MED属性设置方法&lt;a href=&quot;#med属性设置方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;将IGP路由引入BGP时关联Route-map进行设置&lt;/li&gt;
&lt;li&gt;对BGP Peer应用IN/OUT方向的Route-map进行设置&lt;/li&gt;
&lt;li&gt;非Route-map(自动)方式
&lt;ul&gt;
&lt;li&gt;使用network或redistribute方式将IGP路由引入BGP时,MED将继承IGP路由的Metric(直联路由及静态路由的Metric为0)&lt;/li&gt;
&lt;li&gt;使用aggregate-address方式引入路由，则MED为空&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;MED注意事项&lt;a href=&quot;#med注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;默认情况下，只比较来自同一邻居AS的BGP路由的MED值，就是说如果同一个目的地的两条路由来自不同的AS，则不进行MED值的比较。如果仍然希望比较来自不同邻接AS的路由，可使用如下命令&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bgp always-compare-med&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;MED只是在直接相连的自治系统间影响业务量，而不会跨AS传递&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1733208543904-53fea48b-83db-441b-964d-f8c27e92a6ee.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;BGP负载均衡&lt;a href=&quot;#bgp负载均衡&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;当前面的8条选路原则都无法优选出最优路由时，并且在BGP进程下面配置了maximum-paths[ibgp]n,n的取值为2-6,那么将执行等价负载均衡，也就是将这些等代价的BGP路径都放进IP路由表使用，但是要注意，虽然这些路径在本地都用了，最终却只有一条BGP路径是best最优的。具备等价负载均衡条件的候选路径需满足如下条件:
&lt;ul&gt;
&lt;li&gt;必须有相同的路径属性，如weight、LP、AS PATH(不仅是长度，整个AS PATH包括AS号都要相同)、origincode、MED及IGP的Distance值&lt;/li&gt;
&lt;li&gt;每一条路径的下一跳都不相同&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;__&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>DHCP协议详解和配置</title><link>https://www.sumi233.top/posts/CCNP/CCNP-DHCP/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNP/CCNP-DHCP/</guid><description>DHCP协议详解和配置</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;DHCP实施背景&lt;a href=&quot;#dhcp实施背景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729165474365-eb0dcff1-1d39-4423-8a7f-d50f6cccc494.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Dynamic Host Configuration Protocol&lt;/li&gt;
&lt;li&gt;基于UDP协议 端口67及68&lt;/li&gt;
&lt;li&gt;bootPC&amp;lt;67&amp;gt;（客户端端口号）；bootPS：68（服务端端口号）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;传输方式&lt;a href=&quot;#传输方式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729166164894-3746dc53-16a4-4763-89f7-d07c779b2eae.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;DHCP中继问题&lt;a href=&quot;#dhcp中继问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;案例一&lt;a href=&quot;#案例一&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729498106851-c554df3c-3861-47ee-b981-06b274a46d00.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;PC客户端与DHCP server不在同一个网段PC发出的广播DHCP discover包到达三层设备被三层接口丢弃，因此数据无法到达DHCP服务器&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;案例二&lt;a href=&quot;#案例二&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729498165849-924f9898-3555-4794-99e5-54ee26ea93f9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;在三层交换机(或路由器)上部署DHCP中继，使得DHCPserver能够收到Discover消息&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;案例三&lt;a href=&quot;#案例三&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/jpeg/44908083/1729498256138-90c814b3-f678-4c44-8db8-3b81f95deabb.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;cisco(config-if)# ip helper-address _address_&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;激活中继功能，并为UDP广播包设置中继目标IP(单播包的目标IP地址)&lt;/li&gt;
&lt;li&gt;注意是在接口上配置，该接口为沿途阻挡该广播消息的第一个接口&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;cisco(config)# ip forward-protocol { udp [ port ]}&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;选择被中继的协议(可选)&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;注意事项1&lt;a href=&quot;#注意事项1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729498637688-ede34ac4-38ae-472e-98e0-44d3c9108741.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;cisco(config)# interface vlan 10&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;cisco(config-if)# ip helper-address 192 168.200.200&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;注意事项2&lt;a href=&quot;#注意事项2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729498803330-8cc66a37-1efb-4664-8343-02bccde28ebf.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;interface fast0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip helper-address 10.1.1.200&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip helper-address 10.1.2.200&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip helper-address 10.1.2.201&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;!!每个地址都会发送一个单播&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Relay Agent Option Support&lt;a href=&quot;#relay-agent-option-support&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729498968783-22fd05b0-fe27-4135-ae7d-8748bb83d552.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;发送广播&lt;/li&gt;
&lt;li&gt;Option82插入remoteID及circuitID&lt;/li&gt;
&lt;li&gt;如果识别option82，则查看插入的option值&lt;/li&gt;
&lt;li&gt;除去option字段，实施策略，将IP分配给client&lt;/li&gt;
&lt;li&gt;基于option值，返回IP address及策略&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;DHCP配置&lt;a href=&quot;#dhcp配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;手工配置&lt;a href=&quot;#手工配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729499528933-45786e82-4126-41d6-9cf8-54dc67e32103.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;手动绑定是手动映射到DHCP数据库中的主机的MAC地址的IP地址。手动绑定存储在DHCP服务器上的NVRAM中&lt;/li&gt;
&lt;li&gt;绑定只是特殊的地址池。手动绑定数量没有限制，但每个主机池只能配置一个手动绑定的配置池&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;ip dhcp pool BIND&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;host 192.168.1.111 255.255.255.0&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;client-identifier unique-identifier&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;DHCP clients require client identifiers. The unique identification ofthe client is specified in dotted hexadecimal notation, for example.01b7.0813.8811.66,where 01 represents the Ethernet media type.（DHCP客户端需要客户端标识符。客户端的唯一标识符用点十六进制表示法指定，例如01b7.0813.8811.66，其中01表示以太网介质类型。）&lt;/li&gt;
&lt;li&gt;也可以在服务器上通过show ip dhcp bingding抓取客户端的client-identifier&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>EtherChannal详解</title><link>https://www.sumi233.top/posts/CCNP/CCNP-EtherChannel/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNP/CCNP-EtherChannel/</guid><description>EtherChannal详解</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;背景&lt;a href=&quot;#背景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729210282296-45cab1db-f0cb-412a-9681-ea25c5371e44.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;解决方案提供更多的带宽对类似链路进行逻辑聚合&lt;/li&gt;
&lt;li&gt;看成一个逻辑链接&lt;/li&gt;
&lt;li&gt;提供负载平衡和冗余支持&lt;/li&gt;
&lt;li&gt;支持Switch ports和Routed ports&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729210552290-923b722e-fa59-400d-8ad0-01aeeb5febe7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;PAgP modes&lt;a href=&quot;#pagp-modes&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729211184779-0808aa71-e83c-42d3-a943-ba7fa545e288.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;On	通道成员不协商(无协议)&lt;/li&gt;
&lt;li&gt;Desirable	主动询问对方是否可以/将&lt;/li&gt;
&lt;li&gt;Auto	被动等待对方询问&lt;/li&gt;
&lt;li&gt;Off	未在接口上配置的 EtherChannel&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;LACP modes&lt;a href=&quot;#lacp-modes&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729211269400-1daba43d-af56-4eec-96ee-5d97aee5b79c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;On	通道成员不协商(无协议)&lt;/li&gt;
&lt;li&gt;Active	主动询问对方是否可以/将&lt;/li&gt;
&lt;li&gt;Passive	被动等待对方询问&lt;/li&gt;
&lt;li&gt;Off	未在接口上配置的 EtherChannel&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;EtherChannel的配置&lt;a href=&quot;#etherchannel的配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;选择用于Channel的端口&lt;/li&gt;
&lt;li&gt;选择PAgP或LACP&lt;/li&gt;
&lt;li&gt;在接口上配置channel-group
&lt;ul&gt;
&lt;li&gt;设置channel-groupID&lt;/li&gt;
&lt;li&gt;根据特定的协议，选择接口模式完成&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;上述步骤后，逻辑的etherchannel接口就建立好了。
&lt;ul&gt;
&lt;li&gt;可以进一步对这个逻辑的etherchannel接口进行配置&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;EtherChannel的实施要点&lt;a href=&quot;#etherchannel的实施要点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Port-channel接口一旦建立完成后，就形成了一个个逻辑的接口，后续针对该接口的配置在port-channel逻辑接口中完成&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最大支持8个端口做捆绑&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Port-channel接口不能成为SPAN的目的接口&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隶属于一个port-channel的物理接口需有相同的如下配置&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;相同的speed和duplex&lt;/li&gt;
&lt;li&gt;相同的接口模式(access、trunk)&lt;/li&gt;
&lt;li&gt;如果是trunk模式，那么native vlan及allowed vlan需相同&lt;/li&gt;
&lt;li&gt;如果是access模式，所属vlan需相同&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;EC的负载均衡&lt;a href=&quot;#ec的负载均衡&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729212993237-1a809b68-e3bc-4757-acee-38be5f7f66fe.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;EtherChannel支持在同一个port-channel的链路中执行负载均衡&lt;/li&gt;
&lt;li&gt;负载均衡动作可以基于MAC、端口、IP(源IP、目的IP或两者)&lt;/li&gt;
&lt;li&gt;默认的行为&amp;lt;源目ip地址对&amp;gt;(src-dst-ip)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;Switch(config)# port-channelload-balance type&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;Switch# show etherchannelload-balance&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;EC的配置&lt;a href=&quot;#ec的配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# int range f0/1 - 2  #进入接口范围&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-if-range)# switchport  #将接口配置为二层接口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-if-range)# switchport trunk encapsulation dot1q  #trunk封装协议为dot1q&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-if-range)# switchport mode trunk  #设置接口模式为Trunk模式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-if-range)# channel-protocol pagp/lacp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-if-range)# channel-group 1 mode desirable  #配置etherchannel，ID为1，模式为desirable&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>EIGRP详解</title><link>https://www.sumi233.top/posts/CCNP/eigrp/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNP/eigrp/</guid><description>EIGRP详解</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;特点&lt;a href=&quot;#特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;思科私有的增强型的矢量路由协议&lt;/li&gt;
&lt;li&gt;快速汇聚：采用DUAL来实现快速汇聚&lt;/li&gt;
&lt;li&gt;触发更新&lt;/li&gt;
&lt;li&gt;部分更新：EIGRP发送部分更新，把更新的部分传递给需要的路由器&lt;/li&gt;
&lt;li&gt;使用多播和单播：使用多播和单播而不是广播，多播地址224.0.0.10&lt;/li&gt;
&lt;li&gt;支持VLSM：支持无类&lt;/li&gt;
&lt;li&gt;精密的度量值：能实现不等价的负载均衡&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;关键技术&lt;a href=&quot;#关键技术&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;邻居发现协议
&lt;ul&gt;
&lt;li&gt;使用Hello包发现邻居，并动态的获悉其直连的网络中的其他路由器&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;可靠传输协议（RTP）
&lt;ul&gt;
&lt;li&gt;确保EIGRP分组按顺序以可靠的方式传输给所有邻居&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DUAL有限状态机
&lt;ul&gt;
&lt;li&gt;选择最低的度量值和无环的路径到达目的网段&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;协议无关模块
&lt;ul&gt;
&lt;li&gt;EIGRP支持IP、IPv6、Appletalk和IPX，其都有独立EIGRP模块，负责处理网络层协议而异的需求。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;EIGRP的三张表&lt;a href=&quot;#eigrp的三张表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730161963616-a3e42c29-d0d2-4365-b3d0-f1e5f30550fc.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;邻居表&lt;/li&gt;
&lt;li&gt;拓扑表&lt;/li&gt;
&lt;li&gt;路由表&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730162218489-49492311-099f-4492-ab81-1f7292fec172.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;EIGRP数据包&lt;a href=&quot;#eigrp数据包&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730162469491-ef6f6e0d-c93a-43a2-911c-db3f1413fa94.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Metric的计算&lt;a href=&quot;#metric的计算&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730163258199-be43445b-6cd6-40ed-b80c-e8d37f27b360.png&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730163274887-11941729-c27e-4e74-98e2-ef579f23049b.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730163485100-1b7af06d-b867-41af-a48c-05d2e96f2577.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;默认K1=1,K2=0,K3=1,K4=0,K5=0&lt;/p&gt;&lt;p&gt;延迟取值沿路所有数据出接口(或路由入口)延迟的累加&lt;/p&gt;&lt;p&gt;DLY= 延迟 (us) / 10 x 256&lt;/p&gt;&lt;p&gt;带宽取值沿路所有数据出接口(或路由入口)带宽的最低值&lt;/p&gt;&lt;p&gt;BW= [ 10000000 / 带宽 (Kbps) ] x 256&lt;/p&gt;&lt;p&gt;&lt;strong&gt;EIGRP路由metric默认为延迟+带宽&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730163876261-21d8ff7a-5ece-432c-bf72-da5da25f67d7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;A路由器上，看到的3.3.3.0/24的路由metric(路径1)?&lt;/p&gt;&lt;p&gt;BW=10^7/1544*256=6476(去掉小数)*256=1657856&lt;/p&gt;&lt;p&gt;DLY=20000/10&lt;em&gt;256+5000/10&lt;/em&gt;256=640000&lt;/p&gt;&lt;p&gt;Metric=640000+1657856=2297856&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;初始路由发现&lt;a href=&quot;#初始路由发现&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730164083165-6ad1f436-b29c-4e42-8178-0df9cd83b893.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;机翻过程&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Hello包 1.我是路由器A，链接上是谁?&lt;/li&gt;
&lt;li&gt;Hello包 2.你好，我是路由器B。&lt;/li&gt;
&lt;li&gt;Update包 3.下面是我完整的路由信息。&lt;/li&gt;
&lt;li&gt;ACK包 4.感谢提供的信息!&lt;/li&gt;
&lt;li&gt;Update包 5.下面是我完整的路线信息。&lt;/li&gt;
&lt;li&gt;ACK包 6.感谢提供的信息! （凝聚）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;DUAL算法&lt;a href=&quot;#dual算法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Diffusing Update Algorithm 用于计算最佳无环路径和备用路径&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;实例1&lt;a href=&quot;#实例1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730165228311-05385374-7357-431e-968e-97b968881d03.png&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730165266167-e22f9b6a-06d3-4daa-b10a-16b88ae48a9f.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;将1.0的metric设置为不可达(-1表示不可达)&lt;/li&gt;
&lt;li&gt;由于没有FS1.0被标记为Active状态&lt;/li&gt;
&lt;li&gt;D向C及E发送查询信息，询问去往1.0的替代路径&lt;/li&gt;
&lt;li&gt;D将C及E标记为未应答查询(q)&lt;/li&gt;
&lt;li&gt;路由器C及E将经由D路由器前往网络1.0的路径标记为不可达&lt;/li&gt;
&lt;li&gt;路由器C发送应答消息给D，指出到达1.0网段的路径没变&lt;/li&gt;
&lt;li&gt;D收到C的应答，将C的查询未应答标记删除&lt;/li&gt;
&lt;li&gt;保持前往1.0路由的active状态，同时等待E的应答&lt;/li&gt;
&lt;li&gt;E由于从C前往1.0网段的AD值=3，不小于原来的FD=3，所以E将路由标记为active，且向C查询，并将C标记为查询未应答&lt;/li&gt;
&lt;li&gt;D收到E的应答消息&lt;/li&gt;
&lt;li&gt;删除E的查询未应答标记&lt;/li&gt;
&lt;li&gt;计算新的FD将后继路由加入到拓扑表&lt;/li&gt;
&lt;li&gt;将1.0路由切换到passive&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;几个术语&lt;a href=&quot;#几个术语&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;后继路由器&lt;/p&gt;&lt;p&gt;可行距离(FD)&lt;/p&gt;&lt;p&gt;可行后继路由器(FS)&lt;/p&gt;&lt;p&gt;通告距离(AD)&lt;/p&gt;&lt;p&gt;可行条件，或称可行性条件(FC)&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;配置和验证&lt;a href=&quot;#配置和验证&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;Passive-interface配置&lt;a href=&quot;#passive-interface配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Router(config-router)#passive-interface {type number} | default&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;该命令用于将特定接口设置为被动状态，defaut将所有路由器接白设置为被动状态&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;被动接口作用如下&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;禁止通过被动接口建立邻接关系&lt;/li&gt;
&lt;li&gt;禁止通过被动接口接收或发送路由更新让EIGRP进程通告被动接口连接的子网查看:&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;show ip protocols&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;show ip eigrp neighbor&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;EIGRP路由汇总&lt;a href=&quot;#eigrp路由汇总&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;EIGRP自动汇总&lt;a href=&quot;#eigrp自动汇总&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730170203332-86774a59-6816-4126-a00b-79a436b93c7e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;关闭自动汇总&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;Router(config-router)# no auto-summary&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;配置手工汇总&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;Router(config-if)# ip summary-address eigrp as-number address mask [admin-distance]&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;手工配置汇总时，仅当路由选择表中至少有一条该汇总路由的明细路由时，汇总路由才被通告出去。&lt;/li&gt;
&lt;li&gt;ip summary-address eigrp进行汇总的路由AD=5&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;负载均衡&lt;a href=&quot;#负载均衡&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;等价负载均衡&lt;/li&gt;
&lt;li&gt;EIGRP在度量值相同的所有路径之间分配数据流量，默认为4条等价路径之间均衡IP负载，最大可为16条&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Router(config-router)# Maximum-paths maximum-path&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;非等价均衡&lt;a href=&quot;#非等价均衡&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;EIGRP也能在度量值不同的多条路径之间负载均衡&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;Router(config-router)# Variance multiplier&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;multplier默认值为1，范围1~128&lt;/li&gt;
&lt;li&gt;只有可行路径才被用于负载均衡，可行条件为：
&lt;ul&gt;
&lt;li&gt;路由必须是无环的。（即AD&amp;lt;FD min）&lt;/li&gt;
&lt;li&gt;FD&amp;lt;= FD min X multiplier&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;注：variance不指定最大路径，而指定了度量值的范围&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;例：&lt;a href=&quot;#例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Router(config-router)# Variance 2&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730188848991-445331a1-6714-448c-8a92-04f2e7af5376.png&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730188866082-9c793dc2-be71-4394-9377-2c39b7231688.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;EIGRP认证&lt;a href=&quot;#eigrp认证&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;路由器使用两种身份验证方式&lt;a href=&quot;#路由器使用两种身份验证方式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;简单密码身份验证
&lt;ul&gt;
&lt;li&gt;IS-IS&lt;/li&gt;
&lt;li&gt;OSPF&lt;/li&gt;
&lt;li&gt;RIPv2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;MD5身份验证
&lt;ul&gt;
&lt;li&gt;OSPF&lt;/li&gt;
&lt;li&gt;BGP&lt;/li&gt;
&lt;li&gt;EIGRP&lt;/li&gt;
&lt;li&gt;RIPv2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;EIGRP MD5身份验证配置&lt;a href=&quot;#eigrp-md5身份验证配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;定义key chain（全局模式）
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Key chain name-of-chain&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;key key-id &lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;key-string text&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;accept-lifetime start-time (infinite end-time duration seconds}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;send-lifetime start-time {infinite | end-time | duration seconds}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;关联key chain（接口模式）
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ip authentication key-chain eigrp autonomous-system name-of-chain&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;启用认证（接口模式）
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ip authentication mode eigrp autonomous-system md5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h4&gt;实例：&lt;a href=&quot;#实例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730189387252-e032d95a-10b6-4916-a220-919f6941dd64.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;show ip eigrp neighbors&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;show ip route&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;show ip eigrp interface detail&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;大型网络EIGRP的可扩展性&lt;a href=&quot;#大型网络eigrp的可扩展性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;大型EIGRP网络通常存在以下一些问题&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;需要处理的路由表很大&lt;/li&gt;
&lt;li&gt;大量的邻居，要维护庞大的拓扑表&lt;/li&gt;
&lt;li&gt;需要交换大量的路由更新，发送大量的查询和应答&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这使得影响网络的可扩展性的变量变多，如：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;邻居间交换的信息量&lt;/li&gt;
&lt;li&gt;路由器数量&lt;/li&gt;
&lt;li&gt;拓扑深度&lt;/li&gt;
&lt;li&gt;网络中的替代路径数&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;陷入主动状态&lt;a href=&quot;#陷入主动状态&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;路由器陷入主动状态并因此发起查询，仅当收到每个查询的应答后，该路由器才会脱离主动状态进入被动状态&lt;/li&gt;
&lt;li&gt;如果路由器在3分钟肉没有收到查询应答，路由将陷入主动状态(SIA)此时路由器将重置与未应答的邻居之间的邻接关系。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;导致路由进入SIA的常见原因&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;路由器太忙无法回答查询&lt;/li&gt;
&lt;li&gt;路由器之间的链路质量低劣&lt;/li&gt;
&lt;li&gt;单向链路&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;防范SIA&lt;a href=&quot;#防范sia&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730249689117-deda2787-45c7-4c17-93c9-5d4919815bb5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;EIGRP分组新增加了SIA-查询和SIA-应答，是由主动过程改进的&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;改进前&lt;/strong&gt;&amp;lt;主动定时器到期后&amp;gt;，A重置与B的邻接关系，但问题出在B和C之间的链路上&lt;/p&gt;&lt;p&gt;&lt;strong&gt;改进后&lt;/strong&gt;&amp;lt;主动定时器过半后&amp;gt;，A发送SIA-查询，而B确认查询，从而保持邻接关系&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;限制查询范围&lt;a href=&quot;#限制查询范围&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;确定好路由需求后，可提高EIGRP的可扩展性，使用以下两种方式
&lt;ul&gt;
&lt;li&gt;在合适的路由器上使用路由汇总&lt;/li&gt;
&lt;li&gt;将远程路由器设置有末节EIGRP路由器&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;将远程路由器设置有末节EIGRP路由器&lt;/li&gt;
&lt;li&gt;中央-分支网络拓扑中，stub路由器将所有非本地数据流转发给hub路由器，而无需保存完整的路由表。&lt;/li&gt;
&lt;li&gt;对于hub路由器来说，不应将stub路由器最为中转路由器，禁止stub路由器将hub路由器通告给其他的hub。&lt;/li&gt;
&lt;li&gt;stub路由器不会收到查询，与stub区域相连的hub路由器将代表末节i由器对查询做出应答。&lt;/li&gt;
&lt;li&gt;未节路由器时指&amp;lt;该路由器与网络核心相连&amp;gt;，且不会被用来中转数据未节路由器的EIGRP邻居全部都是中央路由器:&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;使用路由汇总&lt;a href=&quot;#使用路由汇总&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730250750824-bcc81bb9-9bfe-45ec-a6ff-82e841cd2b18.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;查询在收到汇总路由的路由器结束&lt;/li&gt;
&lt;li&gt;仅当路由表中有被查询的网络完全匹配的路由时，远程路由器才会进一步传播查询&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# router eigrp autonomous-system&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#EIGRP将autonomous-system参数称为“自治系统”编号。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-router)# network network-number [wildcard-mask]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# lp default-network network-number&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#将路由表中某个网络宣告为缺省网络&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-router)# network network-number&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#将指定的网络号通告给其他的路由器&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>HSRP &amp; VRRP &amp; GLBP</title><link>https://www.sumi233.top/posts/CCNP/hsrp-vrrp-glbp/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNP/hsrp-vrrp-glbp/</guid><description>HSRP &amp; VRRP &amp; GLBP</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;技术背景&lt;a href=&quot;#技术背景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;一旦网络网关或关键节点出现故障，将对业务造成灾难性故障&lt;/li&gt;
&lt;li&gt;链路失效无法检测，业务稳定性受到威胁&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729500335707-435129c9-bd7e-4f38-b119-d5de25de2a06.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;HSRP部分&lt;a href=&quot;#hsrp部分&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;HSRP带来了什么？&lt;a href=&quot;#hsrp带来了什么&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729509362499-499539a3-5928-4791-9d99-59e51b53948f.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;利用HSRP，一组路由器(同一个LAN中的接口)协同工作，但只有一个处于Active状态。在一个HSRP组内的多个路由器共用一个虚拟的IP地址，该地址被作为局域网内所有主机的缺省网关地址&lt;/li&gt;
&lt;li&gt;HSRP决定哪个路由器被激活，该被激活的路由器负责接收发过来的数据包并进行路由。以及相应PC对于其网关的ARP请求&lt;/li&gt;
&lt;li&gt;备份路由器侦听active路由器的状态，并准备随时接替Active router的工作&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;HSRP名词&lt;a href=&quot;#hsrp名词&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;HSRP路由器
&lt;ul&gt;
&lt;li&gt;运行HSRP的路由器，一台HSRP路由器（的接口）可同时参与到多个HSRP组中，在不同的组中，一台HSRP路由器可以充当不同的角色&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HSRP组
&lt;ul&gt;
&lt;li&gt;由多个HSRP路由器组成，属于同一HSRP组的HSRP路由器互相交换信息，每一组由一个组ID进行标识&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;虚拟路由器
&lt;ul&gt;
&lt;li&gt;对于每一个HSRP组，抽象出来的一个逻辑路由器，该路由器充当网络用户的网关&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;虚拟IF地址、MAC地址
&lt;ul&gt;
&lt;li&gt;用于标识虚拟的路由器，该地址实际上就是用户的默认网关&lt;/li&gt;
&lt;li&gt;MAC地址为虚拟的&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Active、Standby路由器
&lt;ul&gt;
&lt;li&gt;Active路由器：就是在HSRP组实际转发数据包的路由器，在每一个VRRP组中，仅有Active响应对虚拟IP地址的ARP请求&lt;/li&gt;
&lt;li&gt;Standby路由器：就是在HSRP组中处于监听状态的路由器，一旦Active路由器出现故障，Standby路由器就开始接替工作&lt;/li&gt;
&lt;li&gt;选举依据：HSRP接口优先级和接口IP地址（比大）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;虚拟路由器MAC地址&lt;a href=&quot;#虚拟路由器mac地址&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729510085320-82db06f3-14f2-4a97-858e-175ce2ce09da.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;HSRP使用一个格式为： 0000.0c07.acxx的MAC作为虚拟路由器的MAC，其中xx是该HSRP组的组ID&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Active / Standby Router&lt;a href=&quot;#active--standby-router&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729510204882-1d45a331-3678-400a-bbd7-2025306e8adc.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Active Router
&lt;ul&gt;
&lt;li&gt;响应底下PC对网关的ARP请求(使用虚拟MAC响应)&lt;/li&gt;
&lt;li&gt;承担实际的流量转发任务&lt;/li&gt;
&lt;li&gt;周期性发送Hello包以告知自己的存活情况&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Standby Router
&lt;ul&gt;
&lt;li&gt;侦听Active router发送的hello包&lt;/li&gt;
&lt;li&gt;当Active Router出现问题的时候接替它的位置，成为Active router&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;HSRP状态机&lt;a href=&quot;#hsrp状态机&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729510296618-b22b16a8-8238-4639-94bf-3a9dbcb27855.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;Initial（初始化状态）——Listen（学习状态）——Speak（发报状态【打招呼模式】）——Standby（坚守状态）——Active（活跃状态）&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;HSRP version&lt;a href=&quot;#hsrp-version&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;HSRP version1（默认）
&lt;ul&gt;
&lt;li&gt;组ID范围：0-255&lt;/li&gt;
&lt;li&gt;虚拟MAC：0000.0c07.acxx&lt;/li&gt;
&lt;li&gt;Hello包发送到224.0.0.2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HSRP version2（要看具体的IOS版本）
&lt;ul&gt;
&lt;li&gt;组ID范围：0-4095&lt;/li&gt;
&lt;li&gt;虚拟MAC：0000.0C9F。Fxxx&lt;/li&gt;
&lt;li&gt;Hello包发送到224.0.0.102&lt;/li&gt;
&lt;li&gt;HSRP v1及v2的报文类型不同&lt;/li&gt;
&lt;li&gt;Standby 1 version 2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;HSRP的配置&lt;a href=&quot;#hsrp的配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729510472919-88f35300-8cdb-4884-a07c-ff8322cf0a63.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;接口HSRP优先级默认为100&lt;/li&gt;
&lt;li&gt;要注意HSRP group ID必须一致、虚拟IP必须一致&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Interface fast0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip address 10.1.1.253 255.255.255.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;no shutdown&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;standby 1 ip 10.1.1.254  #虚拟IP&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;standby 1 priority 120  #优先级&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Interface fast0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip address 10.1.1.252 255.255.255.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;no shutdown&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;standby 1 ip 10.1.1.254&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;HSRP track&lt;a href=&quot;#hsrp-track&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729510845997-404129ea-46c6-4676-9a0b-55971f01f2a8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;HSRP的track特性允许我们跟踪某个本地接口的up/down，当接口down掉后，HSRP自动减去一个自定义的值，从而让standby设备顶上&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Interface fast0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip address 10.1.1.253 255.255.255.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;no shutdown&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;standby 1 ip 10.1.1.254&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;standby 1 priority 120&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;standby 1track serial 1/0 30&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Interface fast0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip address 10.1.1.252 255.255.255.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;no shutdown&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;standby 1 ip 10.1.1.254&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;standby 1 preempt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>VLAN间的路由及三层交换机的部署</title><link>https://www.sumi233.top/posts/CCNP/inter-vlan-routing-and-layer3-switch/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNP/inter-vlan-routing-and-layer3-switch/</guid><description>VLAN间的路由及三层交换机的部署</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;Q &amp;amp; A&lt;a href=&quot;#q--a&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;如何满足不同VLAN的互访需求？&lt;a href=&quot;#如何满足不同vlan的互访需求&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;解决方案1：单臂路由&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729153334630-a8c6d042-08e1-4b43-87f8-aa6252bf8900.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729153355876-a7ca5fed-7f69-4e14-82d7-b5d7aa717043.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;路由 VS. 交换的园区网结构&lt;a href=&quot;#路由-vs-交换的园区网结构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729162997065-d2ea58a5-246a-44d6-925d-3b16b41a0532.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;在过去，交换是基于硬件的转发，而路由是基于软件的转发，因此园区网络更多的采用交换网络的设计&lt;/li&gt;
&lt;li&gt;而如今，路由已经几乎与交换一样快，也能够基于硬件做转发，与此同时路由的设计很好的解决了交换网络的二层环路问题，以及LAN的隔离问题&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Switch Virtual interface（SVI）&lt;a href=&quot;#switch-virtual-interfacesvi&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729163085261-9648ecce-8584-479f-a56a-bf5679c5b3bf.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;SVI autostate exclude command&lt;a href=&quot;#svi-autostate-exclude-command&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;SVI口的Line-state在以下条件满足的情况下才会是UP
&lt;ul&gt;
&lt;li&gt;SVI对应的VLAN必须在vlan database中存在并且是激活的&lt;/li&gt;
&lt;li&gt;Vlan interface存在并且不能说administratively down的&lt;/li&gt;
&lt;li&gt;必须至少有一个二层接口（SVI对于VLAN的access接口或者trunk口）是UP的，而且必须是spanning-tree的forwarding状态&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;SVI autostate exclude特性可以让特定接口跳出上述up-and-down的计算过程，也就是说该接口的up down与SVI口的up down无关了&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;Switch(config)# int f0/24&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;Switch(config-if)# switchport auto-state exclude&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729164827120-91130c8c-63de-4e8f-8628-0259875e2c44.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;交换机管理VLAN&lt;a href=&quot;#交换机管理vlan&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;二层交换机的管理VLAN&lt;a href=&quot;#二层交换机的管理vlan&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729165022772-166a0a14-8a04-4f1f-be6f-226ecbf1918a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;交换机的管理VLAN用于交换机本身的设备管理&lt;/li&gt;
&lt;li&gt;二层交换机只能有一个VLAN接口可以拥有IP地址，具体的VLAN可以根据实际需求选定&lt;/li&gt;
&lt;li&gt;有了这个VLAN接口，PC就能够telnet到交换机上执行管理操作&lt;/li&gt;
&lt;li&gt;用户VLAN与交换管理VLAN重叠会有什么问题？&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;三层交换环境的管理VLAN&lt;a href=&quot;#三层交换环境的管理vlan&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729165215265-252a3155-b8c1-4065-9cc0-764a2291e798.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;三层交换机的端口模式&lt;a href=&quot;#三层交换机的端口模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729163463953-598b285c-b189-41f6-80b0-e3a5a7637588.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;二层接口：access模式，trunk模式&lt;/li&gt;
&lt;li&gt;三层接口：路由接口（no switchport或称为routed port）、SVI接口&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# ip routing&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#  开启三层交换机路由功能&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# vlan 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-vlan)# name name&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 创建VLAN&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# int vlan 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-Vlanif10)# ip add x.x.x.x mask&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-Vlanif10)# no sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#  配置VLAN对于SVI接口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# int f0/1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-if)# no switchport&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-if)# ip add x.x.x.x mask&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-if)# no sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#  配置no switchport（routed port）三层接口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# ip route 0.0.0.0 0.0.0.0 x.x.x.x&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#  配置静态路由&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>OSPF和LSA详解</title><link>https://www.sumi233.top/posts/CCNP/ospf-and-lsa/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNP/ospf-and-lsa/</guid><description>OSPF和LSA详解</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;OSPF&lt;a href=&quot;#ospf&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;基础回顾&lt;a href=&quot;#基础回顾&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;OSPF（Open Shortest Path First，开放最短路径优先）是一种链路状态路由协议，无路由循环(全局拓扑)，属于IGP。RFC2328，“开放”意味着非私有的，对公众开放的。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;OSPF协议使用的组播地址
&lt;ul&gt;
&lt;li&gt;所有OSPF路由器224.0.0.5；DR BDR-224.0.0.6&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;OSPF的报文封装
&lt;ul&gt;
&lt;li&gt;OSPF协议包直接封装于IP，协议号89。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;OSPF路由协议的管理距离&amp;lt;110&amp;gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;网络类型&lt;a href=&quot;#网络类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;点对点&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;广播&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;非广播&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;非广播又包含了5种运行模式：
&lt;ul&gt;
&lt;li&gt;NBMA（RFC）&lt;/li&gt;
&lt;li&gt;P2MP（RFC）&lt;/li&gt;
&lt;li&gt;P2MP nonbroadcast（CISCO）&lt;/li&gt;
&lt;li&gt;Broadcast（CISCO）&lt;/li&gt;
&lt;li&gt;P2P（CISCO）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;点对点类型&lt;a href=&quot;#点对点类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729597653542-543c407b-5fbf-4a07-addb-ef4a220af580.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;如果二层的协议为PPP、HDLC等，则OSPF网络类型为P2P&lt;/li&gt;
&lt;li&gt;如果帧中继子接口类型为P2P的，则OSPF网络类型也为P2P&lt;/li&gt;
&lt;li&gt;不选举DR、BDR&lt;/li&gt;
&lt;li&gt;使用组播地址224.0.0.5&lt;/li&gt;
&lt;li&gt;OSPF能够根据二层封装自动检测到P2P网络类型&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;广播型多路访问&lt;a href=&quot;#广播型多路访问&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729597748803-b40f6f84-0db0-4015-b26a-7db24de3eec2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;通常出现在以太网&lt;/li&gt;
&lt;li&gt;选举DR、BDR&lt;/li&gt;
&lt;li&gt;所有路由器均与DR及BDR建立邻接关系&lt;/li&gt;
&lt;li&gt;使用组播地址224.0.0.5及224.0.0.6&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;NBMA网络选择OSPF的模式&lt;a href=&quot;#nbma网络选择ospf的模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729597933313-047b21b5-add8-4100-bfee-794b3879c1ab.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;在帧中继主接口上，默认的OSPF模式为非广播&lt;/li&gt;
&lt;li&gt;在点到点帧中继子接口上，默认的OSPF模式为点到点&lt;/li&gt;
&lt;li&gt;在帧中继多点子接口上，默认的OSPF模式为非广播&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;链路状态协议&lt;a href=&quot;#链路状态协议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729582503246-0528dc00-6265-464a-a66c-0dbf9991d7f2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;网络优化-Router-ID&lt;a href=&quot;#网络优化-router-id&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;为了提高路由器的RID的稳定性和网络的稳定性建议手动的设置路由器的Router-ID&lt;/li&gt;
&lt;li&gt;在OSPF的进程下修改 &amp;lt;x.x.x.x&amp;gt;&lt;/li&gt;
&lt;li&gt;在项目实施中，一般是建立loopback口，并且手工指定loopback口地址为router-id&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;DR、BDR&lt;a href=&quot;#drbdr&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729583194925-732e5d65-058d-45b9-b919-c1a4e44723d4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;DR的作用：多路访问中为了减少邻接关系（N平方的问题）和LSA的泛洪，采用DR机制，BDR提供了备份&lt;/li&gt;
&lt;li&gt;MA网络上所有的路由器均与DR、BDR建立邻居关系&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;DR选举比较顺序&lt;a href=&quot;#dr选举比较顺序&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;接口优先级数字越大越优先（优先级为0不能参与DR的选举）、&lt;/li&gt;
&lt;li&gt;RouterID越大越好&lt;/li&gt;
&lt;li&gt;稳定性压倒一切（非抢占）&lt;/li&gt;
&lt;li&gt;通过控制接口优先级是控制DR选举的好办法&lt;/li&gt;
&lt;li&gt;DR的选举是基于接口的，如果说某个路由器是DR，这种说法是错误的&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;DR及BDR选举的控制&lt;a href=&quot;#dr及bdr选举的控制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729597316618-061a5e61-a25e-40b1-885d-8a2d9fbd2000.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;ip ospf priority 10&lt;/code&gt;&lt;/p&gt;&lt;p&gt;比较次序&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;优先级&lt;/li&gt;
&lt;li&gt;路由器ID&lt;/li&gt;
&lt;li&gt;优先级为0的不能成为DR或者BDR&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;链路的开销&lt;a href=&quot;#链路的开销&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;自动计算=参考带宽(10的8次方)/出口带宽&lt;/li&gt;
&lt;li&gt;接口带宽为接口逻辑带宽，可以使用bandwith命令调整，主要用于路由计算而不是接口物理带宽，但一般情况&amp;lt;接口逻辑带宽&amp;gt;=接口物理带宽。&lt;/li&gt;
&lt;li&gt;手工修改开销的方法&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;Router(config)# int serial 1&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;Router(config-if)# ip ospf cost 100	//该命令在收路由的入口&lt;/code&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;可修改参考带宽,来保障OSPF在现如今的网络中正常运转&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;auto-cost reference-bandwidth &amp;lt;参考带宽以Mbits为单位&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;三张表&lt;a href=&quot;#三张表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729583395100-67ec4bc7-0287-42cc-8d1b-76f7f8ece3b8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;相邻的两台路由器运行OSPF协议&lt;/li&gt;
&lt;li&gt;两台路由器直接连接&lt;/li&gt;
&lt;li&gt;在同一自治系统&lt;/li&gt;
&lt;li&gt;Hello/Dead时间一致&lt;/li&gt;
&lt;li&gt;区域ID一致&lt;/li&gt;
&lt;li&gt;认证密码一致&lt;/li&gt;
&lt;li&gt;MTP值一致&lt;/li&gt;
&lt;li&gt;*网络类型一致&lt;/li&gt;
&lt;li&gt;*链路两端接口掩码一致&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;报文类型&lt;a href=&quot;#报文类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729583532652-1fe547e6-7e27-4e76-bb58-191ed1d3961e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Hello	建立和维护OSPF邻居关系&lt;/li&gt;
&lt;li&gt;DBD		链路状态数据库描述信息(描述LSDB中LSA头部列表)&lt;/li&gt;
&lt;li&gt;LSR		链路状态请求,向OSPF邻居请求链路状态信息&lt;/li&gt;
&lt;li&gt;LSU		链路状态更新(包含一条或多条LSA)&lt;/li&gt;
&lt;li&gt;LSAck	确认报文&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;OSPF邻居建立过程&lt;a href=&quot;#ospf邻居建立过程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729584652052-d4b95daa-8884-47ae-920e-34ad316f4a3a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;邻居发现&lt;a href=&quot;#邻居发现&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729584326053-0256b458-b096-42dc-a8e0-e285f71dc6cd.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;路由发现阶段&lt;a href=&quot;#路由发现阶段&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729584355522-638bec3d-ff82-4db9-90ba-3579b3a0f3f0.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729584499985-4d227371-bb64-4bbd-ba77-fdbe2784854c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;OSPF路由器建立邻接关系的过程详细描述&lt;a href=&quot;#ospf路由器建立邻接关系的过程详细描述&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;OSPF路由器接口up，发送Hello包(NBMA模式时将进入Attempt状态)。&lt;/li&gt;
&lt;li&gt;OSPF路由器接口收到Hello包，进入Init状态;并将该Hello包的发送者的RouterID添加到Hello包(自己将要从该接口发送出去的Hello包)的邻居列表中。&lt;/li&gt;
&lt;li&gt;OSPF路由器接口收到邻居列表中含有自己RouterID的Hello包，进入Two-way状态形成OSPF邻居关系，并把该路由器的RouterID添加到自己的OSPF邻居表中&lt;/li&gt;
&lt;li&gt;在进入Two-way状态后，广播、非广播网络类型的链路，在DR选举等待时间内进行DR选举。点对点没有这个过程。&lt;/li&gt;
&lt;li&gt;在DR选举完成或跳过DR选举后，建立OSPF邻接关系，进入exstart(准启动)状态并选举DBD交换主从路由器，以及由主路由器定义DBD序列号，RouterID大的为主路由器。目的是为了解决DBD自身的可靠性。&lt;/li&gt;
&lt;li&gt;主从路由器选举完成后，进入Exchange(交换)状态，交换DBD信息。DBD交换完成后，进入Loading状态，对链路状态数据库和收到的DBD的LSA头部进行比较，发现自己数据库中没有的LSA就发送LSR，向邻居请求该LSA;邻居收到LSR后，回应LSU;收到邻居发来的LSU，存储这些LSA到自己的链路状态数据库，并发送LSAck确认。&lt;/li&gt;
&lt;li&gt;LSA交换完成后，进入FULL状态，所有形成邻居的OSPF路由器都拥有相同链路状态数据库。&lt;/li&gt;
&lt;li&gt;定期发送Hello包，维护邻居关系。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;OSPF邻接关系&lt;a href=&quot;#ospf邻接关系&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;路由器之间链路状态信息必须同步，LSA具有以下特征：&lt;/li&gt;
&lt;li&gt;LSA（LSU）是可靠的传输，需要LSAck确认&lt;/li&gt;
&lt;li&gt;LSA有序列号和寿命，以确保是最新的LAS&lt;/li&gt;
&lt;li&gt;LSA被定期的刷新以确保拓扑信息的有效性&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;链路状态数据的状态&lt;a href=&quot;#链路状态数据的状态&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729585188616-4c4dd0cf-7eae-44df-8df2-4308bf761556.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;OSPF多区域概念&lt;a href=&quot;#ospf多区域概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;单区域&lt;a href=&quot;#单区域&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729585216495-f1b2e4b6-e173-4b2d-9bd3-ec5d0a567d94.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;收到的LSA通告太多了，OSPF路由器的负担很大&lt;/li&gt;
&lt;li&gt;内部动荡会引起全网路由器的完全SPF计算&lt;/li&gt;
&lt;li&gt;资源消耗过多，LSDB庞大，设备性能下降，影响数据转发&lt;/li&gt;
&lt;li&gt;每台路由器都需要维护的路由表越来越大，单区域内路由无法汇总&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h4&gt;解决方案&lt;a href=&quot;#解决方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;把大型网络分隔为多个较小，可管理的单元-区域 area;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729585389704-f78a98ae-479f-43ea-882e-53cc2ffca7c3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;划分区域的好处&lt;/li&gt;
&lt;li&gt;减少了LSA洪泛的范围，有效地把拓扑变化控制在区域内，提高了网络的稳定性拓扑的变化影响可以只限制涉及本区域&lt;/li&gt;
&lt;li&gt;多区域提高了网络的扩展性，有利于组建大规模的网络&lt;/li&gt;
&lt;li&gt;在区域边界可以做路由汇总，减小了路由表&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;OSPF路由器角色&lt;a href=&quot;#ospf路由器角色&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729585477757-23c7849f-09a3-4fee-b0a7-5e1fdd6742c5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;在帧中继环境下的OSPF&lt;a href=&quot;#在帧中继环境下的ospf&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;NBMA网络选择OSPF模式&lt;a href=&quot;#nbma网络选择ospf模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729816380101-0577bb5b-d702-4859-8ad0-e5b784de728e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;在帧中继的主接口上，默认的OSPF模式为非广播&lt;/li&gt;
&lt;li&gt;在点到点帧中继子接口中，默认的OSPF模式为点对点&lt;/li&gt;
&lt;li&gt;在帧中继多点子接口上，默认的OSPF模式为非广播&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729818741701-a39e2439-6c8e-4b10-9bba-d886484fee5c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;如果是非广播这一 OSPF 网络类型,则 OSPF 也不会主动发送组播包去发现邻居，因此邻居关系建立这&lt;/p&gt;&lt;p&gt;里也有问题。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;NBMA网络下OSPF的运行&lt;a href=&quot;#nbma网络下ospf的运行&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;方式一&lt;a href=&quot;#方式一&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729818282720-8e8c7e7b-6548-41cd-b825-64c10f08f90b.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;指定OSPF网络类型为broadcast&lt;/li&gt;
&lt;li&gt;使用OSPF多播hello分组自动来自动发送邻居&lt;/li&gt;
&lt;li&gt;选举DR和BDR&lt;/li&gt;
&lt;li&gt;DR和BDR必须与其他所有路由器直接相连&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# interface serial 0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# encapsulation frame-relay&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# ip ospf network broadcast&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;方式二&lt;a href=&quot;#方式二&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729818405731-56d45fde-6d9d-4394-b5a6-b9a317b9c04a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;网络类型为non-broadcast（默认）&lt;/li&gt;
&lt;li&gt;手动指定邻居&lt;/li&gt;
&lt;li&gt;选举DR和BDR&lt;/li&gt;
&lt;li&gt;DR和BDR必须与其他所有路由器直接相连&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)#interface serial 0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)#neighbor ip-address [priority number] [poll-interval number] [cost number] [database-filter all]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)#encapsulation frame-relay&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)#ip ospf network non-broadcast&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;方式三&lt;a href=&quot;#方式三&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729818635272-2362be8e-2382-4c0a-94eb-f1f6c6f9ecca.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;interface serial0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;encapsulation frame-relay&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip ospf network point-to-multipoint&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router ospf 100&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 202.101.100.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;interface Serial0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;encapsulation frame-relay&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip ospf network point-to-multipoint&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip ospf priority 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# router ospf process-id [vrf vpn-name]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-router)# network ip-address wildcard-mask area area-id&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-router)# router-id ip-address&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router# clear ip ospf process&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# ip ospf network [ {broadcast | non-broadcast | point-to-multipoint [non-broadcast] | point-to-point} ]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;LSA&lt;a href=&quot;#lsa&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;LSA简介&lt;a href=&quot;#lsa简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729819118059-283bca5c-1922-4be5-944a-07aaab2b1e10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Link State Advertisement&lt;/strong&gt;（链路状态通告），这是在网络协议中，尤其是 OSPF（开放最短路径优先）和 IS-IS（中间系统到中间系统）中使用的一种消息类型。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;LSA类型&lt;a href=&quot;#lsa类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729819172881-af6ef12d-89f7-42af-9256-e129103f1207.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;类型1 路由器LSA Router LSA&lt;a href=&quot;#类型1-路由器lsa-router-lsa&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;每个路由器针对它所在的区域产生LSA1，描述区域内部与路由器直连的链路的信息(包括链路类型，Cost等)&lt;/li&gt;
&lt;li&gt;LSA1只允许在本区域内洪泛，不允许跨越ABR&lt;/li&gt;
&lt;li&gt;LSA中会标识路由器是否是ABR(B比特置位),ASBR(E比特置位)或者是Virtual-link(V比特置位)的端点的身份信息&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;类型2 网络LSA Network LSA&lt;a href=&quot;#类型2-网络lsa-network-lsa&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729821435220-c6372be2-8ace-40f8-9842-95f87f104bc8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;类型1、2总结&lt;a href=&quot;#类型12总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;通过LSA1，LSA2在区域内洪泛,使区域内每个路由器的LSDB达到同步计算生成标识为“O”的路由，解决区域内部的通信问题&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729821481351-2632bc17-429c-4770-aa0a-fcea98417f5c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;类型3 网络汇总LSA Network Summary LSA&lt;a href=&quot;#类型3-网络汇总lsa-network-summary-lsa&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;由ABR生成，实际上就是将区域内部的Type1Type2的信息收集起来以路由子网的形式扩散出去，这就是SummayLSA中sunmay的含义(注意这里的summary与路由汇总没有关系)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729821558294-c0336486-6143-4997-b4c4-c9602d37a3b7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;Type3 的链路状态ID是目的网络地址。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;如果一台ABR路由器在与它本身相连的区域内有多条路由可以到达目的地,那么它将只会始发单一的一条网络汇总LSA到骨干区域,而且这条网络汇总LSA是上述多条路由中代价最低的。&lt;/li&gt;
&lt;li&gt;ABR收到来自同区域其它ABR传来的Type3 LSA后重新生成新的Type3 LSA（Advertising Router 改为自己）然后继续在整个OSPF系统内扩散&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729822506797-293ae502-10d7-49ed-a0ab-b1733b5c626e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;类型4 ASBR Summary LSA&lt;a href=&quot;#类型4-asbr-summary-lsa&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729822619398-8be5539d-1f33-4d4e-9031-46f359fc9edb.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;ASBR Summary LSA由ABR生成，用于描述ABR能够到达的ASBR它的链路状态ID为目的ASBR的RID。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;类型5 自治系统外LSA AS external LSA&lt;a href=&quot;#类型5-自治系统外lsa-as-external-lsa&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729823363172-eff49501-c34f-42fe-a0c6-64d4b5b2b16e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Autonomous System External LSA由ASBR生成用于描述OSPF自治域系统外的目标网段信息链路状态ID是目的地址的IP网络号&lt;/li&gt;
&lt;li&gt;外部路由通过重发布，引入OSPF路由域，相应信息(路由条目)由ASBR以LSA5的形式生成然后进入OSPF路由域&lt;/li&gt;
&lt;li&gt;缺省情况下，LSA5生成路由用OE2表示，可强行指定为OE1
&lt;ul&gt;
&lt;li&gt;OE2 开销=外部开销&lt;/li&gt;
&lt;li&gt;OE1 开销=外部开销+内部开销&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LSA5不允许进入特殊区域——stub存根区&amp;amp; NSSA区&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h4&gt;OE1、OE2的区别&lt;a href=&quot;#oe1oe2的区别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729823569011-bb805760-c712-4ac8-8c02-a7cb40961599.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;类型7 NSSA中的外部LSA NSSA External LSA&lt;a href=&quot;#类型7-nssa中的外部lsa-nssa-external-lsa&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729823624411-2bc6ff8e-a565-4ddc-b641-e6f34501a7b2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;在NSSA(非完全存根区域)not-so-stubby area中ASBR针对外部网络产生类似于LSA5的LSA类型7&lt;/li&gt;
&lt;li&gt;LSA类型7只能在NSSA区域中洪泛，到达NSSA区域ABR后，NSSAABR将其转换成LSA类型5外部路由，传播到Area0，从而传播到整个OSPF路由域&lt;/li&gt;
&lt;li&gt;生成路由缺省用ON2表示，也可指定为ON1&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;其他&lt;a href=&quot;#其他&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;OSPF LSDB和路由表&lt;a href=&quot;#ospf-lsdb和路由表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;查看路由表 &lt;code&gt;show ip route ospf&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729823720364-54258c69-3cd1-4901-b51f-4a5a1878d36e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;O  &amp;gt; O IA &amp;gt; O E1 &amp;gt; O E2&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;特殊区域的配置nssa&lt;a href=&quot;#特殊区域的配置nssa&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730100982306-4a28f112-d02a-4537-be77-83245f365f85.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;R1的配置&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router ospf 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.12.0 0.0.0.255 area 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;area 1 nssa&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;R2的配置&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router ospf 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.12.0 0.0.0.255 area 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.23.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;area 1 nssa&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;area 1 nssa default-information-orginate #设置默认区域&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;特殊区域的配置 特殊区域在工程中的运用&lt;a href=&quot;#特殊区域的配置-特殊区域在工程中的运用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730101580835-773919f9-0729-4bd0-87b3-657e709babd1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;区域划分（含特殊区域）&lt;/li&gt;
&lt;li&gt;路由汇总&lt;/li&gt;
&lt;li&gt;默认路由传递&lt;/li&gt;
&lt;li&gt;Passive-interface&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;OSPF高级功能配置及验证&lt;a href=&quot;#ospf高级功能配置及验证&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Passive-interface
&lt;ul&gt;
&lt;li&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730103668216-946f3d0c-b38a-44c0-b683-614f039a47ee.png&quot; alt=&quot;&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router ospf 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.1.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.12.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;passive-interface fa 0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730104286308-472055dd-f8c1-43d5-882d-bbf2abc09ea6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router ospf 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.1.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.2.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.3.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.12.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;passive-interface default&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;no passive-interface fa 2/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;注入默认路由
&lt;ul&gt;
&lt;li&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/jpeg/44908083/1730104513770-3af86fb7-7636-46e3-bd19-cc3e78dbdf41.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router ospf&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.1.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.2.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;network 192.168.3.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;default-information originate&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;自动汇总
&lt;ul&gt;
&lt;li&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730105593346-f49940e9-7c5d-4a2a-a6f5-a4838f33aa88.png&quot; alt=&quot;&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router ospf 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;summary-address 10.1.0.0 255.255.0.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- ![](https://cdn.nlark.com/yuque/0/2024/png/44908083/1730113712965-2913d333-5783-4fa0-b276-eb37021add99.png)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router ospf 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;area 2 range 172.16.0.0 255.255.0.0 cost ?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Virtual-link
&lt;ul&gt;
&lt;li&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730114278625-137e8159-3d3f-440f-a631-622f2624109a.png&quot; alt=&quot;&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router ospf 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;area area-id virtual-link router-id [authentication[message-digest | null]] [hello-interval seconds] [retransmit-interval seconds] [transmit-delay seconds] [dead-interval seconds] [fauthentication-key key] | [message-digest-key key-id md5 key]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;OSPF身份验证&lt;a href=&quot;#ospf身份验证&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Null&lt;/li&gt;
&lt;li&gt;简单密码身份验证&lt;/li&gt;
&lt;li&gt;MD5身份验证&lt;/li&gt;
&lt;li&gt;接口认证&lt;/li&gt;
&lt;li&gt;区域认证&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;明文&lt;a href=&quot;#明文&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;接口认证&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)#ip ospf authentication-key password&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)#ip ospf authentication&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;区域认证&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)#ip ospf authentication-key password&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-router)#area area-id authentication&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;密文&lt;a href=&quot;#密文&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;接口认证&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)#ip ospf message-digest-key key-id md5 key&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)#lp ospf authentication message-digest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;区域认证&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)#ip ospf message-digest-key key-id md5 key&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-router)#area 0 authentication messae-digest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>路由和路径</title><link>https://www.sumi233.top/posts/CCNP/routes-and-paths/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNP/routes-and-paths/</guid><description>路由和路径</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h1&gt;路由部分&lt;a href=&quot;#路由部分&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;网络中使用多种IP路由协议&lt;a href=&quot;#网络中使用多种ip路由协议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;需要使用多种IP路由协议的原因-多厂商的路由环境&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;网络合并(同一协议或是不同协议)&lt;/li&gt;
&lt;li&gt;从旧的路由协议过渡到新的路由协议&lt;/li&gt;
&lt;li&gt;路由策略的需要(可靠性、冗余性、分流模型等)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;路由重分发(多个重分发点，双向重分发)&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;路由重发布&lt;a href=&quot;#路由重发布&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;概念&lt;a href=&quot;#概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;路由重分发是指连接到不同路由域(自治系统)的边界路由器在他们之间交换和通告路由选择信息的能力。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;从一种协议到另一种协议&lt;/li&gt;
&lt;li&gt;同一种协议的多个实例&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;注意&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;重分发总是向外的，执行重分发的路由器不会修改其路由表&lt;/li&gt;
&lt;li&gt;路由必须要位于路由表中才能被重分发&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;路由重发布&lt;a href=&quot;#路由重发布-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;重发布要考虑的因素
&lt;ul&gt;
&lt;li&gt;路由回馈&lt;/li&gt;
&lt;li&gt;路由信息不兼容（度量值信息不一致）&lt;/li&gt;
&lt;li&gt;收敛时间不一致（不同路由协议的收敛速度不同）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;如果选择最佳路由
&lt;ul&gt;
&lt;li&gt;管理距离&lt;/li&gt;
&lt;li&gt;度量值&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;路由回馈&lt;a href=&quot;#路由回馈&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730252795715-71f9fcc0-544c-41e7-94a1-cdde5265b108.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;
&lt;li&gt;度量值—种子度量值&lt;/li&gt;
&lt;li&gt;路由器通告与其接口直接相连的链路时，使用的初始度量值叫做种子度量值(也叫做默认度量值)，是根据接口的特征得到的。&lt;/li&gt;
&lt;li&gt;种子度量值或默认度量值是在重分发配置期间定义的，并在自治系统内部正常递增，除了OSPF E2路由。&lt;/li&gt;
&lt;li&gt;可使用命令default-metric或是redistribute中使用metric来指定种子度量值&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;度量值——默认种子度量值&lt;a href=&quot;#度量值默认种子度量值&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730253536563-710553ac-ca47-4ce5-9027-a64118280c8e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;单点重分发&lt;a href=&quot;#单点重分发&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730256948062-64555df9-3f06-41ec-b0c2-9c14cd5cc025.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;单向重分发&lt;/p&gt;&lt;p&gt;双向重分发&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;多点单向重发布&lt;a href=&quot;#多点单向重发布&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730257151571-18b8b2e8-3c79-40ea-b97c-d622e5dc20b8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;多点双向重发布&lt;a href=&quot;#多点双向重发布&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730257180586-f3f245e3-f240-4044-b59e-b2154fde1431.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Passive-interface&lt;a href=&quot;#passive-interface&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;RIP/IGRP——在指定接口不向外发送路由更新，但是接收路由更新&lt;/li&gt;
&lt;li&gt;EIGRP——在指定接口不向外发送Hello消息，而且通过这个接口不与其他路由器建立邻接关系，不发送其它EIGRP的数据流&lt;/li&gt;
&lt;li&gt;OSPF——在指定接口不向外发送Hello消息，而且通过这 个接口不与其他路由器建立邻接关系，不发送和接收路由信息。(有些IOS版本中OSPF在被动接口上发送Helo和DBD分组，但是不发送LSU。)&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;汇聚交换机上所有的三层接口都Network进相应的Area&lt;/li&gt;
&lt;li&gt;汇聚交换机将向所有VLAN接口发送HELLO报文，尝试建立邻居关系，而底层的用户也会收到其并不需要的HELLO包&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Passive-interface与单播更新&lt;a href=&quot;#passive-interface与单播更新&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730339033871-1958274b-9355-4326-a286-f9c3e31efd0e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;配置RIP单播更新&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# router rip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-router)# passive-interface int-type int-num&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-router)# neighbor 192.168.123.3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;常见路由协议管理距离&lt;a href=&quot;#常见路由协议管理距离&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730339568655-3eb7af04-e1a6-498c-85a3-f72f55fcd42a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Route-map&lt;a href=&quot;#route-map&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;特点&lt;a href=&quot;#特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;使用的match命令匹配特定的分组或路由，set修改该分组或路由的相关属性&lt;/li&gt;
&lt;li&gt;Route-map中的语句相当于访问列表中的各行&lt;/li&gt;
&lt;li&gt;Route-map默认为permit，默认序列号为10，序列号不会自动递增，需要指定序列号&lt;/li&gt;
&lt;li&gt;末尾隐含deny any&lt;/li&gt;
&lt;li&gt;单挑match语句包括多个条件时，使用逻辑or运算；多条match语句时，使用逻辑and运算&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;配置&lt;a href=&quot;#配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;match ip address 匹配访问列表或前缀列表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;match length 根据分组的第三层长度进行匹配&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;match interface 匹配下一跳出接口为指定接口之一的路由&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;match ip next-hop 匹配下一跳地址为特定访问列表中被允许的那些路由&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;match metric 匹配具有指定度量值的路由&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;match route-type 匹配指定类型的路由&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;match community 匹配BGP共同体&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;match tag 根据路由的标记进行匹配&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;distribute-list&lt;a href=&quot;#distribute-list&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;distribute-list 可根据下列因素过滤更新&lt;a href=&quot;#distribute-list-可根据下列因素过滤更新&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;入站接口&lt;/li&gt;
&lt;li&gt;出站接口&lt;/li&gt;
&lt;li&gt;从另一种路由协议重分发&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;对于距离矢量路由协议&lt;a href=&quot;#对于距离矢量路由协议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730765382208-5939d7f3-0224-48a4-8bd2-4b38e06c0c22.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;对于链路状态路由协议&lt;a href=&quot;#对于链路状态路由协议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730765432018-af56c92b-2a62-4a66-8430-79f752fc4a02.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;配置&lt;a href=&quot;#配置-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730768260182-2e14961d-ad68-4651-ae82-e9eebcc05966.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config)# access-list 1 permit 192.168.1.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config)# access-list 1 permit 192.168.2.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config)# router rip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R2(config-router)# distribute-list 1 out fa 1/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;prefix-list&lt;a href=&quot;#prefix-list&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;背景&lt;a href=&quot;#背景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730768421821-4f542729-31cd-484e-bd5c-0c7a22b12463.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;外部路由172.16.32.0-39.0/24，以及汇总路由32.0/21被R1引入OSPF现在需在注入过程中，仅将汇总路由32.0/21过滤，所有明细放行，使用ACL匹配路由，该如何写?&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;R1(config)# access-list 1 deny 172.16.32.0	#如果加上反掩码呢&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;R1(config)# access-ist 1 permit any&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;前缀列表&lt;a href=&quot;#前缀列表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;前缀列表的可控性比访问列表高得多，支持增量修改，更为灵活&lt;/li&gt;
&lt;li&gt;判断路由前缀与前缀列表中的前缀是否匹配&lt;/li&gt;
&lt;li&gt;前缀列表包含序列号，从最小的开始匹配，默认序列为5，以5增加&lt;/li&gt;
&lt;li&gt;如果前缀不与前缀列表中的任何条目匹配，将被拒绝&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;配置&lt;a href=&quot;#配置-2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730771586431-d5907351-8a3b-4875-bb63-9a586ef96637.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;router(config)# **ip prefix-list** {list-name [**seq** number] {**deny | permit**} _network/length_ [**ge** _ge-value_] [**le** _le-value_]&lt;/code&gt;&lt;/p&gt;&lt;p&gt;输入条件：length &amp;lt; ge-value &amp;lt; le-value &amp;lt;= 32&lt;/p&gt;&lt;section&gt;&lt;h3&gt;配置示例&lt;a href=&quot;#配置示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;匹配某条特定路由：192.168.1.0/24
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ip prefix-list pxlist 192.168.1.0/24&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;匹配默认路由：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ip prefix-list pxlist permit 0.0.0.0/0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;匹配所有主机路由：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ip prefix-list pxlist permit 0.0.0.0/0 ge 32&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;路径控制&lt;a href=&quot;#路径控制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;网络实现冗余，还需要考虑以下问题&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;弹性：实现链路的主动切换同时备用链路可用于负载均衡&lt;/li&gt;
&lt;li&gt;可用性：从主链路切换到备用链路的时间&lt;/li&gt;
&lt;li&gt;自适应：主链路拥塞时也可以使用冗余路径&lt;/li&gt;
&lt;li&gt;性能：提高带宽的使用率&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h2&gt;路径控制工具&lt;a href=&quot;#路径控制工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;妥善的编制方案：VLSM和CIDR&lt;/li&gt;
&lt;li&gt;重分发和路由协议的特征&lt;/li&gt;
&lt;li&gt;passive-interface&lt;/li&gt;
&lt;li&gt;distribute-list&lt;/li&gt;
&lt;li&gt;prefix-list&lt;/li&gt;
&lt;li&gt;AD的把控&lt;/li&gt;
&lt;li&gt;route-map&lt;/li&gt;
&lt;li&gt;路由标记&lt;/li&gt;
&lt;li&gt;offset-list&lt;/li&gt;
&lt;li&gt;路由标记&lt;/li&gt;
&lt;li&gt;思科IOS IP SLAs&lt;/li&gt;
&lt;li&gt;PBR&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;offset-list的作用&lt;a href=&quot;#offset-list的作用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;用于在入站或出站时增大通过EIGRP或RIP获悉的路由度量值&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;router(config-router)# offset-list {access-list-number| name} {in|out} offset [interface-type interface-number]&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;offset-list的配置&lt;a href=&quot;#offset-list的配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730773350466-5d587359-93a3-41f8-ae95-2a94868aecb4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;access-list 1 permit 10.1.1.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;router rip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;offset-list 1 out 2 serial 0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;PBR策略路由&lt;a href=&quot;#pbr策略路由&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;PBR&lt;a href=&quot;#pbr&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;基于策略的路由比传统路由能力更强，使用更灵活，它使网络管理者不仅能够根据目的地址而且能够根据协议类型、报文大小、应用或IP源地址来选择转发路径。策略可以定义为通过多路由器的负载平衡或根据总流量在各线上进行报文转发的服务质量来定义策略路由。&lt;/li&gt;
&lt;li&gt;策略路由主要对经过路由器的数据流进行分流和过滤以及感兴趣数据流匹配&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;传统路由VS策略路由&lt;a href=&quot;#传统路由vs策略路由&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;传统路由&lt;a href=&quot;#传统路由&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730775469785-37c97bda-3880-410d-bb4d-3def31028fb9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;策略路由&lt;a href=&quot;#策略路由&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730775507016-b35087ed-da05-4558-aed6-aafa6e38c85e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;PBR对数据的处理&lt;a href=&quot;#pbr对数据的处理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730775547268-b569e647-03d1-41eb-b6f6-444d7cd1ac02.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;配置&lt;a href=&quot;#配置-3&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;设定分组的下一跳IP（必须为直连IP）
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;set ip next-hop ip-address [...ip-address]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;设定分组的出接口
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;set interface type number [...type number]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;场景1&lt;a href=&quot;#场景1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1730788273052-453973f9-cb0f-4d85-a1a5-2ed89d2b898b.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;当网络正常时，PC访问外网数据走ISP1&lt;/li&gt;
&lt;li&gt;当ISP1宕机时(GW感知到)，数据切换至ISP2&lt;/li&gt;
&lt;li&gt;当ISP1容机时(GW无感知)，数据仍然走ISP1&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;access-list 1 permit any&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;route-map PBR permit 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;match ip address 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;set ip next-hop 10.1.1.2 10.2.2.2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>路由选择原理</title><link>https://www.sumi233.top/posts/CCNP/routing-principles/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNP/routing-principles/</guid><description>路由选择原理</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;路由选择原理&lt;a href=&quot;#路由选择原理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729556630961-3d015d9f-3ae5-4c13-80fd-44414035a0ed.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729556639379-05e1075f-512e-4609-9792-e21fcde11d20.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;路由信息来源&lt;/li&gt;
&lt;li&gt;管理距离（AD值）&lt;/li&gt;
&lt;li&gt;有类及无类路由查找&lt;/li&gt;
&lt;li&gt;最长匹配原则&lt;/li&gt;
&lt;li&gt;递归查询&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;路由信息的来源&lt;a href=&quot;#路由信息的来源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;直连路由
&lt;ul&gt;
&lt;li&gt;接口配置IP，该接口的物理层和数据链路层UP&lt;/li&gt;
&lt;li&gt;通过接口感知到的直连网络&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;静态路由
&lt;ul&gt;
&lt;li&gt;使用静态路由命令手工配置的路由&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;动态路由
&lt;ul&gt;
&lt;li&gt;通过动态路由协议学习&lt;/li&gt;
&lt;li&gt;常见路由协议：RIP、OSPF、IS-IS、EIGRP、BGP&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;管理距离（AD值）&lt;a href=&quot;#管理距离ad值&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729557010043-46b3011e-6b27-48c8-9f06-c8b053d29574.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;有类及无类路由查找&lt;a href=&quot;#有类及无类路由查找&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;无类路由查找&lt;/strong&gt;：路由器不会注意目的地址的类别，它会在目的地址和所有己知的路由之间逐位(bit by bit)执行最长匹配&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;有类路由查找&lt;/strong&gt;（no ip classless）：路由器收到一个数据包时，先查找目的地址所属主类网络，如果路由表中存在该主类网络的路由，则继续找子网，如果没有子网路由则丢弃数据包（即使本地有默认路由，也同样丢弃），如果有则正常转发;而如果本地路由表里没有该目的地址所属主类网络的路由，则看是否有默认路由，如果有，则转发，如果没有，则丢弃。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;最长匹配原则&lt;a href=&quot;#最长匹配原则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;主机地址（主机路径）&lt;/li&gt;
&lt;li&gt;子网&lt;/li&gt;
&lt;li&gt;一组子网（汇总路由）&lt;/li&gt;
&lt;li&gt;主网号&lt;/li&gt;
&lt;li&gt;超网（CIDR）&lt;/li&gt;
&lt;li&gt;缺省地址&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729557446146-ebde076d-6d67-4744-b602-f3af3c202b25.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729558543372-6f0ce184-42bb-46e0-b9de-9f3f89514936.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;路由表的查找&lt;a href=&quot;#路由表的查找&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;不同的前缀，在路由表中属于不同的路由&lt;/li&gt;
&lt;li&gt;相同的前缀，先比AD，后比metric&lt;/li&gt;
&lt;li&gt;匹配，转发；不匹配，丢弃&lt;/li&gt;
&lt;li&gt;路由器的行为是逐跳的，到目标网络的沿路径每个路由器都必须有关于目标的路由&lt;/li&gt;
&lt;li&gt;数据是双向的，考虑流量的时候，要关注流量的往返&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;路由表的递归查询&lt;a href=&quot;#路由表的递归查询&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729558770399-0145f42d-3b34-47d4-8415-b50b98eeaf42.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;协议分类&lt;a href=&quot;#协议分类&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;有类路由选择协议：RIPv1、IGRP
&lt;ul&gt;
&lt;li&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729565436293-0236dbc1-1d8c-4bd1-a0c3-df14ecd55870.png&quot; alt=&quot;&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;无类路由选择协议：OSPF、EIGRP、ISIS、BGP等&lt;/li&gt;
&lt;li&gt;根本区别在于：更新消息中是否含有网络掩码&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;浮动的静态路由&lt;a href=&quot;#浮动的静态路由&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729566091093-7800b4ae-dc55-4da4-b7c4-0c96f54807fc.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;通过修改缺省的管理具体实现路由冗余&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;静态路由汇总&lt;a href=&quot;#静态路由汇总&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;改变子网掩码，通过汇总路由匹配明细，从而简化路由表&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729578966077-6f787972-1326-45fc-b640-0408a427dc5e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729580677499-e739e627-2e8e-4eb7-9a22-19a2caf8e673.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729565692870-f2f68474-85ac-4f44-b6ff-8ff47e689483.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;Ip route 192.168.10.0 255.255.255.0 192.168.1.1&lt;/code&gt;&lt;/p&gt;&lt;p&gt;使用指向下一跳的静态路由&lt;/p&gt;&lt;p&gt;&lt;code&gt;Ip route 192.168.10.0 255.255.255.0 fa 0/0&lt;/code&gt;&lt;/p&gt;&lt;p&gt;使用指向出接口的静态路由该条目将作为直连网络输入到路由表中如果出接口为广播型接口，可能会给接口下的节点造成额外的负担(ARP)&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router# show ip route&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Gateway of last resort is not set&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;9.0.0.0/2 4 is subnetted,2 subnets&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;C    9.9.12.0 is directly connected, FastEthernet0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;S    9.9.23.0 is directly connected, FastEthernet0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>ACL基础</title><link>https://www.sumi233.top/posts/CCNA/acl-basics/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/acl-basics/</guid><description>ACL基础</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;访问控制列表ACL（Access Control List）是由一条或多条规则组成的集合。所谓规则，是指描述报文匹配条件的判断语句，这些条件可以是报文的源地址、目的地址、端口号等。&lt;/li&gt;
&lt;li&gt;ACL本质上是一种报文过滤器，规则是过滤器的滤芯。设备基于这些规则进行报文匹配，可以过滤出特定的报文，并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/ACL-image2be1cd78ae7434f9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;为什么要用ACL&lt;a href=&quot;#为什么要用acl&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/ACL-image-1ff33b348f14d7bdf.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;ACL的两大主要功能&lt;/li&gt;
&lt;li&gt;流量控制&lt;/li&gt;
&lt;li&gt;匹配感兴趣流量&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;ACL的类型&lt;a href=&quot;#acl的类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;标准访问控制列表&lt;a href=&quot;#标准访问控制列表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;检查源地址&lt;/li&gt;
&lt;li&gt;通常允许或拒绝整个协议套件&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;扩展访问控制列表&lt;a href=&quot;#扩展访问控制列表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;检查源地址和目标地址&lt;/li&gt;
&lt;li&gt;通常允许或拒绝特定的协议和应用&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;用于识别标准ACL和扩展ACL的两种方法&lt;a href=&quot;#用于识别标准acl和扩展acl的两种方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;编号ACL使用一个数字来识别&lt;/li&gt;
&lt;li&gt;命名ACL使用描述性名称或数字来标识&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;标准访问控制列表&lt;a href=&quot;#标准访问控制列表-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;只能根据源地址做过滤&lt;/li&gt;
&lt;li&gt;针对整个协议采取相关动作（允许或禁止）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/image-2575da0debcc560ea.md.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;扩展访问控制列表&lt;a href=&quot;#扩展访问控制列表-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;能根据源、目的地地址、端口号等等进行过滤&lt;/li&gt;
&lt;li&gt;能允许或拒绝特定的协议&lt;/li&gt;
&lt;li&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/ACL-image-2575da0debcc560ea.png&quot; alt=&quot;&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;ACL的标示&lt;a href=&quot;#acl的标示&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;IPv4 ACL&lt;a href=&quot;#ipv4-acl&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/ACL-image-4ac2cc35cbdfcb46c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;出站及入站&lt;a href=&quot;#出站及入站&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/ACL-image-5e1632473fddc86b8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;入方向的ACL操作&lt;a href=&quot;#入方向的acl操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/ACL-image-6d383172498686b6a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;出方向的ACL操作&lt;a href=&quot;#出方向的acl操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/ACL-image-7042aa1fa1369eb38.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;通配符&lt;a href=&quot;#通配符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/ACL-image-8a0301b67a2235fc3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;0 表示严格匹配&lt;/li&gt;
&lt;li&gt;1 表示无所谓&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/ACL-image-93289ca2dec660a11.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;通配符缩写&lt;a href=&quot;#通配符缩写&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;192.168.1.1 0.0.0.0			= host 192.168.1.1&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;精确匹配192.16.1.1这个IP&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;0.0.0.0 255.255.255.255 		= any&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;匹配所有ip&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# access-list access-list-number {permit|deny} source [wildcard mask]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# ip access-group access-list-number {in|out}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;编号选择1-99&lt;/li&gt;
&lt;li&gt;通配符若无，默认0.0.0.0&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no access-list _access-list-number_&lt;/code&gt;将会删除整个ACL列表&lt;/li&gt;
&lt;li&gt;在接口中应用&lt;/li&gt;
&lt;li&gt;应用时关联入或出站方向&lt;/li&gt;
&lt;li&gt;默认出站&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no ip access-group _access-list-number_&lt;/code&gt;可移除接口上应用的访问列表&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# access-list access-list-number {permit|deny} protocol source source-wildcard [operator port] destination destination-wildcard [operator port] [established] [log]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# ip access-group access-list-number {in|out}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;在接口中应用&lt;/li&gt;
&lt;li&gt;应用时关联入或出站方向&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>DOD（TCP/IP）</title><link>https://www.sumi233.top/posts/CCNA/DOD%EF%BC%88TCP_IP%EF%BC%89/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/DOD%EF%BC%88TCP_IP%EF%BC%89/</guid><description>DOD（TCP/IP）</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;模型结构&lt;a href=&quot;#模型结构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/DoD%20(11).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;4层：应用层&lt;/li&gt;
&lt;li&gt;3层：传输层&lt;/li&gt;
&lt;li&gt;2层：网际层&lt;/li&gt;
&lt;li&gt;1层：物理层&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;各层级作用详解&lt;a href=&quot;#各层级作用详解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;4层： 与OSI模型中的应用层类似，为用户提供各种应用服务，如电子邮件、文件传输等&lt;/li&gt;
&lt;li&gt;3层：与OSI模型中的传输层类似，负责端到端之间的通信，处理数据包的分段与重组，以及数据传输的可靠性和正确性&lt;/li&gt;
&lt;li&gt;2层：在TCP/IP模型中相当于OSI模型的网络层，负责IP地址的分配和路由选择，实现不同网络之间的通信&lt;/li&gt;
&lt;li&gt;1层：负责物理硬件设备间的通信，包括数据链路的操作、错误检测和纠正等功能&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;因特网层&lt;a href=&quot;#因特网层&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/DoD%20(8).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;网络层也叫Internet层&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;负责将分组报文从源端发送到目的端&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;网络层作用&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;为网络中设备提供逻辑地址&lt;/li&gt;
&lt;li&gt;负责数据包的寻径和转发&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;因特网层协议&lt;a href=&quot;#因特网层协议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/DoD%20(1).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;因特网层的工具&lt;a href=&quot;#因特网层的工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Ping（ICMP）——测试ip与本机的连通性&lt;/li&gt;
&lt;li&gt;Traceroute/Tracert ——追踪数据包的每一跳&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;因特网层ip报文&lt;a href=&quot;#因特网层ip报文&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/DoD%20(9).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;简称TTL，作用是放置一个数据包在网络中无休无止的进行传输&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;ARP&lt;a href=&quot;#arp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;ARP协议具有两种功能&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;将IPV4地址解析为MAC地址&lt;/li&gt;
&lt;li&gt;维护映射的缓存&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;ARP报文详解&lt;a href=&quot;#arp报文详解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;IP与MAC的关联需要ARP配合实现&lt;/li&gt;
&lt;li&gt;思科中使用&lt;code&gt;show arp&lt;/code&gt;查看arp表&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/DoD%20(2).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;应用层&lt;a href=&quot;#应用层&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/DoD%20(7).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;常见应用的端口&lt;a href=&quot;#常见应用的端口&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;HTTP 80端口&lt;/li&gt;
&lt;li&gt;HTTPS 443端口&lt;/li&gt;
&lt;li&gt;Telnet 23端口&lt;/li&gt;
&lt;li&gt;FTP 20、21端口&lt;/li&gt;
&lt;li&gt;SMTP 25端口&lt;/li&gt;
&lt;li&gt;POP3 110端口&lt;/li&gt;
&lt;li&gt;TFTP 69端口&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;TCP/IP协议簇简解&lt;a href=&quot;#tcpip协议簇简解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;传输控制协议/IRI特网协议（TCP/IP）组是由关国国防部（DoD）所创建的，主要用来确保数据的完整性及毁灭战争中维持通讯&lt;/li&gt;
&lt;li&gt;是由一组不同功能的协议组合在一起构成的协议簇、&lt;/li&gt;
&lt;li&gt;利用一组协议完成OSI所实现的功能&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;各层级代表协议&lt;a href=&quot;#各层级代表协议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/DoD%20(3).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;4层：HTTP（Hypertext Transfer Protocol）、FTP（File Transfer Protocol）、SMTP（Simple Mail Transfer Protocol）&lt;/li&gt;
&lt;li&gt;3层：TCP（Transmission Control Protocol）、UDP（User Datagram Protocol）&lt;/li&gt;
&lt;li&gt;2层：IP（Internet Protocol）、ICMP（Internet Control Message Protocol）、ARP（Address Resolution Protocol）&lt;/li&gt;
&lt;li&gt;1层：：Ethernet、PPP（Point-to-Point Protocol）、ARPANET&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;TCP &amp;amp; UDP&lt;a href=&quot;#tcp--udp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;TCP（传输控制协议） 属于面向连接的网络协议&lt;/li&gt;
&lt;li&gt;UDP（用户报文协议） 属于无连接的网络协议&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;TCP到UDP&lt;a href=&quot;#tcp到udp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;传统控制协议（TCP）&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;面向连接&lt;/li&gt;
&lt;li&gt;可靠传输&lt;/li&gt;
&lt;li&gt;控流&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;用户数据报协议（UDP）&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;无连接&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不可靠传输&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;尽力传输&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用TCP的应用：Web浏览器；电子邮件；文件传输程序&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用UDP的应用：域名系统（DNS）；视频流；IP语言（VoIP）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;源端口随机分配，目标端口使用知名端口&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;应用客户端使用的源端口号一般为系统中未使用的且大于1023&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;目的端口号为服务器端应用服务的进程。如telnet为23&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;TCP包结构&lt;a href=&quot;#tcp包结构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/DoD%20(4).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;TCP的三次握手&lt;a href=&quot;#tcp的三次握手&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/DoD%20(10).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;1.设备1发送 SYN 包&lt;/li&gt;
&lt;li&gt;2.设备2收到了SYN包后再次发送回设备1带有ACK的包&lt;/li&gt;
&lt;li&gt;3.设备1收到SYN包后验证成功&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;UDP包结构&lt;a href=&quot;#udp包结构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/DoD%20(5).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>EIGRP基础</title><link>https://www.sumi233.top/posts/CCNA/eigrp-basics/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/eigrp-basics/</guid><description>EIGRP基础</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;EIGRP是思科发明的一个私有路由协议，由IGRP发展而来，但是算法做了很大的改动。EIGRP和IGRP，RIP一样是一个采用D-V算法的动态路由协议，在收敛速度，占用网络带宽和系统资源等方面有了很大的改进，且有收敛快，无环路由计算，可以应用于大规模网络的优点。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;特点&lt;a href=&quot;#特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;高级距离矢量协议——具有距离矢量性和链路状态协议特征&lt;/li&gt;
&lt;li&gt;无类路由协议——可划分子网、可聚合子网路由&lt;/li&gt;
&lt;li&gt;支持VLSM与不连续子网&lt;/li&gt;
&lt;li&gt;100%无环路——DUAL算法&lt;/li&gt;
&lt;li&gt;快速收敛——路由条目用不更新，拥有备份路由&lt;/li&gt;
&lt;li&gt;触发更新&lt;/li&gt;
&lt;li&gt;低路由更新信息开销&lt;/li&gt;
&lt;li&gt;配置简单&lt;/li&gt;
&lt;li&gt;支持多种路由协议（IP、IPX、Appletalk、etc. ）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;EIGRP的前身 IGRP&lt;a href=&quot;#eigrp的前身-igrp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;懒得打字了，直接上图&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/EIGRP%20(4).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;三张表&lt;a href=&quot;#三张表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/EIGRP%20(2).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;IP EIGRP Neighbor Table（EIGRP邻居表）&lt;/li&gt;
&lt;li&gt;IP EIGRP Topology Table（EIGRP技术表）&lt;/li&gt;
&lt;li&gt;The IP Routing Table（路由表）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;EIGRP数据包&lt;a href=&quot;#eigrp数据包&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;Hello分组&lt;a href=&quot;#hello分组&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;以224.0.0.10发送，无需确认hello包&lt;/p&gt;&lt;p&gt;EIGRP依靠分组来发现，验证和重新发现邻居router&lt;/p&gt;&lt;p&gt;以固定时间发送hello包，改时间间隔与接口带宽有关&lt;/p&gt;&lt;p&gt;LAN上默认为5S&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;更新&lt;a href=&quot;#更新&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;EIGRP协议的这些更新数据包只在必要的时候传递必要的信息,而且仅仅传递给需要路由信息的路由器。当只有某一指定的路由器需要路由更新时,更新数据包就是单播发送的;当有多台路由器需要路由更新时,更新数据包就是组播发送的以可靠的方式发送，需要确认&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;查询&lt;a href=&quot;#查询&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;当某条路由丢失，向邻居查询关于路由信息，通常靠组播方式发送，有时也用单播重传;可靠地发送&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;应答&lt;a href=&quot;#应答&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;响应查询分组，单播;可靠方式发送&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;确认（ACK）&lt;a href=&quot;#确认ack&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;以单播发送的HELLO包(不包含数据)，包含确认号。用来确认更新、查询和应答。ACK本身不需确认。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;EIGRP的Metric&lt;a href=&quot;#eigrp的metric&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/EIGRP%20(1).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/EIGRP%20(3).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;默认K1 = 1，K2 = 0，K3 = 1，K4 = 0，K5 = 0&lt;/li&gt;
&lt;li&gt;延迟取值沿路所有数据出接口（或路由入口）延迟的累加
&lt;ul&gt;
&lt;li&gt;DLY=延迟（US）/10 x 256&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;带宽取值沿路所有数据出接口（或路由入口）带宽的最低值
&lt;ul&gt;
&lt;li&gt;BW=[10000000 / 带宽（Kbps）] x 256&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;EIGRP路由metric默认为 延迟+带宽&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;DUAL算法&lt;a href=&quot;#dual算法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Diffusing Update Algorithm 用于计算最佳无环路径和备用路径&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;特点&lt;a href=&quot;#特点-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;无环拓扑&lt;/li&gt;
&lt;li&gt;可立即使用的无环备用路径&lt;/li&gt;
&lt;li&gt;快速收敛&lt;/li&gt;
&lt;li&gt;低带宽利用率（通过限定更新实现）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;几个术语&lt;a href=&quot;#几个术语&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;后继路由器&lt;/li&gt;
&lt;li&gt;可行距离（FD）&lt;/li&gt;
&lt;li&gt;可行后继路由器（FS）&lt;/li&gt;
&lt;li&gt;通告距离（AD）&lt;/li&gt;
&lt;li&gt;可行距离，或称可行性条件（FC）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;后继与可行可行距离&lt;a href=&quot;#后继与可行可行距离&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;后继路由器（Successors）：被实际选中作为到达一个目的地所使用的下一跳的路由器。该条路由保存在路由表中&lt;/li&gt;
&lt;li&gt;可行距离（Feasible distance）：计算出通向目的网络的最小度量&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;可行后继路由器及通告距离&lt;a href=&quot;#可行后继路由器及通告距离&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;可行后继（Feasible Successor）是一条备份路由，只保存在拓扑表中。要成为可行后继，下一跳路由器前往某个特定网络的AD必须比当前后继的FD小&lt;/li&gt;
&lt;li&gt;通告距离（Advertise Distance）即为EIGRP邻居通向相同目的网络的他自己的可行距离&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;符合了可行性条件（Feasible Condition）是指当邻居通向一个网络的通告距离（AD）比本地路由器通向同一个目的网络的可行距离短时。&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;EIGRP其他特性&lt;a href=&quot;#eigrp其他特性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;不等价负载均衡&lt;a href=&quot;#不等价负载均衡&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;最多支持等价的路径的条数不同的IOS版本不同进行负载（默认是4条）&lt;/li&gt;
&lt;li&gt;可以通过maximum-paths修改&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# router eigrp autonomous-system&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-router)# network network-number [wildcard-mask]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>帧中继FrameDelay</title><link>https://www.sumi233.top/posts/CCNA/frame-relay/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/frame-relay/</guid><description>帧中继FrameDelay</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/image78afa5a21ee4c356.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;使用虚电路进行连接&lt;/li&gt;
&lt;li&gt;提供面向对象的服务&lt;/li&gt;
&lt;li&gt;应用非常广泛的WAN协议&lt;/li&gt;
&lt;li&gt;FR交换设备在用户路由器间建立虚电路，提供基于分组交换的二层通道&lt;/li&gt;
&lt;li&gt;面向连接的数据链路技术&lt;/li&gt;
&lt;li&gt;速率：56K - 2M&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;帧中继术语VC&lt;a href=&quot;#帧中继术语vc&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/image-1822fb32e7964aa45.md.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;虚电路（VC）&lt;a href=&quot;#虚电路vc&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;通告帧中继实现的逻辑连接叫做虚电路（VC）&lt;/li&gt;
&lt;li&gt;利用虚电路，帧中继允许多个用户共享带宽，而无需使用多条专用物理路线，虚电路是以DLCI标识的&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;DLCI（Data Link Connection Identifilier）数据链路连接标识&lt;a href=&quot;#dlcidata-link-connection-identifilier数据链路连接标识&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;通常由帧中继服务提供商（例如电话公司）分配&lt;/li&gt;
&lt;li&gt;帧中继DLCI仅具有本地意义&lt;/li&gt;
&lt;li&gt;DLCI 0到15和1008到1023留作特殊用途。服务提供商分配的DLCI范围通常为16到1007&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;LMI（本地管理接口）&lt;a href=&quot;#lmi本地管理接口&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;是一种信令标准，用作管理链路连接及keepalive的机制&lt;/li&gt;
&lt;li&gt;终端路由器（DTE）和帧中继交换机（DCE）之间的帧中继设备没10秒（或大概如此）轮询一次网络&lt;/li&gt;
&lt;li&gt;思科路由器支持三种LMI，分别是Cisco，Ansi和q933a&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;路由器从帧中继交换机的帧封装接口接受LMI信息，并将虚链路状态更为下列3钟状态之一：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Active State正常状态&lt;/li&gt;
&lt;li&gt;Inactive State远程路由器没有在工作&lt;/li&gt;
&lt;li&gt;Delete State接口没有收到交换机的仍和LMI信息，可能是映射问题或者线路问题&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;帧中继拓扑&lt;a href=&quot;#帧中继拓扑&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;星型结构（Hub-and-spoke）&lt;a href=&quot;#星型结构hub-and-spoke&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/image-2376cc5397034bbb7.md.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h4&gt;特点&lt;a href=&quot;#特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;从一点连接到各处（集中点）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;全互联（Full Mesh）&lt;a href=&quot;#全互联full-mesh&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/image-329c02835daa6f3fe.md.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h4&gt;特点&lt;a href=&quot;#特点-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;互相连接&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;缺点&lt;a href=&quot;#缺点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;代价过大&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;部分互联（Partial-Mesh）&lt;a href=&quot;#部分互联partial-mesh&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/image-42dad52386351e79e.md.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h4&gt;特点&lt;a href=&quot;#特点-2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;节省成本的同时保证稳定性&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;帧中继 地址映射&lt;a href=&quot;#帧中继-地址映射&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/image-58ee3b624d6f870af.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;帧中继映射条目，DLCI从运营商处获取，映射关系为远端的IP地址到本地DICI之间的联系&lt;/li&gt;
&lt;li&gt;可以通过手工配置或Inverse ARP自动发现&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;帧中继虽不支持广播，但可以“模拟”广播的操作，做法即是通过向所有的PVC发送一份数据的拷贝&lt;/li&gt;
&lt;li&gt;在建立PVC的时候，通过invers-arp自动建立映射，默认就开启上述特性，如果是手工映射，则必须加上boardcast关键字&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;简单例子&lt;a href=&quot;#简单例子&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/image-6b7b1ff832a361354.md.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# int s0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# ip add 10.1.123.1 255.255.255.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# encapsulation frame-relay&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# no frame-relay inverse-arp #关闭insverse-arp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# frame-relay map ip 10.1.123.2 102 broadcast #手工配置帧中继映射&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# frame-relay map ip 10.1.123.3 103 broadcast&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# int s0/0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# ip add 10.1.123.2 255.255.255.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# encapsulation frame-relay&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# no frame-relay inverse-arp  #关闭insverse-arp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# frame-relay map ip 10.1.123.1 201 broadcast #手工配置帧中继映射&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>NAT基础</title><link>https://www.sumi233.top/posts/CCNA/nat-basics/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/nat-basics/</guid><description>NAT基础</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;即Network Address Translation，网络地址转换。于1994年被提出。当在专业网内部的一些主机本来已经分配到了本地IP地址（即在本专用网内使用的专用地址），但现在又想和因特网上的主机通信（不需要加密的）的时候，就可以使用NAT技术。
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/NAT%20(4).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;为什么需要NAT&lt;a href=&quot;#为什么需要nat&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;主要为了解决IPv4地址紧缺的问题，通过将一个公网IP地址和多个私网IP相对应，从而解决IP地址不够用的情况，但是这种技术只是起到了缓解的作用，真正的方法还是得使用IPv6来解决。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/NAT%20(5).pngg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;NAT技术的优缺点&lt;a href=&quot;#nat技术的优缺点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;优点&lt;a href=&quot;#优点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;节省合法的公有的IP地址&lt;/li&gt;
&lt;li&gt;地址重叠时，提供一个较为完善的解决方法&lt;/li&gt;
&lt;li&gt;网络发生变化时，避免重新编址&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;缺点&lt;a href=&quot;#缺点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;无法进行端对端的ip追踪（破坏了端对端通讯的平等性）&lt;/li&gt;
&lt;li&gt;很多应用层无法识别（例如FTP协议）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;NAT的三种类型&lt;a href=&quot;#nat的三种类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;静态NAT&lt;a href=&quot;#静态nat&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/NAT%20(1).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;将内部本地地址与内部全局地址进行一对一的明确转换。这种方法主要用于内部网络中有对外提供服务的服务器，如WEB、MAIL服务器时。该方法的缺点是需要独占宝贵的合法IP地址。即如果某个合法IP地址已经被NAT静态地址转换定义，即使该地址当前没有被使用，也不能用作其他的地址转换。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;动态NAT&lt;a href=&quot;#动态nat&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/NAT%20(2).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;动态地址转换也是将内部本地地址与内部全局地址进行一对一的转换。但是，是从内部全局地址池中动态地选择一个未使用的地址对内部本地地址进行转换。该地址是由未被使用的地址组成的地址池中在定义时排在最前面的一个。当数据传输完毕后，路由器将把使用完的内部全局地址放回到地址池中，以供其它内部本地地址进行转换。但是在该地址被使用时，不能用该地址再进行一次转换。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;端口复用PAT&lt;a href=&quot;#端口复用pat&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;复用地址转换也称为端口地址转换(PortAddressTranslation，PAT)，首先是一种动态地址转换。路由器将通过记录地址、应用程序端口等唯一标识一个转换。通过这种转换，可以使多个内部本地地址同时与同一个内部全局地址进行转换并对外部网络进行访问。对于只申请到少量IP地址甚至只有一个合法IP地址，却经常有很多用户同时要求上网的情况，这种转换方式非常有用&lt;/li&gt;
&lt;li&gt;理想状况下，一个单一的IP地址可以使用的端口数为4000个&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;私有空间地址&lt;a href=&quot;#私有空间地址&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;A类：10.0.0.0 - 10.255.255.255&lt;/li&gt;
&lt;li&gt;B类：172.16.0.0 - 172.31.255.255&lt;/li&gt;
&lt;li&gt;C类：192.168.0.0 - 192.168.255.255&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;NAT术语&lt;a href=&quot;#nat术语&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/NAT%20(3).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;内部本地——转换之前内部源地址的名字&lt;/li&gt;
&lt;li&gt;外部本地——转换之前目标主机的名字&lt;/li&gt;
&lt;li&gt;内部全局——转换之后内部主机的名字&lt;/li&gt;
&lt;li&gt;外部全局——转换之后外部目标主机名字&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# ip nat inside source static local-ip global-ip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# ip nat inside&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# ip nat outside&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router# show ip nat translations #查看配置情况&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# ip nat pool name start-ip end-ip {netmask netmask | prefix-length prefix-length}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# access-list access-list-number permit source [source-wildcard]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# ip nat inside source list access-list-number pool name&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router# show ip nat translations #查看配置情况&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(conflg)# access-list access-list-number permit source source-wildcard&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# ip nat inside source list access-list-number interface interface overload&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router# show ip nat translations #查看配置情况&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>OSI基础</title><link>https://www.sumi233.top/posts/CCNA/osi-basics/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/osi-basics/</guid><description>OSI基础</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;hr /&gt;
&lt;section&gt;&lt;h2&gt;模型结构&lt;a href=&quot;#模型结构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/image512f7952defa3ef1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;各层级作用详解&lt;a href=&quot;#各层级作用详解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;7层&lt;/strong&gt;	为用户提供各种应用服务，如文件传输、电子邮件等，是用户直接接触的层级&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6层&lt;/strong&gt;	负责数据的格式化、加密和压缩，确保数据的可读性，以及在不同系统间的互操作性&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5层&lt;/strong&gt;	管理用户会话的建立、维护和结束，确保数据传输的顺序和完整性&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4层&lt;/strong&gt;	负责端到端之间的通信，处理数据包的分段与重组，以及数据包的传输可靠性和正确性&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3层&lt;/strong&gt;	根据数据包的网络地址进行路由选择，实现不同网络之间的通信&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2层&lt;/strong&gt;	 负责将比特流转化为具有意义的数据帧，同时进行物理地址寻址、错误检测和纠正等&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1层&lt;/strong&gt;	负责传输比特流，主要关注硬件设备间如何传输数据&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;各层级代表协议&lt;a href=&quot;#各层级代表协议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;7层&lt;/strong&gt;	HTTP（Hypertext Transfer Protocol）、FTP（File Transfer Protocol）、SMTP（Simple Mail Transfer Protocol）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6层&lt;/strong&gt;	SSL/TLS（Secure Sockets Layer/Transport Layer Security）、JPEG、ASCII&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5层&lt;/strong&gt;	NetBIOS（Network Basic Input/Output System）、RPC（Remote Procedure Call）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4层&lt;/strong&gt;	TCP（Transmission Control Protocol）、UDP（User Datagram Protocol）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3层&lt;/strong&gt;	IP（Internet Protocol）、ICMP（Internet Control Message Protocol）、ARP（Address Resolution Protocol）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2层&lt;/strong&gt;	PPP（Point-to-Point Protocol）、HDLC（High-Level Data Link Control）、MAC（Media Access Control）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1层&lt;/strong&gt;	Ethernet、Token Ring、RS-232&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>OSPF基础</title><link>https://www.sumi233.top/posts/CCNA/ospf-basics/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/ospf-basics/</guid><description>OSPF基础</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;1.OSPF是一种链路状态路由协议，无路由循环（全局拓扑），RFC 2328&lt;/p&gt;&lt;p&gt;2.OSPF采用开放的协议，并非EIGRP一类仅思科可用的专有协议，这意味着OSPF可以在所有支持的路由器上运行&lt;/p&gt;&lt;p&gt;3.管理性距离：110&lt;/p&gt;&lt;section&gt;&lt;h3&gt;采用SPF算法计算达到目的地的最短路径&lt;a href=&quot;#采用spf算法计算达到目的地的最短路径&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;什么是链路（link）？= 路由器的接口&lt;/li&gt;
&lt;li&gt;什么叫状态（State）？= 是指接口以及其与邻居路由器之间的关系&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基本运行步骤&lt;a href=&quot;#基本运行步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;1.建立邻接关系（Establish router adjacencies）&lt;/p&gt;&lt;p&gt;2.必要的时候进行DR的选举（Elect the DR / BDR）&lt;/p&gt;&lt;p&gt;3.发现路由（Discover routes）&lt;/p&gt;&lt;p&gt;4.选择合适的路由器（Select appropriate routes）&lt;/p&gt;&lt;p&gt;5.维护路由信息（Maintain routing information）&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;网络类型&lt;a href=&quot;#网络类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;DMA&lt;a href=&quot;#dma&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;DMA 广播型多路访问&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(9).png&quot; width=&quot;434&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Point-To-Point&lt;a href=&quot;#point-to-point&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Point-to-Point 点对点
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(6).png&quot; width=&quot;413&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;NBMA&lt;a href=&quot;#nbma&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;NBMA 非广播型多路访问&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(7).png&quot; width=&quot;432&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;报文类型&lt;a href=&quot;#报文类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hello&lt;/strong&gt; 建立和维护OSPF邻居关系&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DBD&lt;/strong&gt; 链路状态数据库描述信息（描述LSDB中LSA头部信息）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LSR&lt;/strong&gt; 链路状态请求，向OSPF邻居请求链路状态信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LSU&lt;/strong&gt; 链路状态更新（包含一条或多条LSA）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LSAck&lt;/strong&gt; 对LSU中的LSA进行确认&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;OSPF三张表类型&lt;a href=&quot;#ospf三张表类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;邻居表（neighbor table）&lt;a href=&quot;#邻居表neighbor-table&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;OSPF用邻居机制来发现和维持路由的存在，邻居表储存了双向通信的邻居关系OSPF路由器列表信息。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;拓扑表（topology table）&lt;a href=&quot;#拓扑表topology-table&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;OSPF用LSA（link state Advertisement 链路状态通告）来描述网络拓扑信息，然后OSPF路由器用拓扑数据库来存储网络的这些LSA。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;OSPF路由表（routing table）&lt;a href=&quot;#ospf路由表routing-table&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;对链路状态数据库进行SPF（Dijkstra）计算，而得出OSPF路由表。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;RouterID&lt;a href=&quot;#routerid&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;用于标识OSPF路由器的ID，全网唯一性；可手动配置，也可以动态选举（有Loopback接口时，选择最高的Loopback IP地址；否则，选择最高活跃物理接口的IP地址）。&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;Router ID演示图&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(5).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;DR和BDR&lt;a href=&quot;#dr和bdr&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(12).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;为减小多路访问网络中的OSPF流量，OSPF会选举一个指定路由器（DR）和一个备用指定路由器（BDR）。&lt;/li&gt;
&lt;li&gt;选举规则：最高接口优先级被选作DR，如果优先级相等（默认为1），具有最高的路由器ID（Router-ID）的路由器被选举成DR，而且DR具有非抢占性&lt;/li&gt;
&lt;li&gt;指定路由器（DR）：DR负责使用该变化信息更新其他所有OSPF路由器（DRouter）&lt;/li&gt;
&lt;li&gt;备用指定路由器（BDR）：BDR会监控DR的状态，并在当前DR发生故障时接替其角色&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;建立邻接关系-Hello包&lt;a href=&quot;#建立邻接关系-hello包&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(10).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Hello包用来发现OSPF邻居并建立相邻关系，通过组播地址：224.0.0.5 发送给 ALLSPFRouters&lt;/li&gt;
&lt;li&gt;通告两台路由器建立相邻关系所必须统一的参数&lt;/li&gt;
&lt;li&gt;在以太网和帧中继网络等多路访问网络中选举指定路由器（DR）和备用指定路由器（BDR）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;OSPF metric&lt;a href=&quot;#ospf-metric&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;每个路由器都把自己当作根，并且给予累积成本（Cost值）来计算到达目的地的最短路径。&lt;/li&gt;
&lt;li&gt;Cost = 参考带宽（10^8）/接口带宽（b/s）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(11).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;LSA&lt;a href=&quot;#lsa&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;LSU&lt;a href=&quot;#lsu&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(1).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;路由器收到包含变化后的LSA的LSU后，更新自己的链路状态数据库，过一段时间（SPF延迟），对更新的链路状态数据库执行SPF算法，必要时更新路由表。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;LSA的泛洪-示例1&lt;a href=&quot;#lsa的泛洪-示例1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(2).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;路由器R3用224.0.0.6通知DR路由器及BDR的路由器&lt;/li&gt;
&lt;li&gt;DR、BDR监听224.0.0.6这一组播地址&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;LSA的泛洪-示例2&lt;a href=&quot;#lsa的泛洪-示例2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(3).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;DR利用组播地址224.0.0.5通知其它路由器&lt;/li&gt;
&lt;li&gt;所有的OSPF路由器监听224.0.0.5这一组播地址&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;OSPF区域&lt;a href=&quot;#ospf区域&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(8).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;在区域边界可以做路由汇总，减小了路由表&lt;/li&gt;
&lt;li&gt;减少了LSA泛洪的范围，有效的把拓扑变化控制在区域内，提高了网络的稳定性&lt;/li&gt;
&lt;li&gt;拓扑的变化影响可以只限制涉及本区域&lt;/li&gt;
&lt;li&gt;多区域提高了网络的扩展性，有利于组建大规模的网络&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;配置实践&lt;a href=&quot;#配置实践&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;基本配置&lt;a href=&quot;#基本配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# router ospf process-id #开启OSPF进程，process-id为进程id&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-router)# network address wildcard-mask area area-id #宣告特定网络到OSPF区域&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;section&gt;&lt;h4&gt;通配符掩码&lt;a href=&quot;#通配符掩码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;通配符是一个用于决定哪些IP地址位该精准匹配（0代表精准匹配）那些地址为被忽略的32位数值，通常用于处理访问控制列表（ACL）、OSPF、EIGRP等路由协议的网络通告。&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h5&gt;- 掩码&lt;/h5&gt;&lt;a href=&quot;#--掩码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;p&gt;1位表示网络位；0位表示主机位。掩码用于区分IP地址中的网络及主机部分&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h5&gt;- 通配符&lt;/h5&gt;&lt;a href=&quot;#--通配符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;p&gt;1位表示无所谓；0位表示需要严格匹配。通配符用于决定一个IP中的哪些位应该匹配&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;基本配置 单区域-实例&lt;/h3&gt;&lt;a href=&quot;#基本配置-单区域-实例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/OSPF%20(4).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# router ospf 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# network 192.168.12.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# router ospf 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# network 192.168.12.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# network 192.168.23.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# router ospf 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# network 192.168.23.0 0.0.0.255 area 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;最后，使用&lt;code&gt;show ip ospf neighbor&lt;/code&gt;命令，可以查看ospf配置是否成功配置生效。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>RIP基础</title><link>https://www.sumi233.top/posts/CCNA/rip-basics/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/rip-basics/</guid><description>RIP基础</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;RIP是一种内部网关协议（IGP），是一种动态路由选择协议，用于自治系统（AS）内的路由信息传递。&lt;/p&gt;&lt;p&gt;RIP协议基于距离矢量算法（Distance Vector Algorithms），使用“跳数”（metric）来衡量到达目的地址的路由距离。&lt;/p&gt;&lt;p&gt;RIP通过UDP报文进行路由进行路由信息交换，使用的端口为520.&lt;/p&gt;&lt;p&gt;RIP包括v1和v2两个版本&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;RIP的版本比较&lt;a href=&quot;#rip的版本比较&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;**RIP V1 **
有类路由协议
不支持VLSM
广播更新255.255.255.255&lt;/p&gt;&lt;p&gt;**RIP V2 **
无类路由协议
支持VLSM
组播更新224.0.0.9&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础运行步骤（四个定时器）&lt;a href=&quot;#基础运行步骤四个定时器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;开启RIP进程，宣告接口，开始接收报文，发送UDP报文&lt;/li&gt;
&lt;li&gt;根据收到的RIP报文构建自己的路由表&lt;/li&gt;
&lt;li&gt;每隔30S发送更新报文来更新维护路由表“更新定时器”&lt;/li&gt;
&lt;li&gt;路由器为自己的每条路由表项启动180S的“老化定时器”。180s内如果收到了更新报文，则重置定时器&lt;/li&gt;
&lt;li&gt;如果上面180S到期，则启动120S的“垃圾收集定时器”，同时将该路由表项度量值置为16&lt;/li&gt;
&lt;li&gt;120S过后，路由器仍未收到相应路由表项的更新，则路由器删除该表项&lt;/li&gt;
&lt;li&gt;当RIP设备收到对端cost为16的路由更新时，为防止路由震荡，启动“抑制定时器”，在这个定时器超时前，不再接受对端任何路由&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;触发更新&lt;a href=&quot;#触发更新&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;可以缩短网络收敛时间，一个路由表最多等待120S才能被删除（垃圾收集时间）；如果不存在触发更新，最多需要等待300S（老化时间+垃圾收集时间）&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;水平分割&lt;a href=&quot;#水平分割&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;RIP从某个接口学到的路由，不会从该接口再回发给邻居路由器。&lt;/li&gt;
&lt;li&gt;作用减少带宽损耗，防止路由环路。也解决了“坏消息传播得慢”&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;毒化逆转&lt;a href=&quot;#毒化逆转&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;一个接口学来的路由项，把度量值改为16再原路发回去，也可以避免环路发生，实践中使用比较少。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;抑制计时&lt;a href=&quot;#抑制计时&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;一条路由信息无效之后，一段时间内这条路由都处于抑制状态，即在一定时间内不再接收关于同一目的地址的路由更新。&lt;/li&gt;
&lt;li&gt;如果，路由器从一个网段上得知一条路径失效，然后，立即在另一个网段上得知这个路由有效。这个有效的信息往往是不正确的，抑制计时避免了这个问题，而且，当一条链路频繁起停时，抑制计时减少了路由的浮动，增加了网络的稳定性。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;报文类型&lt;a href=&quot;#报文类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;RIPV1 引用至华为文档&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/RIP%20(2).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;命令字段&lt;/strong&gt;（Command）：该字段用于标识RIP报文的类型。取值为1表示为Request报文，取值为2表示Response报文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;版本字段&lt;/strong&gt; （Version）：在RIP-1中，该字段取值为1。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;址族标识符&lt;/strong&gt; （Address family identifier）：该字段值为2表示IP协议，如果该报文为Request报文并且用于向直连路由设备请求整张路由表，则该字段值被设置为0，同时这个Request报文中包含且仅包含一个路由条目，该路由的目的网络地址为0.0.0.0，度量值为16。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP地址&lt;/strong&gt; （IP address）：路由的目的网络地址。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;度量值&lt;/strong&gt; （Metric）：该路由的度量值。&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;RIP V2 引用至华为文档&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/RIP%20(1).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;命令字段&lt;/strong&gt; （Command）：该字段用于标识RIP报文的类型。取值为1表示为Request报文，取值为2表示Response报文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;版本字段&lt;/strong&gt; （Version）：在RIP-2中，该字段取值为2。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;地址族标识符&lt;/strong&gt; （Address Family Identifier）：与RIP-1类似。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路由标记&lt;/strong&gt;（Route Tag）：用于为路由设置标记信息，可以在路由策略中根据Tag对路由进行灵活的控制。例如，当一条外部路由被引入RIP从而形成一条RIP路由时，RIP可以为该路由设置路由标记，当这条路由在整个RIP路由域传播时，路由标记不会丢失。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP地址&lt;/strong&gt; （IP Address）：路由的目的网络地址。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;网络掩码&lt;/strong&gt; （Subnet Mask）：用于存储路由条目的目的网络掩码，RIP-2进而支持可变长子网掩码（VLSM，Variable Length Subnet Mask），支持路由聚合和CIDR（Classless Inter-Domain Routing）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;下一跳&lt;/strong&gt; （Next Hop）：RIP-2定义了该字段，避免路由设备在多路访问网络上可以表面次优路径现象，在广播网上可以选择到最优下一跳地址。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;度量值&lt;/strong&gt; （Metric）：该路由的度量值。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;配置实践&lt;a href=&quot;#配置实践&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# router rip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# network address #宣告网段&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# version 2 #使用RIPv2版本的RIP协议&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>STP高级</title><link>https://www.sumi233.top/posts/CCNA/Spanning%20Tree%20And%20More/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/Spanning%20Tree%20And%20More/</guid><description>STP高级</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;STP基础部分&lt;a href=&quot;#stp基础部分&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;技术背景&lt;a href=&quot;#技术背景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728646455824-e63f2ae6-4209-407f-9b5d-2350fc785fc8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;接入层交换机单链路上联，存在单链路故障&lt;/li&gt;
&lt;li&gt;物理链路冗余，解决了单链路故障问题，但是二层环境存在环路&lt;/li&gt;
&lt;li&gt;另一个问题的单点故障，如果任意一个汇聚设备宕机，将直接导致下联的接入网络挂掉&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728991853223-aeb82855-6fc2-4071-a881-6ef8cea0a009.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;生成树可以有效的解决这个问题&lt;/li&gt;
&lt;li&gt;通过生成树协议，在逻辑上将特定端口进行block，从而实现物理上存在冗余环境，而二层又阻止环路的产生&lt;/li&gt;
&lt;li&gt;当拓扑发生变更的时候，生成树协议能够探测这些变化，并且及时自动的调整接口状态，从而适应网络拓扑的变化，实现链路冗余&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;生成树的标准&lt;a href=&quot;#生成树的标准&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;802.1D&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PVST+ 思科Cisco私有协议，每个VLAN拥有一颗单独的生成树实例&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;802.1W RSTP&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;802.1S MSTP&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;PVRST+ Cisco私有，对RSTP的增强版&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;STP的操作&lt;a href=&quot;#stp的操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728992604910-8b3f979a-e693-4e7e-9bf2-931a2daaa69c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728992769109-d61b90f4-6537-495c-b1bf-23419d750677.png?x-oss-process=image%2Fformat%2Cwebp%2Fresize%2Cw_404%2Climit_0&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728993147373-c6c3f19e-038f-4f1b-a1b7-a3c112d6141f.png?x-oss-process=image%2Fformat%2Cwebp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;每个广播域选择一个根桥&lt;/li&gt;
&lt;li&gt;每个非根桥上选择一个根端口&lt;/li&gt;
&lt;li&gt;每个段选择一个指定端口&lt;/li&gt;
&lt;li&gt;选择一个非指定端口
&lt;ul&gt;
&lt;li&gt;根端口：具有最低根路径的接口要考虑的因素：&lt;/li&gt;
&lt;li&gt;1.最低根桥ID&lt;/li&gt;
&lt;li&gt;2.到根桥的最低路径成本&lt;/li&gt;
&lt;li&gt;3.最低的发送者网桥ID&lt;/li&gt;
&lt;li&gt;4.最低的发送者端口ID&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;端口的状态&lt;a href=&quot;#端口的状态&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728993578313-21b82a1c-9151-47a9-b82f-ff5f9eb9e944.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Disable		不收发任何报文&lt;/li&gt;
&lt;li&gt;Blocking		不接受也不转发帧，接收但不发送BPDU，不学习MAC地址&lt;/li&gt;
&lt;li&gt;Listening		不接受也不转发帧，接收并且发送BPDU，不学习MAC地址&lt;/li&gt;
&lt;li&gt;Learning		不接受也不转发帧，接受并且发送BPDU，学习MAC地址&lt;/li&gt;
&lt;li&gt;Forwarding	接受并转发帧，接受并且发送BPDU，学习MAC地址&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728993852668-c4c616b2-00e0-47a0-b0ee-a1affc05056a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;STP 拓扑变更&lt;a href=&quot;#stp-拓扑变更&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;TCN BPDU概述&lt;/li&gt;
&lt;li&gt;当网络拓扑出现变更的时候，最先意识到变化的交换机将发送TCN BPDU&lt;/li&gt;
&lt;li&gt;在发生以下时间时，交换机将发送TCN：
&lt;ul&gt;
&lt;li&gt;对于正在处于转发和监听状态的接口，过渡到Block状态（链路故障的情况）&lt;/li&gt;
&lt;li&gt;端口进入转发状态，并且网桥已经拥有指定端口&lt;/li&gt;
&lt;li&gt;非root网桥在它指定的端口收到TCN&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728994204949-b55797be-552d-4227-9276-c7fbaea939b4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728994221639-299017dc-8cba-42b7-badd-7c7c28a0e771.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;SwitchA挂掉&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;SwitchB最先检测到拓扑变化，于是产生TCNBPDU并从根端口发送出去(因为根端口是朝着根桥的方向)，B将连续发送TCN BPDU直到指定交换机C发送TCNACK进行确认&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;SwitchB收到这个TCN BPDU，回送一个TCN ACK进行确认，同时向自己的根端口转发这个TCN BPDU&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Root收到这个TCN，回送一个TCN ACK给C&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Root修改自己的配置BPDU，以此来通告整个交换网络关于拓扑变更的情况。Root在配置BPDU中设置一段时间的拓扑变更(TC标志)，这段时间等于转发延迟+Max.Age，默认35S&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;当交换机收到Root发出的这个TC标志置位的配置BPDU，它们使用转发延迟计时器(默认15S)来更新其MAC地址表中的条目。也就是说条目的寿命由原来的300S的默认值变成15S，这样能保证MAC地址条目更快速的刷新。交换机将持续这个过程，直到不再从Root收到TC BPDU消息为止。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;PVST+&lt;a href=&quot;#pvst&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728994621909-130e73a6-de80-47ad-ac46-64d0b5b29a38.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;扩展的SystemID&lt;a href=&quot;#扩展的systemid&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728994870216-a6eb1a0d-74e6-4cab-ad8c-b2e3003d0e4b.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;CISCO CATALYST交换机的MAC地址池最多可以容纳1024个地址，交换机的型号决定了可用MAC的数目，并不是所有catalyst交换机都能支持到这么多个MAC&lt;/li&gt;
&lt;li&gt;这些MAC地址作为VLAN生成树中的网桥ID的MAC地址部分。不同的交换机型号支持不同的可用MAC地址数目。交换机依照次序分配MAC地址&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Show run int | include bia&lt;/code&gt;能看到所有的MAC，其中第一个MAC将被生成树使用，也就是CPU的MAC。接下去就是每个以太网接口的MAC。&lt;/li&gt;
&lt;li&gt;我们知道交换机能够支持的VLAN的数据是很庞大的，如果开启PVST+，每个VLAN-棵生成树，而没棵生成树都要有一个独立的标识，都需要耗费一个MAC的话，那么MAC地址池肯定是无法承受的。&lt;/li&gt;
&lt;li&gt;因此需要使用到MAC地址缩减方案&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Portfast&lt;a href=&quot;#portfast&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729039809369-9c40389d-88da-496d-bca9-25a6d6234403.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;在交换机上，将连接主机的接口配置为portfast&lt;/li&gt;
&lt;li&gt;Portfast接口可以绕过listening和learning状态直接进入forwarding状态&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;RSTP&lt;a href=&quot;#rstp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;概述&lt;a href=&quot;#概述&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;802.1w&lt;/li&gt;
&lt;li&gt;端口角色：根端口、指定端口、替代端口、备份端口&lt;/li&gt;
&lt;li&gt;端口状态：转发、丢弃、学习&lt;/li&gt;
&lt;li&gt;在思科catalyst交换机上，pvst+（pvrst+）是基于RSTP实现的perVLAN版本&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;BPDU&lt;a href=&quot;#bpdu&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729044484996-3b6cd7be-f733-4168-9777-129aea9b5f10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728992801739-4802c0b8-889f-443f-829d-086fd6a3fd90.png?x-oss-process=image%2Fformat%2Cwebp%2Fresize%2Cw_750%2Climit_0&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;00	未知&lt;/li&gt;
&lt;li&gt;01	替代/备份&lt;/li&gt;
&lt;li&gt;10	根端口&lt;/li&gt;
&lt;li&gt;11	指定端口&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;BPDUs检测过程&lt;a href=&quot;#bpdus检测过程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/jpeg/44908083/1729045900649-8fc37524-c7fb-439f-b6ab-d3c728338bb8.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;B丢失了到Root的路径&lt;/li&gt;
&lt;li&gt;认为自己是Root&lt;/li&gt;
&lt;li&gt;于是发送“我就是Root”的次优BPDU&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/jpeg/44908083/1729046055735-49f106e1-3921-4aa5-a6a3-a057c15dee87.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;C知道Root还活着&lt;/li&gt;
&lt;li&gt;立即发送包含Root信息的BPDU给B&lt;/li&gt;
&lt;li&gt;B接受BPDU，并且把连接C的接口设定为根端口&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;BPDUGuard&lt;a href=&quot;#bpduguard&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;该接口收到BPDU报文后，会立即切换到err-disable状态&lt;/li&gt;
&lt;li&gt;常搭配portfast特性在接口上一起使用，用于连接主机&lt;/li&gt;
&lt;li&gt;可在接口上激活，也可在全局模式上配置，两者有所不同&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;边缘端口edge-ports&lt;a href=&quot;#边缘端口edge-ports&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/jpeg/44908083/1729123357180-16fc75cb-fb7f-4044-a7d7-c22dc6304f23.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;RSTP定义的端口类型与postfast十分类似&lt;/li&gt;
&lt;li&gt;因为这些接口用于连接主机，所以一般不会产生环路。这写端口可以跳过LST或LRN直接过渡到转发状态&lt;/li&gt;
&lt;li&gt;而且当这这些接口up down的时候不会引起拓扑变更&lt;/li&gt;
&lt;li&gt;另外，边缘端口收到BPDU，则立即丢失边缘端口的特征，变成一个普通的Spanning Tree接口&lt;/li&gt;
&lt;li&gt;在catalyst交换机上，可以用postfast关键字来进行手工配置&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Rapid Transition to Fowarding State&lt;a href=&quot;#rapid-transition-to-fowarding-state&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/jpeg/44908083/1729124004050-d0224907-d9d7-40ae-adfa-a6b2fd9994e7.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;RSTP能够在边缘端口及P2P链路上快速过度。&lt;/li&gt;
&lt;li&gt;RSTP的链路类型是通过接口的双工状态自动获取到的，如果接口时半双工，那么链路类型是shared port，如果是全双工那么就是p2p。&lt;/li&gt;
&lt;li&gt;当然，接口的链路类型可以通过命令修改，接口模式下：&lt;code&gt;spanning-tree link-type ？&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h4&gt;链路类型&lt;a href=&quot;#链路类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;P2P（点对点）&lt;/li&gt;
&lt;li&gt;shared port（共享端口）&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;收敛对比：802.1D
&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729124300768-b593c142-1bfe-4859-a852-dbc976dad390.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;A及Root之间新增链路Link1&lt;/li&gt;
&lt;li&gt;A及root在link1两端的接口都进入Listening状态，A将收到Root发出来的BPDU&lt;/li&gt;
&lt;li&gt;A将BPDU从自己的指定端口发送出去，BPDU被泛洪到网络中&lt;/li&gt;
&lt;li&gt;B和C收到这个更优的BPDU，继续向网络中泛洪&lt;/li&gt;
&lt;li&gt;数秒后，D收到这个BPDU，Block掉端口P1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Tips：&lt;strong&gt;由于缺乏feednack机制，A连接root的接口从listening到Forwarding，需要经历15*2s的延迟。此时A、B、C下联的用户流量就出现了问题（因为D收到更优的BPDU后，将P1口block了，这时候ABC相当于在A的根端口过渡到forwarding之前都处于网络的“隔离地带”）&lt;/strong&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;收敛对比：RSTP&lt;a href=&quot;#收敛对比rstp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729124922667-c1a64149-b6c9-4514-9853-820ffa2b3a3e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;A及Root之前新增链路Link1&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729124961966-9914c0a0-fd55-4c36-aa6f-36f73a56c1c3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;A及Root在Link1两端的接口在up之后进入designated blocking。然后双方交互BPDU消息。这个过程实际上是一个协商的过程&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729125063559-0f3a0c30-32df-4e60-a446-c1f2a3ca47dd.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;A在收到Root发送的BPDU后，将自己的所有非边缘端口Block（这个过程称为同步sync），并且回送一个agreement消息给Root&lt;/li&gt;
&lt;li&gt;在此之后，Root及A在link1上的端口立即都过渡到转发状态。而网路目前是没有环路的，A往下的网路目前是切断的&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729125279663-95c22911-ebd8-44ab-b706-67c5fab68886.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;A与B和C之间，开始一轮新的协商，BC收到A发送的bPDU后，完成同步Sync过程，将自己的非边缘端口Block掉，然后都向A回送agreement信息。同时ABC互联的接口进入转发状态。在BC同步操作的过程中，B下联全是主机，因此没有端口被Blcok（已经完成同步）；而C要block掉连接D的端口&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729125689365-ecd8155a-fb87-4009-82a9-c104aafbd310.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;完成上一步后，生成树状态如图&lt;/li&gt;
&lt;li&gt;最终BPDU到达D，D将P1口Block掉&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Tips：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;在RSTP收敛过程中，耗费是时间仅仅是BPDU从Root泛洪到网络末端的时间，不用受到任何Timer的限制，直接绕过两个转发延迟时间。因此收敛速度更快。&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;有两点需注意:
&lt;ul&gt;
&lt;li&gt;交换机之间的这种协商机制只在P2P链路上被执行&lt;/li&gt;
&lt;li&gt;边缘端口的配置非常重要，如果配置不当有可能会在同步过程中被BLOCK。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Proposal/Agreement Squence&lt;a href=&quot;#proposalagreement-squence&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/jpeg/44908083/1729126908014-9ffda30f-cba3-4c31-8607-345dbd34c1e9.jpeg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729126942017-56bd8d43-41d8-457f-a4c2-18f7ec77ea7c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Root和A之间新增了一条链路，链路两端的接口在收到对方发送的BPDU前是designated blocking状态&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;当一个被选举为指定端口的接口在discarding或learning状态(目只在这个状态)，它在其发送的BPDU中进行proposalbit置位。这就是步骤1的P0的情况&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1729127237066-9878cdaa-4a0b-46a8-b820-0687f9cb411e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;在A完成同步后，A就可以将新选出的根端口unblock并且发送一个agreement消息给Root。这个agreement消息是A的proposal消息的拷贝，但是agreement bit置位了。&lt;/li&gt;
&lt;li&gt;如此一来，P0就收到了应答，立即转为forwarding。注意这时候P3接口仍处于designateddiscarding状态，于是它向它的邻居网桥去发送proposal，而且也在积极等待回传的agreement以便进入forwarding状态&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Cisco STP toolkit&lt;a href=&quot;#cisco-stp-toolkit&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Portfast&lt;/li&gt;
&lt;li&gt;BPDUGuard&lt;/li&gt;
&lt;li&gt;BPDUFilter&lt;/li&gt;
&lt;li&gt;UplinkFast&lt;/li&gt;
&lt;li&gt;BackboneFast&lt;/li&gt;
&lt;li&gt;RootGuard&lt;/li&gt;
&lt;li&gt;LoopGuard&lt;/li&gt;
&lt;li&gt;UDLD&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# spanning-tree vlan-id    #激活特定VLAN的stp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# spanning-tree vlan vlan-id priorty pri    #配置桥优先级，这里注意是perVLAN的，优先级默认3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# spanning-tree vlan vlan-id root {primary | secondary} [diameter diameter] #设置主根次根，该交换机在默认优先级的状态下vlan优先级为24576，如果是secondary，则为28672&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-if)# spanning-tree [vlan vlan-id] cost cost&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-if)# spanning-tree [vlan vlan-id] post-priority pri&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# spanning-tree [vlan vlan-id] hello-time sec&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# spanning-tree [vlan vlan-id] forward-time sec&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# spanning-tree [vlan vlan-id] max-time sec&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# spanning-tree postfast default&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config-if)# spanning-tree portfast [trunk]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>静态路由+思科系统操作</title><link>https://www.sumi233.top/posts/CCNA/static-routing-and-cisco-system-ops/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/static-routing-and-cisco-system-ops/</guid><description>静态路由+思科系统操作</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;静态路由部分&lt;a href=&quot;#静态路由部分&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;路由是指从源主机到目的主机的转发过程&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;路由器的工作内容&lt;a href=&quot;#路由器的工作内容&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;路由器知道目标地址&lt;/li&gt;
&lt;li&gt;发现到达目标地址的可能的路由&lt;/li&gt;
&lt;li&gt;选择最佳路径（路由表）&lt;/li&gt;
&lt;li&gt;维护路由信息&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;主要特点&lt;a href=&quot;#主要特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;静态路由需要管理员根据实际需要一条条自己手动配置，路由器不会自动生成所需的静态路由的。静态路由中包括目标节点或目标网络的IP地址，还可以包括下一跳IP地址（通常是下一个路由器与本地路由器连接的接口IP地址），以及在本路由器上使用该静态路由时的数据包出接口等。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;路由路径相对固定&lt;a href=&quot;#路由路径相对固定&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;因为静态路由是手动配置的，静态的，所以每个配置的静态路由在本地路由器上的路径基本上是不变的，除非由管理员自己修改。另外，当网络的拓扑结构或链路的状态发生变化时，这些静态路由也不能自动修改，需要网络管理员需要手工去修改路由表中相关的静态路由信息。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;永久存在&lt;a href=&quot;#永久存在&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;也因为静态路由是由管理员手工创建的，所以一旦创建完成，它会永久在路由表中存在的，除非管理员自己删除了它，或者静态路由中指定的出接口关闭，或者下一跳IP地址不可达。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;不可通告性&lt;a href=&quot;#不可通告性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;静态路由信息在默认情况下是私有的，不会通告给其它路由器，也就是当在一个路由器上配置了某条静态路由时，它不会被通告到网络中相连的其它路由器上。但网络管理员还是可以通过重发布静态路由为其它动态路由，使得网络中其它路由器也可获此静态路由。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;单向性&lt;a href=&quot;#单向性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;静态路由是具有单向性的，也就是它仅为数据提供沿着下一跳的方向进行路由，不提供反向路由。所以如果你想要使源节点与目标节点或网络进行双向通信，就必须同时配置回程静态路由。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;递归性&lt;a href=&quot;#递归性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;静态路由没有建立邻接关系的Hello包，静态路由也不会被通告邻居路由器，所以它的下一跳是路径中其它路由器中的任一一个接口，只是能保证到达下一跳就行了。这就是静态路由的“递归性”。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;适用于小型网络&lt;a href=&quot;#适用于小型网络&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;静态路由一般适用于比较简单的小型网络环境，因为在这样的环境中，网络管理员易于清楚地了解网络的拓扑结构，便于设置正确的路由信息。同时小型网络所需配置的静态路由条目不会太多。如果网络规模较大，拓扑结构比较复杂，则不宜采用静态路由，因为这样的配置工作量实在太大。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;协议&lt;a href=&quot;#协议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;被动路由协议（Routed protocols）：用来在路由器之间传递用户的信息&lt;/li&gt;
&lt;li&gt;主动路由协议（Routing protocols）：用于维护路由器的路由表&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;路由的来源&lt;a href=&quot;#路由的来源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;直连路由-直接连接到路由器上的网络&lt;/li&gt;
&lt;li&gt;静态路由-管理员手工构建路由器表&lt;/li&gt;
&lt;li&gt;动态路由-路由器之间动态学习到的路由表&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;静态路由的配置&lt;a href=&quot;#静态路由的配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R1(config)# ip route network-address subnet-mask {ip-add|exit-interface}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;故障排查&lt;a href=&quot;#故障排查&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Ping-测试连通性&lt;/li&gt;
&lt;li&gt;Traceroute-追踪两段中的每一跳&lt;/li&gt;
&lt;li&gt;Show IP route-用于显示路由表&lt;/li&gt;
&lt;li&gt;Show IP interface brief-接口信息摘要&lt;/li&gt;
&lt;li&gt;show cdp neighbors detail-用于收集毗邻信息&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;思科系统操作&lt;a href=&quot;#思科系统操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;路由器组件&lt;a href=&quot;#路由器组件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/image8c1410e694adfd3b.md.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;路由器的组成及功能&lt;a href=&quot;#路由器的组成及功能&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;CPU-执行操作系统的指令&lt;/li&gt;
&lt;li&gt;随机访问存储器（RAM）-RAM中的内容断电丢失
&lt;ul&gt;
&lt;li&gt;运行操作系统&lt;/li&gt;
&lt;li&gt;运行配置文件&lt;/li&gt;
&lt;li&gt;IP路由表&lt;/li&gt;
&lt;li&gt;ARP 缓存&lt;/li&gt;
&lt;li&gt;数据包缓冲区&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;制度存储器（ROM）
&lt;ul&gt;
&lt;li&gt;bootstrap指令&lt;/li&gt;
&lt;li&gt;基本的自检软件&lt;/li&gt;
&lt;li&gt;迷你版IOS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;非易失RAM（NVRAM）
&lt;ul&gt;
&lt;li&gt;存储启动配置&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;运存（FLASH）
&lt;ul&gt;
&lt;li&gt;运行操作系统（Cisco IOS）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Interfaces
&lt;ul&gt;
&lt;li&gt;拥有多种物理接口用于连接网络接口类型举例&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;路由器启动多个主要步骤&lt;a href=&quot;#路由器启动多个主要步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;检测路由器硬件
&lt;ul&gt;
&lt;li&gt;Power-On self Test（POST）&lt;/li&gt;
&lt;li&gt;执行bootstrap&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;定位加载Cisco IOS软件
&lt;ul&gt;
&lt;li&gt;定位IOS&lt;/li&gt;
&lt;li&gt;加载IOS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;定位加载启动配置文件或进入配置模式
&lt;ul&gt;
&lt;li&gt;启动程序搜寻配置文件&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;访问CLI的方法&lt;a href=&quot;#访问cli的方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/imageeff692d72ed7c5bb.md.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;控制台&lt;/li&gt;
&lt;li&gt;Telnet或者SSH&lt;/li&gt;
&lt;li&gt;辅助端口&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;使用CLI的帮助&lt;a href=&quot;#使用cli的帮助&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;命令提示及补全&lt;/li&gt;
&lt;li&gt;命令语法检查&lt;/li&gt;
&lt;li&gt;热键和快捷方式&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Cisco IOS主要模式&lt;a href=&quot;#cisco-ios主要模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/image3e21dadccda03905.md.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;用户执行模式 ”&amp;gt;”&lt;/li&gt;
&lt;li&gt;特权执行模式 ”#”&lt;/li&gt;
&lt;li&gt;全局配置模式&lt;/li&gt;
&lt;li&gt;其他特定配置模式&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;全局配置模式&lt;a href=&quot;#全局配置模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;从全局配置模式可进入多种不同的配置模式。其中每种模式可以用于配置IOS设备的特定部分或特定功能。下表列出了这些模式中的一小部分&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;接口模式&lt;a href=&quot;#接口模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;用于配置一个网络接口（Fa0/0、s0/0/0等）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;线路模式&lt;a href=&quot;#线路模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;用于配置一条线路（实际线路或者虚拟线路）（例如控制台、aux或vty等等）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;路由配置模式&lt;a href=&quot;#路由配置模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;用于配置一个路由选择协议进程的相关参数&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;模式的切换&lt;a href=&quot;#模式的切换&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/image72ccdef2cf22f781.md.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;基础指令&lt;a href=&quot;#基础指令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# hostname device-name #配置设备名称&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# line console 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-line)# password password&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# login&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# enable password password&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# enable secret password&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# line vty 0 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-line)# password password&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# login&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R1# write&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R1# copy running-config startup-config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R1# erase startup-config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;R1# delete flash:config.text&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>STP基础</title><link>https://www.sumi233.top/posts/CCNA/stp-basics/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/stp-basics/</guid><description>STP基础</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;STP（Spanning Tree Protocol）是一个用于局域网中消除环路的协议，它的标准是IEEE 802.1D。STP通过将部分冗余链路强制为阻塞状态，其他链路处于转发状态，将环形网络结构修剪成无环路的树形网络结构，可实现消除环路。当处于转发状态的链路不可用时，STP重新配置网络，并激活合适的备用链路状态，恢复恢复网络连通性。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;为什么需要STP&lt;a href=&quot;#为什么需要stp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;在一个复杂的网络环境中，由于冗余备份的需要，网络设计者都倾向于在设备之间部署多条物理链路，其中一条作为主要链路，其他链路作为备份，偶然或必然中都会导致环路产生。环路会产生广播风暴，最终会导致整个网络资源被耗尽，网络瘫痪不可用。环路还会引起MAC地址表震荡导致MAC表项被破坏。&lt;/li&gt;
&lt;li&gt;STP技术可以有效解决环路问题，将彼此交互信息发现网络中的环路，将部分冗余链路强制为阻塞状态，其他链路处于转发状态。最终将环形网络结构修剪成无环型的树形网络结构，从而防止报文在环形网络中不断增生和无限循环，避免设备由于重复接收相同的报文造成处理能力下降。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;STP的操作&lt;a href=&quot;#stp的操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727313654113-f40a48de-3711-42bf-9e50-fc309acbbd5b.png&quot; alt=&quot;1&quot; title=&quot;1&quot; /&gt;&lt;figcaption&gt;1&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;每个广播域选择一个根桥&lt;/li&gt;
&lt;li&gt;每个非根桥选择一个根端口
&lt;figure&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727316127820-ee941b9c-37ba-487d-99ec-32cac777b13f.png&quot; alt=&quot;2&quot; title=&quot;2&quot; /&gt;&lt;figcaption&gt;2&lt;/figcaption&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;根端口：具有最低根路径的接口&lt;/p&gt;&lt;p&gt;要考虑的因素：&lt;/p&gt;&lt;p&gt;1.最低的根桥ID&lt;/p&gt;&lt;p&gt;2.最低的根路径代价&lt;/p&gt;&lt;p&gt;3.最低发送者桥ID&lt;/p&gt;&lt;p&gt;4.最低端口ID&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;每个段选择一个指定端口&lt;/li&gt;
&lt;li&gt;选择一个非指定端口&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;每个广播域选择一个根桥&lt;a href=&quot;#每个广播域选择一个根桥&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727314331920-e4946ffd-1366-4585-b677-8ebf8399181c.png&quot; alt=&quot;3&quot; title=&quot;3&quot; /&gt;&lt;figcaption&gt;3&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;BPDU&lt;a href=&quot;#bpdu&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727314583701-36bf04b5-c74c-427e-a2b9-9b9d7cb5bf47.png&quot; alt=&quot;4&quot; title=&quot;4&quot; /&gt;&lt;figcaption&gt;4&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Root ID：由2字节优先级和6字节MAC组成&lt;/li&gt;
&lt;li&gt;Cost of Path：路径开销是从Switch到Root Bridge的方向叠加的&lt;/li&gt;
&lt;li&gt;Port ID：端口信息由1字节端口优先级和1字节端口ID组成&lt;/li&gt;
&lt;li&gt;Maximum Time：当一段时间未收到任何BPDU，生存期达到Max Age时，网球则认为该端口连接的链路发生故障。默认20秒&lt;/li&gt;
&lt;li&gt;Hello Time：发送BPDU的周期，默认为2秒&lt;/li&gt;
&lt;li&gt;Forward Delay：BPDU全网传输延迟，默认15秒&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;STP路径开销&lt;a href=&quot;#stp路径开销&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727314963144-5d6709e4-d43e-47f7-be99-968a0fb0dc75.png&quot; alt=&quot;5&quot; title=&quot;5&quot; /&gt;&lt;figcaption&gt;5&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;最短路径是cost累加，而cost是基于链路的速率的&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;广播风暴&lt;a href=&quot;#广播风暴&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727312487194-1733d1ec-81ba-467c-bea1-76866d54f980.png&quot; alt=&quot;6&quot; title=&quot;6&quot; /&gt;&lt;figcaption&gt;6&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Host X发送广播帧&lt;/li&gt;
&lt;li&gt;交换机继续没完没了的更新广播流量&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;多帧复制&lt;a href=&quot;#多帧复制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727312759517-58f63db8-d92d-470c-ad67-dd757a1b61ff.png&quot; alt=&quot;7&quot; title=&quot;7&quot; /&gt;&lt;figcaption&gt;7&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Host X 发送一个单播数据帧给Router Y&lt;/li&gt;
&lt;li&gt;Router Y的Mac地址还没有被每个交换机学习到&lt;/li&gt;
&lt;li&gt;Router Y接收到两份相同的数据帧的拷贝&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;MAC表紊乱&lt;a href=&quot;#mac表紊乱&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727313026522-4391813b-1ffe-44fd-b1a8-b991d93ae6e3.png&quot; alt=&quot;8&quot; title=&quot;8&quot; /&gt;&lt;figcaption&gt;8&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Host X 发送一个单播数据给Router Y&lt;/li&gt;
&lt;li&gt;Router Y的MAC地址还没有被每个交换机学习到&lt;/li&gt;
&lt;li&gt;switches A and B 在Port1上学习到Host X的MAC地址&lt;/li&gt;
&lt;li&gt;到达Router Y的数据帧被泛洪&lt;/li&gt;
&lt;li&gt;switches A and B 不正确的在Port2上学习到Host X的MAC地址&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;STP的端口状态&lt;a href=&quot;#stp的端口状态&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727334117182-439a3d3b-da1e-4c91-9df5-4a9566bc64b3.png&quot; alt=&quot;9&quot; title=&quot;9&quot; /&gt;&lt;figcaption&gt;9&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;失效(disabled) - 该端口只是相应网管消息，并且必须先转到阻塞状态。这种状态可以是由于端口的物理状（如端口物理层没有up）态导致的，也可能是管理员手工讲端口关闭。&lt;/li&gt;
&lt;li&gt;阻塞(blocking) - 处于这个状态的端口不能够参与转发数据报文，但可以接收BPDU配置消息，并交给CPU处理。不过不能发送配置BPDU消息，也不能进行地址学习。&lt;/li&gt;
&lt;li&gt;监听(listening) - 处于这个状态的端口不参与数据转发，也不进行地址学习，但可以接收并发送BPDU配置消息。&lt;/li&gt;
&lt;li&gt;学习(learning) - 处于这个状态的端口不能转发数据，但是开始地址学习，并可以接收、处理和发送BPDU配置消息。&lt;/li&gt;
&lt;li&gt;转发(forwarding) -一旦端口进入该状态，就可以转发任何数据，同时也进行地址学习和BPDU配置消息的接 收、处理和发送。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>VLAN基础</title><link>https://www.sumi233.top/posts/CCNA/vlan-basics/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/vlan-basics/</guid><description>VLAN基础</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;简介&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727261880185-f61475a1-7523-4625-bd01-30f41e930bec.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;VLAN即虚拟局域网，是将一个物理的LAN在逻辑上划分成多个广播域的通讯技术&lt;/li&gt;
&lt;li&gt;每个VLAN内可以互相通讯，而每个VLAN之间是完全隔离开的，并不能直接互通，每个VLAN间的广播报文就被隔离开来。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;VLAN的作用&lt;a href=&quot;#vlan的作用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;**限制广播域：**广播域被限制在一个VLAN之中，节省了带宽，提升网络处理的效率&lt;/li&gt;
&lt;li&gt;**增强局域网的安全性：**不同VLAN之间的报文广播互相隔离，有效提升安全性&lt;/li&gt;
&lt;li&gt;**提升了局域网的稳定性：**单个VLAN局域网出问题下机时不会影响到其他的VLAN正常运行&lt;/li&gt;
&lt;li&gt;**灵活构建虚拟工作组：**不同需求的用户划分到不同的VLAN之间，各个VLAN间发挥不同作用&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;VLAN的特点&lt;a href=&quot;#vlan的特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;一个VLAN中所有设备都是在同一广播域内；广播不能跨越VLAN传播&lt;/li&gt;
&lt;li&gt;一个VLAN为一个逻辑子网；由被配置为此VLAN成员的设备组成，不同VLAN间需通过路由器实现互相通讯&lt;/li&gt;
&lt;li&gt;VLAN中成员多基于Switch端口号码，划分VLAN就是对Switch接口划分&lt;/li&gt;
&lt;li&gt;VLAN工作于OSI参考模型的第二层&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;VLAN的范围&lt;a href=&quot;#vlan的范围&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727261984139-0609b985-a483-4055-bdee-b2c57a47cba0.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;VLAN 1-1001皆可正常使用，1范围无法进行删除，1001无法进行创建使用和删除&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;接口类型&lt;a href=&quot;#接口类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;Trunk接口&lt;a href=&quot;#trunk接口&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727261657279-d246491a-12c9-465a-9ad7-2bdcddc31dee.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;Trunk一般用于路由器，交换机，AP间以及可同时收发Tagged帧和Untagged帧的终端之间支持互连，它可以允许多个VLAN的帧带Tag通过，但只允许一个VLAN的帧从该类接口上发出时不带Tag（即剥除Tag）。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Access接口&lt;a href=&quot;#access接口&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Access接口一般用于和不能识别Tag的用户终端（如用户主机、服务器等）相连，或者不需要区分不同VLAN成员时使用。它只能收发Untagged帧，且只能为Untagged帧添加唯一VLAN的Tag。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Hybird接口&lt;a href=&quot;#hybird接口&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Hybrid接口既可以用于连接不能识别Tag的用户终端（如用户主机、服务器等）和网络设备（如Hub），也可以用于连接交换机、路由器以及可同时收发Tagged帧和Untagged帧的语音终端、AP。它可以允许多个VLAN的帧带Tag通过，且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag（即不剥除Tag）、某些VLAN的帧不带Tag（即剥除Tag）。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Mac硬件地址&lt;a href=&quot;#mac硬件地址&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727261710061-f3a8792b-648d-4b3e-a4f9-9658ce187a77.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;MAC地址有48位，通常表示为点十六进制数。&lt;/li&gt;
&lt;li&gt;MAC地址全球唯一，有IEEE对这些地址进行管理的和分配。&lt;/li&gt;
&lt;li&gt;每个地址由两部分组成，分别是供应商代码和序列号。其中前24位二进制代表该供应商代码。剩下的24位由厂商自己分配。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;802.1Q Tag&lt;a href=&quot;#8021q-tag&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727253192833-a4d3a08b-6a08-473c-89f5-a728f93219aa.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;802.1Q 帧标记&lt;a href=&quot;#8021q-帧标记&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;默认情况下，在802.1Q Trunk上对所有的VLAN打Tag，除了Native VLAN；&lt;/li&gt;
&lt;li&gt;交换机根据以太网帧头信息来转发数据包；&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Tag标记字段详细信息&lt;a href=&quot;#tag标记字段详细信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Tag标记字段包含一个2 bytes EtherType（以太类型）字段、一个3Bits的PRi字段、1bit的CFI字段、12bits的VLAN ID字段；&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;ISL&lt;a href=&quot;#isl&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;特点&lt;a href=&quot;#特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727232795002-f91da91e-f3d1-4769-90f7-5a1f695d9f6b.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;思科私有协议，仅可在思科的设备上互通&lt;/li&gt;
&lt;li&gt;通过硬件（ASIC）实现&lt;/li&gt;
&lt;li&gt;ISL标识不会出现在工作站，客户端并不知道ISL的封装信息&lt;/li&gt;
&lt;li&gt;在交换机或路由器与交换机之间，在交换机与具有ISL网卡的服务器之间可以实现；&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;报文形式&lt;a href=&quot;#报文形式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727232857479-d7dc114a-8b8b-411a-95d9-30e0df6bbadf.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;VTP&lt;a href=&quot;#vtp&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;一个能够宣告VLAN的配置信息的信息系统；&lt;/li&gt;
&lt;li&gt;通过一个共有的管理域，维持VLAN配置信息的一致性；&lt;/li&gt;
&lt;li&gt;VTP只能在主干端口发送要宣告的信息；&lt;/li&gt;
&lt;li&gt;支持混合的介质主干链接（快速以太网，FDDI，ATM）；&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;VTP的运作&lt;a href=&quot;#vtp的运作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727262262150-ca39be19-8d3a-4ca5-9740-affe0d19cdb1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;VTP协议通过组播地址01-00-0C-CC-CC-CC在Trunk链路上发送VTP通告；&lt;/li&gt;
&lt;li&gt;VTP Server和Clients通过最高的修订号来同步数据库；&lt;/li&gt;
&lt;li&gt;VTP协议每隔五分钟发送一次VTP通告或者有变化时发生；&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;VTP模式&lt;a href=&quot;#vtp模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;Server&lt;a href=&quot;#server&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;删除vlan&lt;/li&gt;
&lt;li&gt;发送/转发信息宣告&lt;/li&gt;
&lt;li&gt;同步&lt;/li&gt;
&lt;li&gt;存储于NVRAM中&lt;/li&gt;
&lt;li&gt;Catalyst交换机默认是server模式&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;Client&lt;a href=&quot;#client&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;发送/转发信息宣告&lt;/li&gt;
&lt;li&gt;同步&lt;/li&gt;
&lt;li&gt;不会存储于NVRAM&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;Transparent&lt;a href=&quot;#transparent&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;创建修改删除VLAN&lt;/li&gt;
&lt;li&gt;转发&lt;/li&gt;
&lt;li&gt;信息宣告&lt;/li&gt;
&lt;li&gt;不同步&lt;/li&gt;
&lt;li&gt;存储于NVRAM&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;VTP Pruning（修剪）&lt;a href=&quot;#vtp-pruning修剪&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1727262775728-359c02e7-1c19-4ed2-8757-71c88d6e1b6c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SW1(config)# vlan vlan-id&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SW1(config-vlan)# switchport mode [mode]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SW1(config-vlan)# switchport access vlan [vlan-id | none]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>VLSM和子网划分基础</title><link>https://www.sumi233.top/posts/CCNA/vlsm-and-subnetting-basics/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/vlsm-and-subnetting-basics/</guid><description>VLSM和子网划分基础</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;什么是IP（v4）地址？&lt;a href=&quot;#什么是ipv4地址&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;32位&lt;/li&gt;
&lt;li&gt;点分十进制&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728346483856-c5afe761-4939-4551-9121-403cde372526.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;十进制与二进制的转换&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728346736794-9facc6d2-b099-4632-ba63-1fff0cc06538.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;IP地址的类别&lt;a href=&quot;#ip地址的类别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;详解见附件表格&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;特殊地址&lt;a href=&quot;#特殊地址&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;127.0.0.1 回环&lt;/li&gt;
&lt;li&gt;0.0.0.0 空地址&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;通讯类型&lt;a href=&quot;#通讯类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;单播&lt;/li&gt;
&lt;li&gt;组播&lt;/li&gt;
&lt;li&gt;广播&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;地址类型&lt;a href=&quot;#地址类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;网络地址：&lt;/strong&gt; 代指网络的地址。在网络的IPv4地址范围内，最小地址保留为网络地址。此地址的主机部分的每个主机位为0&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;广播地址：&lt;/strong&gt; 用于向网络中的所有主机发送数据的特殊地址。广播地址使用该网络范围内的最大地址。即主机部分的各比特位全部为1的地址&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主机地址：&lt;/strong&gt; 分配给网络中终端设备的地址&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;公网、私有地址&lt;a href=&quot;#公网私有地址&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728351711647-589eb4fc-6491-4c49-a018-a5f006366124.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;为什么要划分子网？&lt;a href=&quot;#为什么要划分子网&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728348829408-7687d102-2ca3-4736-9b17-d553c72c65df.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;一个A或B类地址，网络主机过多，划分子网可以有效解决管理的问题&lt;/li&gt;
&lt;li&gt;划分子网也可以解决效率和性能的问题&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;掩码的作用&lt;a href=&quot;#掩码的作用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728349082195-118bf88e-93f0-4dba-9d1b-32d81556acea.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;如何划分&lt;a href=&quot;#如何划分&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;向主机位借位&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728349853356-7a427b0e-819e-4cf5-9194-66190b055562.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;判断类别 找掩码&lt;/li&gt;
&lt;li&gt;变更掩码 找子网&lt;/li&gt;
&lt;li&gt;得出子网号&lt;/li&gt;
&lt;li&gt;得出主机段&lt;/li&gt;
&lt;li&gt;得出广播号&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>WAN广域网和PPP</title><link>https://www.sumi233.top/posts/CCNA/wan-and-ppp/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNA/wan-and-ppp/</guid><description>WAN广域网和PPP</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>
&lt;section&gt;&lt;h2&gt;WAN广域网简介&lt;a href=&quot;#wan广域网简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;为什么需要WAN？&lt;a href=&quot;#为什么需要wan&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;分区或分支结构的员工需要与总部通信并共享数据&lt;/li&gt;
&lt;li&gt;组织经常需要与其他组织远距离共享信息&lt;/li&gt;
&lt;li&gt;经常出差的员工需要访问公司网络信息&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728352642968-6c903617-d770-4e08-a656-48689e47b8ba.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;什么是广域网网络&lt;a href=&quot;#什么是广域网网络&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;用于连接LAN的，跨地理位置的数据通信链路，例如同属一个公司的不同分支机构（处于不同的地理位置）之间的互联链路。&lt;/li&gt;
&lt;li&gt;WAN链路一般需要向运营商购买&lt;/li&gt;
&lt;li&gt;WAN链路的地理跨越范围比LAN更广&lt;/li&gt;
&lt;li&gt;链路类型多样，用户可以根据自己的需要选择&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;WAN在OSI&lt;a href=&quot;#wan在osi&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;WAN操作主要集中在第一层和第二层上
&lt;ul&gt;
&lt;li&gt;物理层（OSI第一层）协议描述链接通信服务提供商提供的服务所需的电器，机械，操作和功能特性&lt;/li&gt;
&lt;li&gt;数据链路层（OSI第二层）协议定义如何封装传向远程位置的数据以及最终数据帧的传输机制&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728353337164-42582bff-217e-454d-8dbc-fe1f3bc85c06.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;WAN广域网接入方式&lt;a href=&quot;#wan广域网接入方式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;专线&lt;a href=&quot;#专线&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;如DDN、POS、E1、以太网专线等&lt;/li&gt;
&lt;li&gt;点对点的专有连接（安全、高传输质量）&lt;/li&gt;
&lt;li&gt;支持多种物理介质与物理接口标准&lt;/li&gt;
&lt;li&gt;稳定可靠，配置与维护见到&lt;/li&gt;
&lt;li&gt;适合长时间的业务流量需求；流量相对较高&lt;/li&gt;
&lt;li&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728353876877-28916c58-781f-47d9-ba12-635cb027e336.png&quot; alt=&quot;&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;电路交换&lt;a href=&quot;#电路交换&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;定义：由SP为企业原创网络节点间通讯提供的临时数据传输通道，其操作特性类似电话拨号技术&lt;/li&gt;
&lt;li&gt;最常见的如ISDN，ADSL&lt;/li&gt;
&lt;li&gt;逻辑连接持久有效，按需拨号&lt;/li&gt;
&lt;li&gt;传输介质主要为电话线，也可以为光纤&lt;/li&gt;
&lt;li&gt;带宽主要为56Kbps，64Kbps，128Kbps，2mbps&lt;/li&gt;
&lt;li&gt;稳定性较差，配置和维护较复杂&lt;/li&gt;
&lt;li&gt;PSTN模拟拨号（异步）
&lt;ul&gt;
&lt;li&gt;利用传统承载语音模拟信号的电话线来承载数字信号业务的拨号技术&lt;/li&gt;
&lt;li&gt;数/模信号转换&lt;/li&gt;
&lt;li&gt;带宽小，信号质量取决于电话介质信号质量&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728354678348-2904e2c4-ddf7-4932-8d38-37832016b8e1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;分组交换（包交换）&lt;a href=&quot;#分组交换包交换&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728354731782-d6d2ee9b-6c6d-4a97-8643-f73a2264092a.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;分组交换设备根据数据帧的二层地址来进行路径的选择&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PVC永久虚电路&lt;/strong&gt;	在交换开始时就已经建立了路由&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SVC交换虚电路&lt;/strong&gt;	根据需要建立&lt;/li&gt;
&lt;li&gt;常用业务如x.25、FrameRelay&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;VPN&lt;a href=&quot;#vpn&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;暂时搁置&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;无线&lt;a href=&quot;#无线&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;暂时搁置&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;WAN物理层&lt;a href=&quot;#wan物理层&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;WAN物理层协议描述连接WAN服务所需的电气、机械、操作和功能特性。&lt;/li&gt;
&lt;li&gt;WAN物理层还描述DTE和DCE之间的接口&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728354974355-5ce0a711-97a2-4f7d-a876-9e26997bfcfe.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;常见的封装协议&lt;a href=&quot;#常见的封装协议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728355030117-4df0f986-8894-4697-9f68-e6b08ddde778.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;专用线路	PPP、HDLC&lt;/li&gt;
&lt;li&gt;电路交换	Telephone company&lt;/li&gt;
&lt;li&gt;分组交换	FrameRelay&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;HDLC&lt;a href=&quot;#hdlc&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;专用线路在数据链层一般采用HDLC或PPP封装&lt;/li&gt;
&lt;li&gt;专用线路是一条永久的点对点线路&lt;/li&gt;
&lt;li&gt;HDLC（High-Level Data Link Control）高级数据链路控制协议是一种在同步链路上传输数据的二层协议&lt;/li&gt;
&lt;li&gt;HDLC由SDLC协议发展而来&lt;/li&gt;
&lt;li&gt;每个厂家的HDLC可能有所不同，因此不同厂家之间的HDLC未必能够兼容&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h4&gt;普通HDLC&lt;a href=&quot;#普通hdlc&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728369039384-68b71f94-66c2-4fe0-9cfc-ece2a5e2c406.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;传统ISO HDLC只支持单协议环境&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;思科HDLC&lt;a href=&quot;#思科hdlc&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728369091407-173357fe-3f75-43a2-8634-b3a83b477383.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;思科HDLC支持多协议&lt;/li&gt;
&lt;li&gt;增加了Proprietary私有字节用于识别&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;PPP简介&lt;a href=&quot;#ppp简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;PPP协议是目前使用最广泛的广域网点对点链路封装协议之一，它具有以下特性&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;能够控制数据链路的建立&lt;/li&gt;
&lt;li&gt;能够对IP地址进行分配和使用&lt;/li&gt;
&lt;li&gt;支持多种网络层协议&lt;/li&gt;
&lt;li&gt;能够配置和测试数据链路&lt;/li&gt;
&lt;li&gt;能够进行错误检测&lt;/li&gt;
&lt;li&gt;提供身份验证&lt;/li&gt;
&lt;li&gt;有协商选项，能够对网络层的地址和数据压缩等进行协商、&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728369245419-e64a57e6-5864-4b17-9f6f-203c0a850654.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;PPP使用基于数据链路层的点对点传输，即PPP封装&lt;/li&gt;
&lt;li&gt;PPP上层支持三层协议，分别为TCP/IP、IPX、AppleTalk&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;PPP的层次结构&lt;a href=&quot;#ppp的层次结构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728369696975-78542e05-1ace-451b-894c-8ad9e6e115ce.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;PPP工作在数据链路层&lt;/li&gt;
&lt;li&gt;PPP主要由NCP和LCP两个协议配合组合而来&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;PPP的组件&lt;a href=&quot;#ppp的组件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;链路控制协议LCP（Link Control Protocol)
&lt;ul&gt;
&lt;li&gt;LCP负责创建，维护或终止一条数据链路&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;网络控制协议NCP（Network Control Protocol)
&lt;ul&gt;
&lt;li&gt;NCP是一个协议族，负责解决物理连接上运行什么网络协议，以及解决上层网络协议发生的问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;认证协议
&lt;ul&gt;
&lt;li&gt;最常用的包括口令验证协议PAP（PasswordAuthenticationProtocol）和挑战握手验证协议CHAP（Challenge-HandshakeAuthentication Protocol）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;PPP会话的建立&lt;a href=&quot;#ppp会话的建立&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;链路的建立和配置协商
&lt;ul&gt;
&lt;li&gt;通信的发起方发送LCP frame来配置和检测数据链路&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;链路质量检测，认证阶段(可选)
&lt;ul&gt;
&lt;li&gt;判断链路的质量是否能携带网络层信息。 如果使用身份验证的话，那么验证过程发&lt;/li&gt;
&lt;li&gt;生在这步&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;网络层协议的配置协商
&lt;ul&gt;
&lt;li&gt;通信的发起方发送NCP frame用以选择和配置网络层协议。配置完毕，通信双方可以发送各自的网络展协议数据分组&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;PAP认证（单向）&lt;a href=&quot;#pap认证单向&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728371375625-0300c2f8-8136-45e5-8923-6bd1f53e11da.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;2次握手&lt;/li&gt;
&lt;li&gt;密码以明文的形式直接发送&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;CHAP认证（单向）&lt;a href=&quot;#chap认证单向&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/44908083/1728371472275-484410a9-4d45-4013-ba20-6350f19a1f34.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# int s0/0  #进入接口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# hostname name  #（可选）指定路由器名字&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# username name password password  #（可选）标示远端路由的用户名和密码，配置在认证服务端&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# encapsulation ppp  #修改接口类型为PPP协议&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# ppp authentication {chap|chap pap|pap chap|pap}  #（可选）启用PAP或者CHAP认证，配置在认证服务端&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>Lay2 Switching and VLAN</title><link>https://www.sumi233.top/posts/CCNP/layer2-switching-and-vlan/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNP/layer2-switching-and-vlan/</guid><description>Lay2 Switching and VLAN</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;Lay2 Switching&lt;a href=&quot;#lay2-switching&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;简介&lt;/h3&gt;&lt;a href=&quot;#简介&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;基于硬件的交换&lt;/li&gt;
&lt;li&gt;线速转发性能&lt;/li&gt;
&lt;li&gt;低延迟&lt;/li&gt;
&lt;li&gt;定义MAC地址&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Lay2sw%26vlan%20(10).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Lay2 Frame&lt;a href=&quot;#lay2-frame&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;类型字段取值为0800的帧代表IP协议&lt;/li&gt;
&lt;li&gt;类型字段取值为0806的帧代表ARP协议帧&lt;/li&gt;
&lt;li&gt;类型字段取值为0835的帧代表RARP协议帧&lt;/li&gt;
&lt;li&gt;类型字段取值为8137的帧代表IPX和SPX传输协议帧&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Ethernet II帧&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Lay2sw%26vlan%20(9).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;802.3帧&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Lay2sw%26vlan%20(8).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;MAC
&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Lay2sw%26vlan%20(7).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;MAC地址有48位，通常被表示为点分十六进制数&lt;/li&gt;
&lt;li&gt;MAC地址全球唯一，由IEEE对这些地址进行管理和分配&lt;/li&gt;
&lt;li&gt;每个地址由两部分组成，分别是供应商代码和序列号。其中前24位二进制代表该供应商代码。剩下的24位由厂商自己分配&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;VLAN概率回顾&lt;a href=&quot;#vlan概率回顾&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Lay2sw%26vlan%20(6).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;形成逻辑的广播域，不同之间的VLAN互相隔离&lt;/li&gt;
&lt;li&gt;一个VLAN中所有设备都是在同一广播域内，不同的VLAN为不同的广播域VLAN之间互相隔离，广播不能跨越VLAN传播，因此不同VLAN之间的设备一般无法互访，不同VLAN间需通过三层设备实现相互通信&lt;/li&gt;
&lt;li&gt;一个VLAN一般为一个逻辑子网，由被配置为此VLAN成员的设备组成VLAN中成员多基于交换机的端口分配，划分VLAN就是对交换机的接口划分&lt;/li&gt;
&lt;li&gt;VLAN工作于OSI参考模型的第二层&lt;/li&gt;
&lt;li&gt;VLAN是二层交换机的一个非常根本的工作机制&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Trunk概念回顾&lt;a href=&quot;#trunk概念回顾&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Lay2sw%26vlan%20(5).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;当一条链路，需要承载多VLAN信息的时候，需使用trunk来实现&lt;/li&gt;
&lt;li&gt;Trunk两端的交换机需擦用相同的干道协议&lt;/li&gt;
&lt;li&gt;一般见于交换机之间或交换机与路由器、服务器之间&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;ISL与802.1Q&lt;a href=&quot;#isl与8021q&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Lay2sw%26vlan%20(4).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;ISL&lt;a href=&quot;#isl&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Lay2sw%26vlan%20(3).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;思科私有协议&lt;/li&gt;
&lt;li&gt;支持PVST&lt;/li&gt;
&lt;li&gt;在原始数据帧基础上封装ISL头及新的FCS&lt;/li&gt;
&lt;li&gt;没有修改原始的数据帧，因此处理效率比802.1Q高&lt;/li&gt;
&lt;li&gt;VLAN字段，15分比特目前用了十个，那么最多支持2的10次方=1024个VLAN&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;802.1Q&lt;a href=&quot;#8021q&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Lay2sw%26vlan%20(2).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;IEEE共有协议&lt;/li&gt;
&lt;li&gt;插入Tag字段，同时重新计算FCS&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Native VLAN&lt;a href=&quot;#native-vlan&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Native VLAN所属的帧在经过trunk时不打标签&lt;/li&gt;
&lt;li&gt;Native VLAN在Trunk两端必须匹配，否则会出现VLAN流量互串&lt;/li&gt;
&lt;li&gt;默认native vlan是vlan1&lt;/li&gt;
&lt;li&gt;建议将一个生僻的VLAN配置成Native VLAN&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Lay2sw%26vlan%20(1).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config-if)# switchport trunk native vlan ? #在trunk设置native vlan&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Router(config)# vlan dot1q tag native #也对native vlan打标签&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Trunk VTP and pVLAN</title><link>https://www.sumi233.top/posts/CCNP/trunk-vtp-and-pvlan/</link><guid isPermaLink="true">https://www.sumi233.top/posts/CCNP/trunk-vtp-and-pvlan/</guid><description>Trunk VTP and pVLAN</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;VLAN范围（Dot1Q）&lt;a href=&quot;#vlan范围dot1q&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/vtppvlan%20(4).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;0，4095	保留，系统使用&lt;/li&gt;
&lt;li&gt;1	思科默认vlan&lt;/li&gt;
&lt;li&gt;2-1001	For Ethernet VLANs&lt;/li&gt;
&lt;li&gt;1002-1005	思科默认为FDDI及TokenRing&lt;/li&gt;
&lt;li&gt;1006-4094	只能为Ethernet使用，在一些特殊平台使用&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/vtppvlan%20(2).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Trunking配置&lt;a href=&quot;#trunking配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/vtppvlan%20(3).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Trunk可以手工静态配置或者通过DTP进行协商&lt;/li&gt;
&lt;li&gt;DTP是的交换机之间能够进行trunk协商&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/vtppvlan%20(5).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Trunk相关配置&lt;a href=&quot;#trunk相关配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# switchport mode access  #接口设置access模式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# switchport mode encapsulation {dot1q | ISL}  #如果接口是trunk，设置干道协议类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# switchport mode dynamic {auto | desirable}  #将接口设置为DTP动态协商，可选auto或者desirable&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# switchport nonegotiate  #将接口设置为nonegotiate，不发送DTP帧，如果配置非协商，那么就必须手工配置接口模式，为access或者trunk&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;VTP（VLAN Trunking Protocol）&lt;a href=&quot;#vtpvlan-trunking-protocol&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/vtppvlan%20(7).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;思科的私有协议&lt;/li&gt;
&lt;li&gt;只能传递VLAN信息&lt;/li&gt;
&lt;li&gt;简化大型园区网中VLAN信息库同步的问题（同一个VTP管理域中）&lt;/li&gt;
&lt;li&gt;只同步VLAN信息&lt;/li&gt;
&lt;li&gt;需要交换机之间的trunk链路支持&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;VTP模式&lt;a href=&quot;#vtp模式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;Server&lt;a href=&quot;#server&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;可创建修改删除VLAN&lt;/li&gt;
&lt;li&gt;发送/转发信息宣告&lt;/li&gt;
&lt;li&gt;同步&lt;/li&gt;
&lt;li&gt;VLAN信息存储于NVRAM&lt;/li&gt;
&lt;li&gt;Catalyst交换机默认是server模式&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Client&lt;a href=&quot;#client&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;不能创建修改删除VLAN&lt;/li&gt;
&lt;li&gt;发送/转发信息宣告&lt;/li&gt;
&lt;li&gt;同步&lt;/li&gt;
&lt;li&gt;VLAN信息不会存贮于NVRAM&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Transparent&lt;a href=&quot;#transparent&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;可创建修改删除VLAN&lt;/li&gt;
&lt;li&gt;转发信息宣告&lt;/li&gt;
&lt;li&gt;不同步 不始发&lt;/li&gt;
&lt;li&gt;VLAN信息存贮于NVRAM&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Tips：&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;删除VLAN配置请使用&lt;code&gt;delete flash:config.text&lt;/code&gt;，切勿使用&lt;code&gt;delete flash:&lt;/code&gt;，这将会清除flash中的IOS固件&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;VTP的运作&lt;a href=&quot;#vtp的运作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;VTP协议通过组播地址0100-0CCC-CCCC在trunk链路上发送VTP通告&lt;/li&gt;
&lt;li&gt;VTP Server和clients通过最高的修订号来同步数据部&lt;/li&gt;
&lt;li&gt;VTP协议每隔5分钟发送一次VTP通告或者有变化时发生&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://img.picgo.net/2024/11/19/image-5b89cbafacef6088c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;VTP的配置&lt;a href=&quot;#vtp的配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# vtp domain cisco  #配置VTP域名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# vtp mode { server | client | transparent }  #配置本机VTP模式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Switch(config)# vtp password x  #（可选）配置密码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;私有VLAN（PVLAN）&lt;a href=&quot;#私有vlanpvlan&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/vtppvlan%20(1).png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;主VLAN&lt;/li&gt;
&lt;li&gt;辅助VLAN&lt;/li&gt;
&lt;li&gt;团体VLANs&lt;/li&gt;
&lt;li&gt;混杂端口&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;PVLANs&lt;a href=&quot;#pvlans&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;将一个VLAN划分成几个单独的VLAN，这些VLAN都使用同一个IP网段&lt;/li&gt;
&lt;li&gt;可以提高安全性，降低子网数目，提高IP利用率&lt;/li&gt;
&lt;li&gt;尽管网络设备处于同一个子网中，但是他们属于不同的pVlan，pVlans之间的通信还是必须通过默认网关来实现。&lt;/li&gt;
&lt;li&gt;每个pVLAN包括一个主VLAN以及多个辅助VLAN。&lt;/li&gt;
&lt;li&gt;所有的辅助VLAN都映射到主VLAN。辅助VLAN分为团体VLAN和隔离VLAN。&lt;/li&gt;
&lt;li&gt;相同团体VLAN能够互相通信(lay2)，但是团体VLAN之间必须通过设置SV或者路由器接口才能通信。&lt;/li&gt;
&lt;li&gt;相同隔离VLAN内部(端口之间)以及隔离VLAN之间都是不能够互相通信的，只能与混杂接口通信。&lt;/li&gt;
&lt;li&gt;一个主VLAN只能有一个Isolate vlan&lt;/li&gt;
&lt;li&gt;混杂端口能够与PVLAN中的任何设备通信，不管对方是处于主VLAN，还是辅助VLAN.&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;VLAN port types&lt;a href=&quot;#vlan-port-types&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;独立（Isolated）
&lt;ul&gt;
&lt;li&gt;仅与混杂端口通信&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;混杂（Promiscuous）
&lt;ul&gt;
&lt;li&gt;与所有其他端口通信&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;团体模式（Community）
&lt;ul&gt;
&lt;li&gt;与团体其他接口和所有混杂接口进行沟通&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>华为eNSP基础指令</title><link>https://www.sumi233.top/posts/eNSP/eNSP-Commands/</link><guid isPermaLink="true">https://www.sumi233.top/posts/eNSP/eNSP-Commands/</guid><description>华为eNSP基础指令</description><pubDate>Mon, 27 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;常见报错：&lt;a href=&quot;#常见报错&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Incomplete command：命令不完整&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Unrecognized command：命令有误&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Ambiguous command：命令无法识别&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;基础指令：&lt;a href=&quot;#基础指令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;防止交换机配置时一直弹出信息：un info e（un in e）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;进入特权模式：system-view（sy）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;返回：quit/q&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int   [端口]：进入该端口的配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;进入某个console口：user-interface console 接口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;更换主机名称：sysname 主机名称&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;interface loopback：创建虚拟接口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;display ip interface brief：查看所有端口的启用情况和ip地址&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;接口类型：&lt;a href=&quot;#接口类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;使用命令port link-type 【接口】来切换&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;access：用于连接终端，电脑等&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;trunk：用于连接另一台终端&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>Linux Bash Shell 脚本编写</title><link>https://www.sumi233.top/posts/Linux/Linux-Bash-Shell-Script/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Linux/Linux-Bash-Shell-Script/</guid><description>Linux Bash Shell 脚本编写</description><pubDate>Mon, 27 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;&amp;amp;&amp;gt; /dev/null&lt;a href=&quot;#-devnull&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;可放于echo末尾用于保持桌面整洁&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;shell脚本&lt;a href=&quot;#shell脚本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;创建文件时在末尾添加 .sh&lt;/p&gt;&lt;p&gt;在文件中首行写入#！/bin/bash后正常输入命令&lt;/p&gt;&lt;p&gt;保存后可使用sh +路径执行&lt;/p&gt;&lt;p&gt;也可给该文件添加执行权限x&lt;/p&gt;&lt;p&gt;直接输入该路径即可执行&lt;/p&gt;&lt;p&gt;read [用户输入数据] [变量名]&amp;lt;让用户输入数据并赋值到该变量&amp;gt;（可在输入数据前加-p ”信息”,在输入数据时显示信息)&lt;/p&gt;&lt;p&gt;let 变量名++/—：使变量自增/自减1&lt;/p&gt;&lt;section&gt;&lt;h3&gt;参数&lt;a href=&quot;#参数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;’&lt;span&gt;#:&apos;** 参数数量总和   
**&apos;&lt;/span&gt;*:’&lt;/strong&gt; 所有参数&lt;br /&gt;
&lt;strong&gt;’&lt;span&gt;&lt;span&gt;?:′∗∗显示上一次命令的执行返回值∗∗′?:&apos;** 显示上一次命令的执行返回值    
**&apos;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;′&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;∗&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;∗&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;显示上一次命令的执行返回值&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;∗&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;∗&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;′&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;num:’&lt;/strong&gt; 对应位置为第num的参数&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;测试语句&lt;a href=&quot;#测试语句&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;格式：&lt;a href=&quot;%E6%B3%A8%E6%84%8F%E4%B8%A4%E8%BE%B9%E5%90%84%E6%9C%89%E4%B8%80%E4%B8%AA%E7%A9%BA%E6%A0%BC&quot;&gt; 条件表达式  &lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-d:测试文件是否为目录类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-e:测试文件是否存在&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-f:判断是否为一般文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-r/w/x:测试当前用户是否有r/w/x权限&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;若判断结果为真则返回0，若判断结果为假则返回其他非零值&lt;/p&gt;&lt;p&gt;例:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;[ &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; /etc/abcde ]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;若该文件为目录类型则会输出&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;若该文件不为目录类型则会输出其他非零值&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;整数比较：&lt;a href=&quot;#整数比较&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;格式：[&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;num1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;运算符&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;num2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-eq:是否等于&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-ne:是否不等于&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-gt:是否大于&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-lt:是否小于&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-le:是否等于或小于&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-ge:是否大于或等于&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如遇到报错”[: -gt: unarg operator expected”可用a=$((a))将变量转换为整数类型&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;字符串比较:&lt;a href=&quot;#字符串比较&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;=&lt;/strong&gt;&amp;lt;比较字符串内容是否相同&amp;gt;（！=为不同）
&lt;ul&gt;
&lt;li&gt;例：[ &lt;span&gt;&lt;span&gt;a=a =  &lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;b ]&amp;lt;若相同则返回值为非零值&amp;gt;，若不同则返回非零值&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-z&lt;/strong&gt;：判断字符串内容是否为空
&lt;ul&gt;
&lt;li&gt;例：[ -z $a  ]&amp;lt;若字符串为空则返回0&amp;gt;，若不空则返回非零值&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;逻辑语句：&lt;a href=&quot;#逻辑语句&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;一般基于测试结果进行，跟在测试语句后&lt;/li&gt;
&lt;li&gt;逻辑与：&amp;amp;&amp;amp;：在测试结果为真时才会执行
&lt;ul&gt;
&lt;li&gt;例：[ -d /etc/a ] &amp;amp;&amp;amp; echo “执行成功”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;若判断为假则不会有输出，若判断为真则会输出执行成功&lt;/li&gt;
&lt;li&gt;逻辑或：||：在测试结果为假时才会执行&lt;/li&gt;
&lt;li&gt;逻辑非：! : 将判断结果取反，直接加在条件表达式的首位&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;if条件测试语句:&lt;a href=&quot;#if条件测试语句&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;单分支：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if[条件]为0则执行，不为0则不执行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;then&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;（指令）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fi&lt;/span&gt;&lt;span&gt; （结束）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;section&gt;&lt;h4&gt;双分支：&lt;a href=&quot;#双分支&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if[条件]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;then（指令）#若条件为0则会执行该指令&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;else（指令）#若条件不为0则会执行该指令&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;多分支：&lt;a href=&quot;#多分支&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if[条件]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;then&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;（命令）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;elif[条件2]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;then&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;（命令2）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;（命令3）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;在条件中判断为0后会执行对应的then后的命令&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;for循环：&lt;a href=&quot;#for循环&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; [变量] in [取值列表]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;do&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;命令列表&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;不解释
可配合cat遍历列表文件的所有行&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt; $(&lt;/span&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;“./列表文件&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;do&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;echo &quot;&lt;/span&gt;&lt;span&gt;$a&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;while循环：&lt;a href=&quot;#while循环&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;while 条件测试操作&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;do&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;命令&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;用exit 0跳出循环&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;case:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;case&lt;/span&gt;&lt;span&gt; “变量值” &lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;模式1）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;命令&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;；；&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;模式2）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;命令&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;；；&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;............&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;以上都无法匹配时执行该命令&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;esac&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;例：&lt;/p&gt;&lt;p&gt;read输入字符&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;case&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;输入的字符&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[a-z]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[A-Z]&lt;/span&gt;&lt;span&gt; )&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;字母&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[0-9]&lt;/span&gt;&lt;span&gt; )&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;数字&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;特殊字符&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;esac&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Linux RAID</title><link>https://www.sumi233.top/posts/Linux/Linux-RAID/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Linux/Linux-RAID/</guid><description>Linux RAID</description><pubDate>Mon, 27 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;阵列基础策略&lt;a href=&quot;#阵列基础策略&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;RAID 0：&lt;a href=&quot;#raid-0&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;优点：有效提升硬盘数据的吞吐速度；
缺点：不具备数据备份和错误修复能力&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;RAID 1：&lt;a href=&quot;#raid-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;优点：数据安全性增加；
缺点：磁盘设备读写速度降低，磁盘利用率降低，成本提高&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;RAID 5：&lt;a href=&quot;#raid-5&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;优点：较为均匀的兼顾了读写速度，数据安全性，存储成本&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;RAID 10：&lt;a href=&quot;#raid-10&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;优点：集合了RAID 0 和RAID 1的优点；
缺点：成本大幅提高&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;部署磁盘阵列：&lt;a href=&quot;#部署磁盘阵列&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;使用命令mdadm 模式 RAID设备名称 选项 磁盘成员&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;选项：&lt;a href=&quot;#选项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;-a：检测设备名称&lt;/li&gt;
&lt;li&gt;-n：指定设备数量&lt;/li&gt;
&lt;li&gt;-I：指定RAID级别&lt;/li&gt;
&lt;li&gt;-C：创建&lt;/li&gt;
&lt;li&gt;-v：显示过程&lt;/li&gt;
&lt;li&gt;-f：模拟设备损坏&lt;/li&gt;
&lt;li&gt;-r：移除设备&lt;/li&gt;
&lt;li&gt;-Q：查看摘要信息&lt;/li&gt;
&lt;li&gt;-D：查看详细信息&lt;/li&gt;
&lt;li&gt;-S：停止RAID磁盘阵列&lt;/li&gt;
&lt;li&gt;-x：有备份盘，后接备份盘数量&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;例：&lt;code&gt;mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sda ...&lt;/code&gt;&lt;/p&gt;&lt;p&gt;用命令mkfs将制作好的磁盘阵列格式转化为ext4格式：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;mkfs.ext4 RAID文件&lt;/li&gt;
&lt;li&gt;创建文件夹用于挂载阵列文件&lt;/li&gt;
&lt;li&gt;用mount挂载&lt;/li&gt;
&lt;li&gt;可用&lt;code&gt;df -h&lt;/code&gt;查看是否成功&lt;/li&gt;
&lt;li&gt;将其加入到磁盘配置文件中使其永久生效：&lt;/li&gt;
&lt;li&gt;可使用重定向或直接进入vim编辑&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;输入以下内容：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;磁盘文件&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;/RAID&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;ext4&lt;/span&gt;&lt;span&gt;           &lt;/span&gt;&lt;span&gt;defaults&lt;/span&gt;&lt;span&gt;           &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;在RAID 1和RAID10中若一个磁盘损坏可直接添加磁盘后用命令
&lt;code&gt;mdadm 磁盘阵列 -a 新增磁盘&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在使用mdadm 磁盘阵列 -D检测磁盘阵列&lt;/li&gt;
&lt;li&gt;全都为active sync即为成功&lt;/li&gt;
&lt;li&gt;若不为可等待一会，可能是它在往新磁盘同步数据&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;模拟磁盘损坏：&lt;a href=&quot;#模拟磁盘损坏&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;mdadm 磁盘阵列 -f 损坏的磁盘&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;磁盘阵列+备份盘&lt;a href=&quot;#磁盘阵列备份盘&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;指令示例：&lt;/p&gt;&lt;p&gt;&lt;code&gt;mdadm -Cv /dev/md0 -a yes -n 3 -l 5 -x 1 三个组成阵列的磁盘 一个备份盘&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Linux 服务器指令基础</title><link>https://www.sumi233.top/posts/Linux/LinuxServer/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Linux/LinuxServer/</guid><description>Linux 服务器指令基础</description><pubDate>Mon, 27 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;基础指令&lt;a href=&quot;#基础指令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;查看文件目录：pwd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;查看当前目录下的所有目录和文件：ls&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;查看当前目录下的所有目录和文件（包括隐藏的文件）：ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;列表查看当前目录下的所有目录和文件（列表查看，显示更多信息），与命令&lt;/span&gt;&lt;span&gt;&quot;ll&quot;&lt;/span&gt;&lt;span&gt;效果一样：ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-l&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;查看指定目录下的所有目录和文件：ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/xxx/xxx&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;进入文件目录：cd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;进入根目录：cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;进入当前用户目录：cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;退出目录：cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;..&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;创建文件夹：mkdir&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;创建文件：touch&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;设置权限：chmod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;xxx&lt;/span&gt;&lt;span&gt; [文件目录]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;删除文件：rm&lt;/span&gt;&lt;span&gt; [文件名]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;删除文件夹：rm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-rf&lt;/span&gt;&lt;span&gt; [文件目录]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;立刻关机：shutdown&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-h&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;now&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;或者&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;poweroff&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;两分钟后关机：shutdown&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-h&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;立刻重启：shutdown&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;now&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;或者&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;reboot&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;两分钟后重启：shutdown&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;：查看指令信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;alias&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;【别名】=‘原命令’：为原命令起别名（unalias&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;【别名】：删除该别名）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vim&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/root/.bashrc：对当前用户设置永久别名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vim&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/bashrc：对所有用户设置永久别名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;man&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;xx：查看xx命令的帮助（详细信息）（按q退出）{内容详情：（name：内容的名称）（synopsis：参数的大致使用方法）（descriotion：介绍说明）（examples：演示）（overview：概述）（defaults：默认的功能）（option：具体的可用选项）（environment：环境变量）（files：用到的文件）（see&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;also：相关资料）（history：维护历史与联系方式）}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;history&lt;/span&gt;&lt;span&gt;：显示历史执行过的命令（使用！编码数字可以重复执行一次该编码的命令）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;history&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-c：清空所有命令的历史记录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ctrl+r：快速搜索某命令&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;！$：引用上一个命令的参数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;！【关键词】：重复上一个有此关键词的命令并执行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;【命令1】&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;【命令2】：先执行命令1后执行命令2，若命令1执行失败则不会执行命令2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;which&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;【命令】:查看命令所在的绝对路径&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo配置：（使用户a在xxx主机上可以以用户b的身份执行命令&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;用vim进入/etc/sudoers&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;在末行按格式输入：用户a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;主机=（用户b）&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;命令&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;例子：user2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ALL=（ALL）ALL,!/usr/bin/passwd：使user2在所有主机上都可以使用除passwd以外的所有命令&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo的使用：sudo&lt;/span&gt;&lt;span&gt; [完整的命令]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;软件源配置&lt;a href=&quot;#软件源配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;更新软件源：&lt;a href=&quot;#更新软件源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;RPM/YUM系：&lt;code&gt;yum -y update&lt;/code&gt;
DEB/APT系：&lt;code&gt;apt -y update&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;安装软件：&lt;a href=&quot;#安装软件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;RPM/YUM系：&lt;code&gt;yum -y install [软件名]&lt;/code&gt;
DEB/APT系：&lt;code&gt;apt install -y [软件名]&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;搜索相应软件包：（以 sl 软件包作例子）&lt;a href=&quot;#搜索相应软件包以-sl-软件包作例子&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;RPM/YUM系：&lt;code&gt;yum search sl&lt;/code&gt;
DEB/APT系：&lt;code&gt;apt search sl&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;rpm:(红帽软件包管理工具)&lt;a href=&quot;#rpm红帽软件包管理工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-i:安装，一般搭配vh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-U：升级&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-v：输出详细详细&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-V:校验软件包内的所有文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-Va:校验所有安装的软件包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-h：输出哈希值&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-e：卸载&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-q&lt;/span&gt;&lt;span&gt; [软件包名称]:查询&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-qa：将所有rpm方式安装的软件全部列出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-qi：查询软件包详细信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-ql：查询软件包相关目录和文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-qf&lt;/span&gt;&lt;span&gt; [文件的绝对路径]：反查某个文件关联的rpm包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;定时任务&lt;a href=&quot;#定时任务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1.使用yum命令安装Crontab：&lt;a href=&quot;#1使用yum命令安装crontab&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;vixie-cron&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yum&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;crontabs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;注：vixie-cron软件包是cron的主程序；&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;crontabs软件包是用来安装、卸装、或列举用来驱动&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cron&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;守护进程的表格的程序。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cron是linux的内置服务，但它不自动起来，可以用以下的方法启动、关闭这个服务：&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/sbin/service&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;crond&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;#启动服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/sbin/service&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;crond&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stop&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;#关闭服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/sbin/service&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;crond&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;restart&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;#重启服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/sbin/service&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;crond&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;reload&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;#重新载入配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2.查看Crontab状态：&lt;a href=&quot;#2查看crontab状态&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;service&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;crond&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;ntsysv&lt;/span&gt;&lt;span&gt; #&lt;/span&gt;&lt;span&gt;查看crontab服务是否已设置为开机启动&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;chkconfig&lt;/span&gt;&lt;span&gt; –&lt;/span&gt;&lt;span&gt;level&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;crond&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;on&lt;/span&gt;&lt;span&gt; #&lt;/span&gt;&lt;span&gt;加入开机自动启动&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3.添加定时任务：&lt;a href=&quot;#3添加定时任务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;crontab &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;e &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#编辑cron任务模式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;i &lt;/span&gt;&lt;span&gt;#默认文字编辑器为vim，按i字母键即可添加cron任务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;usr&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;local&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;etc&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;rc.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;lighttpd restart &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#将命令代码放入，此命令意义为每天的03:30 重启apache&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ESC&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;#按ESC键退出编辑模式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;wq&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;#键入:wq保存&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;service crond restart &lt;/span&gt;&lt;span&gt;#重启crontab服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;网络操作基础指令&lt;a href=&quot;#网络操作基础指令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ifconfig&lt;/span&gt;&lt;span&gt; [网卡名称] [参数]:查看网络配置（down：关闭网卡；up：开启网卡）（特别的,利用ifconfig修改ip地址：ifconfig [网卡名称] [ip地址] netmask [掩码],同时可用vim进入/etc/sysconfig/network-scripts直接修改ip地址等网卡信息)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;修改后的网卡文件不会立即生效，需用命令：（nmcli&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;connection&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;up&lt;/span&gt;&lt;span&gt; [网卡名称]）来重新连接网卡使配置生效&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ping&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;网址：尝试连接该网站&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;scp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;（要传送文件的绝对路径）（传输给的用户&lt;/span&gt;&lt;span&gt;)(&lt;/span&gt;&lt;span&gt;传送用户的ip）（要传送目录的绝对路径&lt;/span&gt;&lt;span&gt;):将文件直接发送给目标用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nmcli：&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nmcli&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;show:用于表示当前系统中所有的网络连接&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nmcli&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;=connection的简写&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;up&lt;/span&gt;&lt;span&gt; [网卡名称]:启用connection（相当于ifup)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nmcli&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;down&lt;/span&gt;&lt;span&gt; [网卡名称]:停止connection（相当于ifdown）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;通过nmcil给[网卡名称]修改ip地址/掩码：nmcil&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;connection&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;modify&lt;/span&gt;&lt;span&gt; [网卡名称] ipv4.address IP/掩码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;防火墙设置：(在6.5系统中systemctl为service&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewalld&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewalld.service查看防火墙状态&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stop&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewalld：关闭防火墙&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;start&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewalld：开启防火墙&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;disable&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewalld:开机自动关闭&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;enable&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewalld:开机自动启动&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;is-enabled&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;firewalld:检测防火墙是否为自启动&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;iptables&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stop:关闭网络防火墙&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systamctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;:列出所有的系统服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;list-units:列出所有的unit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;network&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;restart&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; [下载网址] -O [下载文件的存放位置]:从网络上下载文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nslookup&lt;/span&gt;&lt;span&gt; [需要解析的域名]：测试能否解析到对应ip地址&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; [选项] [url]：从url上下载文件，访问网页，发送请求，上传文件等(&lt;/span&gt;&lt;span&gt;-X:指定http请求方法，后接get，post，put等；-F：直接指定post指令要上传的文件&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;-u：设置用户名和密码进行HTTP基本认证&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;-o：将下载的内容保存到指定文件中&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;-O：将下载的内容保存到当前目录下的文件中，文件名与服务器端文件名相同&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;lsof&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-i:[端口号]:查看端口对应进程的状态，可用来判断端口是否可用&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;iptables：
链可用于限制流量通过&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;iptables&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-L：查看规则链&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;iptables&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-F：清空规则链&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;iptables&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-P&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;INPUT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DROP/ACCRPT：将input的默认策略设置为拒绝/同意&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;iptables&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-D&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;num&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;INPUT：删除input的第num条规则&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;在头部添加新策略：（-I改为-A则为在末尾添加）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;iptables&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-I&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;INPUT（处理流入数据包的结点）&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;tcp/udp&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;匹配协议）-s&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;需要限制的ip地址&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;--dport&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;端口号&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-j&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;DROP/REJEC/ACCEPT（丢弃or拒绝or同意）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;firewall:&lt;/p&gt;&lt;p&gt;firewall-cmd [参数为一般格式]&lt;/p&gt;&lt;p&gt;参数:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--get-default-zone&lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;查询默认的区域名称&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--set-default-zone&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;lt;区城名称&amp;gt;&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;设置默认的区域，使其永久生效&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--get-zones&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;显示可用的区域&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--get-services&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;显示预先定义的服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--get-active-zones&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;显示当前正在使用的区域与网卡名称&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--add-source&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;               &lt;/span&gt;&lt;/span&gt;&lt;span&gt;将源自此IP或子网的流量导向指定的区域&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--remove-sourCe&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;不再将源自此IP或子网的流量导向某个指定区域&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--add-interface&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;lt;网卡名称&amp;gt;&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;将源自该网卡的所有流量都导向某个指定区域&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--change-interface&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;lt;网卡名称&amp;gt;&lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;将某个网卡与区域进行关联&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--list-all&lt;/span&gt;&lt;span&gt;                                  &lt;/span&gt;&lt;span&gt;显示当前区域的网卡配置参数、资源、端口以及服务等信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--list-all-zones&lt;/span&gt;&lt;span&gt;                     &lt;/span&gt;&lt;span&gt;显示所有区域的网卡配置参数、资源、端口以及服务等信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;默认为运行时模式（rentime）重启后就会失效，可添加—permanent将改设置直接为永久生效，若设置永久生效需使用—reload使其立即生效&lt;/p&gt;&lt;p&gt;&lt;code&gt;firewall-cmd --add-service=[需要放行的服务]：很实用的命令，可用于放行所需的服务，如http（移除：add改为remove）（也可将服务改为端口，端口后要加/tcp或udp&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;firewall-cmd --add-rich-rule &apos;rule family=ipv4 source address=[需要同意/拒绝的主机的ip地址]/32 service name=[需要同意/拒绝的服务] reject/accept&apos;同意/拒绝):拒绝来自该ip地址主机的流量对http服务的访问&lt;/code&gt;&lt;/p&gt;&lt;p&gt;若无法操作则按以下格式输入&lt;/p&gt;&lt;p&gt;&lt;code&gt;firewall-cmd --zone=external --add-rich-rule &apos;rule family=ipv4 source address=192.168.10.11/32 service name=ssh accept&apos;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;firewall-cmd --add-rich-rule &apos;rule family=ipv4 source address [需要同意/拒绝的网段，第四位为0] /24 port port [端口号范围，如20-22] protocol tcp/udp drop/accept/reject&apos;拒绝来自该网段的流量对该范围端口的访问&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;firewall-cmd --add-rich-rule &apos;rule family=ipv4 source address=[需要同意/拒绝的网段] protocol value=icmp accept/reject&apos;：过滤来自该网段的icmp探测，即让该网段无法ping通（不输入family....网段即为拒绝所有网段)&lt;/code&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;磁盘基础指令&lt;a href=&quot;#磁盘基础指令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;mount 磁盘文件&lt;a href=&quot;#mount-磁盘文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;挂目录：将磁盘临时挂载在目标路径上，重启后失效&lt;/li&gt;
&lt;li&gt;若要永久挂载需按格式将内容输入到/etc/fstab中&lt;/li&gt;
&lt;li&gt;umount 挂载点/磁盘文件：撤销已经挂载的磁盘文件&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;fdisk 磁盘管理工具：&lt;a href=&quot;#fdisk-磁盘管理工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;参数:&lt;a href=&quot;#参数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;m:查看全部可用的参数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;n：添加新的分区&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;d：删除某个分区信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;l：列出所有可用的分区类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;p：查看分区信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;w：保存并推出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;q：不保存直接退出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;加入新磁盘后一定要设定分区后格式化&lt;/p&gt;&lt;p&gt;设定分区流程：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fdisk&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;磁盘文件路径（在/dev下）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;q查看设备内已有的分区信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;n尝试添加新的分区&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;p创建主分区&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;输入1后enter回车&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;创建一个磁盘分区，格式为+numG，num为数字&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;p来查看分区信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;w保存退出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;file&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;磁盘文件路径&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;若输出不是block&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;special则输入&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;partprobe手动同步，连续执行两次该命令效果会更好&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;mkfs格式化工具：&lt;a href=&quot;#mkfs格式化工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;mkfs后跟文件类型，这里我们用mkfs.xfs
使用mkfs.xfs 磁盘文件路径&lt;/p&gt;&lt;p&gt;创建一个文件，用mount将该磁盘挂载到该文件下
使用&lt;code&gt;df -h&lt;/code&gt;查看是否成功&lt;/p&gt;&lt;p&gt;lsblk&amp;lt;查看系统已经挂载的块设备和挂载点&amp;gt;
df -h/mount&amp;lt;查看当前系统已经挂载的文件系统及其挂载点&amp;gt;
du 选项 文件&amp;lt;查看文件占用了多大的硬盘空间&amp;gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;磁盘配额:&lt;a href=&quot;#磁盘配额&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;对每个用户可使用的磁盘空间和创建最大文件个数进行限制
进行配置前需先进行以下操作
进入/etc/fstab在/boot /xfs后的参数defaults后添加,uquota
作用是让磁盘支持uquota技术
保存退出后重启
可用&lt;code&gt;mount | grep boot&lt;/code&gt;查看是否成功配置
为了更好的显示效果可使用&lt;code&gt;chmod -Rf o+w /boot&lt;/code&gt;为所有人赋予写入权限&lt;/p&gt;&lt;section&gt;&lt;h4&gt;命令：&lt;a href=&quot;#命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;code&gt;xfs_quota -x -c &apos;limit bsoft=（需要软限制的大小，以m为单位）（空格）bhard=（需要硬限制的大小，以m为单位）(空格）isoft=（inode 的软限制数量）（空格）ihard=（inode的硬限制数量）（需要操作的用户）&apos;  （需要操作的文件夹）&lt;/code&gt;
配置用户对指定文件夹的限额，其中所有参数不可更改&lt;/p&gt;&lt;p&gt;&lt;code&gt;dd if=/dev/zero of=/（路径） bs=（需要创建的文件大小，以m为单位） count=（要复制的块数，即为inode数）&lt;/code&gt;
创建文件并用零字节将其填至指定大小，并复制指定数量的块&lt;/p&gt;&lt;p&gt;&lt;code&gt;edquota -u/g 用户/组&lt;/code&gt;
在已经使用xfs_quota指令配置过限额后才可使用，在其中可修改配额&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;软硬链接：&lt;a href=&quot;#软硬链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;软连接：&lt;a href=&quot;#软连接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;近似于创建源文件的快捷方式，源文件删除后该软链接也无法打开了&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;硬链接：&lt;a href=&quot;#硬链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;直接指向磁盘中的存储位置，会增加文件的inode数，源文件删除后依然可以使用&lt;/p&gt;&lt;p&gt;&lt;code&gt;ln 选项 源文件 链接文件 创建链接（选项为-s时为软连接，不加默认为硬链接）(其中链接文件不可提前创建否则会报错）（-f：强制创建文件或目录的链接，加了此参数可以无需在意是否提前创建链接文件；-i&lt;/code&gt;
覆盖前先询问；-v：显示创建链接的过程）&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;用户管理&lt;a href=&quot;#用户管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;useradd&lt;/span&gt;&lt;span&gt; [参数] [用户名]:创建用户（-c：指定用户的描述信息；-d：指定用户的主目录，该目录不用事先创建；-p:同时创建密码;&lt;/span&gt;&lt;span&gt;-g：制定用户所属的主组，后接GID或组名；-G：制定用户所属的附属组，后接GID或组名；-s：指定用户的shell；-u：制定用户的uid）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;usermod&lt;/span&gt;&lt;span&gt; [参数] [用户名]:修改用户(&lt;/span&gt;&lt;span&gt;-l:修改用户名；其他参数与usedadd相同&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;userdel&lt;/span&gt;&lt;span&gt; [参数] [用户名]:删除用户(&lt;/span&gt;&lt;span&gt;-r:同时删除其主目录和邮箱,没加则会保留&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;passwd&lt;/span&gt;&lt;span&gt; [参数] [用户名]:管理用户密码（-d:删除用户密码；-l：锁定用户账户，即禁用账户;&lt;/span&gt;&lt;span&gt;-u:解锁用户账户&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;特别的：echo&lt;/span&gt;&lt;span&gt; [密码] | &lt;/span&gt;&lt;span&gt;passwd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--stdin&lt;/span&gt;&lt;span&gt; [用户]:利用管道直接修改密码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt; [用户名]:查看用户信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;su&lt;/span&gt;&lt;span&gt; [参数] [用户名]:切换用户（-或-l：初始化大部分环境变量，更改主目录，如同重新登陆一样，不加则为临时登陆）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;whoami:查看当前用户&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;用户组管理&lt;a href=&quot;#用户组管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;groupadd&lt;/span&gt;&lt;span&gt; [参数] [组名]:创建组(&lt;/span&gt;&lt;span&gt;-g:指定组的GID&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;groupmod&lt;/span&gt;&lt;span&gt; [参数] [组名]:修改组(&lt;/span&gt;&lt;span&gt;-g:修改GID&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;-n:修改组名）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;groupdel&lt;/span&gt;&lt;span&gt; [参数] [组名]:删除组&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;gpasswd&lt;/span&gt;&lt;span&gt; [参数] [组名]:组的管理(&lt;/span&gt;&lt;span&gt;不加参数:设置组的密码；-r：删除组的密码；-a：将用户加入到组中，成为组的成员；-d:将用户从组中移除；-A：将用户设置为组的管理员&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;groups&lt;/span&gt;&lt;span&gt; [组名]:查看用户隶属的组&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;newgrp：登录到其他组&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;进程管理&lt;a href=&quot;#进程管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ps：查看系统中的进程状态&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-a：显示所有进程&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-u：用户以及其他详细信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-x：显示没有控制终端的进程&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;top：用于动态监视进程活动与系统负载等信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pidof：用于查询某个指定服务进程的PID值&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;kill&lt;/span&gt;&lt;span&gt;：终止此PID值的活动进程&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;free&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-h：显示当前系统中内存的使用量信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ctrl+c：终止前台的程序&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>Project Treble | Android系统更新的革新之道</title><link>https://www.sumi233.top/posts/flash/projecttreble/</link><guid isPermaLink="true">https://www.sumi233.top/posts/flash/projecttreble/</guid><description>Project Treble作为Android系统更新的革新方案</description><pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;每次Android新版本发布后，那种漫长等待却迟迟收不到OTA更新的焦虑，Project Treble正是为了解决这一痛点而生。&lt;/p&gt;&lt;/blockquote&gt;
&lt;section&gt;&lt;h2&gt;前话&lt;a href=&quot;#前话&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;多年来，Android系统更新缓慢问题一直困扰着用户和制造商。每当Google发布新版本，设备制造商和芯片供应商都需要进行漫长而复杂的适配过程。&lt;/p&gt;&lt;p&gt;这导致&lt;strong&gt;Android设备升级率长期低迷&lt;/strong&gt;，甚至2025年仍有17%的设备无法及时获取安全补丁。&lt;/p&gt;&lt;p&gt;2017年，Google在Android 8.0中引入了名为Project Treble的模块化架构设计，这是Android系统架构自诞生以来最重大的变革之一，旨在从根本上解决系统更新缓慢的问题。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;01 传统Android更新的复杂流程&lt;a href=&quot;#01-传统android更新的复杂流程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在Project Treble之前，Android系统更新是一个复杂且耗时的过程。首先，Google将新系统源码发布至AOSP（Android开放源代码项目）。&lt;/p&gt;&lt;p&gt;接着，芯片制造商（如高通、三星、联发科等）需要对源码进行针对性修改，以让自家芯片能够在新版本Android系统上正常启动和运行。&lt;/p&gt;&lt;p&gt;然后，芯片制造商将修改后的源码交给OEM厂商，厂商根据自己的需求进一步定制新系统，加入特色功能和预装应用。&lt;/p&gt;&lt;p&gt;最后，经过一系列测试后，新版系统才能通过OTA方式推送给用户。这个过程涉及多方协作，&lt;strong&gt;任何一环出现延迟&lt;/strong&gt;都会导致更新推送缓慢。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;02 Project Treble的核心革新&lt;a href=&quot;#02-project-treble的核心革新&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Project Treble最关键的变化是引入了&lt;strong&gt;vendor interface（供应商接口）&lt;/strong&gt; 的概念，将Vender Implementation（由芯片制造商编写的设备专属底层软件）从Android系统框架中剥离出来。&lt;/p&gt;&lt;p&gt;这种架构重组创建了一个稳定的接口，位于Android操作系统框架和设备的特定硬件组件之间。通过这个接口，Android框架可以独立于设备特定的底层软件进行更新。&lt;/p&gt;&lt;p&gt;为了保证兼容性，Google还引入了&lt;strong&gt;Vendor Test Suite（VTS）测试套件&lt;/strong&gt;，类似于兼容性测试套件（CTS），用于对vendor interface的合理性和兼容性进行检验。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;03 Treble架构的关键技术&lt;a href=&quot;#03-treble架构的关键技术&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Project Treble引入了几项重要技术创新：HIDL（HAL接口定义语言）用于指定HAL和其他组件之间的接口；设备树叠加层（DTO）将设备树分割为主DT和叠加DT，使设备树更容易更新和修改；供应商原生开发套件（VNDK）提供了一组让供应商实现其HAL的专用库；供应商接口对象（VINTF）用于汇总设备相关信息并通过可查询的API提供这些信息。&lt;/p&gt;&lt;p&gt;HIDL分为两种模式：Passthrough（直通式）和Binderized（绑定式）。直通式HAL主要用于兼容旧版HAL，而绑定式HAL则运行在独立的进程中，通过Binder机制与框架通信。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;04 对系统更新的实际影响&lt;a href=&quot;#04-对系统更新的实际影响&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Project Treble极大地简化了Android更新流程。在新架构下，Google发布新版本AOSP后，OEM厂商可以直接基于A源码进行定制，无需等待芯片制造商适配。&lt;/p&gt;&lt;p&gt;芯片制造商编写的设备专属底层部分则由Google和芯片厂商共同维护，并被设计为不再面向特定版本的Android系统。&lt;/p&gt;&lt;p&gt;这意味着&lt;strong&gt;OEM厂商可以更快地适配和发布&lt;/strong&gt;新版本Android系统，显著降低开发成本和复杂度，同时延长了设备生命周期。&lt;/p&gt;&lt;p&gt;Google Android软件工程部门副总理David Burke表示，Project Treble将“让制造商以更低的成本更轻松、更快速地将设备更新到新版Android系统”。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;05 对第三方ROM开发的影响&lt;a href=&quot;#05-对第三方rom开发的影响&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Project Treble不仅对官方更新有益，也为第三方ROM开发带来了革命性变化。支持Treble的设备如果想要预装或升级Android 8.0，都必须先经过Project Treble认证。&lt;/p&gt;&lt;p&gt;这意味着设备在OEM厂商对AOSP源码进行定制前，就已经能够运行AOSP系统并通过CDD、CTS、VTS等一系列测试。&lt;/p&gt;&lt;p&gt;开发者通过AOSP代码编译的ROM几乎可以在任何支持Project Treble的新手机上运行，&lt;strong&gt;第三方ROM适配工作变得异常简单&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;像Lineage OS这样的自定义ROM可以更容易地适配各种设备，极大地丰富了Android生态系统的多样性。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;06 现实挑战与局限性&lt;a href=&quot;#06-现实挑战与局限性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;尽管Project Treble带来了巨大改进，但Android碎片化问题并未完全解决。David Burke曾坦言，像中国、印度等新兴市场最好的手机并不一定采用最新版系统，而是选择相对稳定、成熟的版本。&lt;/p&gt;&lt;p&gt;这种市场策略差异意味着&lt;strong&gt;主要流通版本仍可能存在差异&lt;/strong&gt;。2025年的数据显示，仍有17%的Android设备无法及时获取安全补丁，碎片化问题依然存在。&lt;/p&gt;&lt;p&gt;某些地区和市场环境下，厂商可能仍然基于商业考量选择不提供更新，尽管技术障碍已经大大降低。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Pixel系列手机作为首批支持Project Treble的设备，率先体验到了这一技术带来的优势。&lt;/p&gt;&lt;p&gt;随着时间推移，众多Android厂商也跟随谷歌步伐，将Project Treble应用到自己的设备中。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三星手机以往很少提供Android更新&lt;/strong&gt;，但现在获得的更新比谷歌手机更多。第三方ROM开发者也不再需要为每一款设备进行专门适配，只需要编译一个通用的系统镜像（GSI）就能在所有支持Treble的设备上运行。&lt;/p&gt;&lt;p&gt;Project Treble的价值不仅体现在技术架构上，更是Android生态系统成熟的重要标志。它平衡了开放性与碎片化之间的矛盾，为Android的持续进化奠定了坚实基础。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Tips&lt;a href=&quot;#tips&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本文章使用Deepseek V3润色而成，如有错误，请指出，酥米将会及时更改。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Linux的前世今生 | Linux简介</title><link>https://www.sumi233.top/posts/Linux/Linux-Introduction/</link><guid isPermaLink="true">https://www.sumi233.top/posts/Linux/Linux-Introduction/</guid><description>Linux的起源、特性与应用</description><pubDate>Tue, 16 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Linux，全称 GNU/Linux，是一套免费使用和自由传播的类 Unix 操作系统，是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。伴随着互联网的发展，Linux 得到了来自全世界软件爱好者、组织以及公司的持续支持与合作。它并非由单一个人或公司开发，而是全球协同合作的典范，其核心在于开源共享的精神。&lt;/p&gt;
&lt;section&gt;&lt;h1&gt;一、历史渊源与开源精神&lt;a href=&quot;#一历史渊源与开源精神&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Linux 的故事始于 1991 年，由芬兰大学生林纳斯·托瓦兹（Linus Torvalds）发起。当时，他为了个人学习和使用，基于 Minix 系统（一个用于教学的小型 Unix 系统）开发了一个新的操作系统内核，并将其源代码公布于互联网上，邀请志同道合者一同完善。这个最初只是业余爱好的项目，迅速吸引了全球众多开发者的目光。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/linus2.webp&quot; alt=&quot;linus&quot; /&gt;&lt;figcaption&gt;linus&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;严格来说，林纳斯最初发布的只是“操作系统内核”（Kernel），即负责管理硬件、内存、进程等最核心任务的程序。要让一个操作系统变得实用，还需要大量的外围工具，如编译器、 shell、库文件等。而此时，由理查德·斯托曼（Richard Stallman）发起的自由软件基金会（FSF）及其 GNU 项目，已经为此准备了近十年。GNU 项目旨在创建一个完全自由、类 Unix 的操作系统，但其自有内核（Hurd）开发进展缓慢。Linux 内核的出现与 GNU 项目的工具集完美结合，形成了一个完整的操作系统——GNU/Linux（简称 Linux）。这正是“全称 GNU/Linux”的由来，也是对无数贡献者劳动的尊重。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed@main/top/huang233893/imgs/blog/GNU.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;其成功的根基在于采用了 GNU 通用公共许可证（GPL）。该许可证保证了用户运行、学习、修改和分发软件的自由。任何基于 GPL 代码的改进也必须以相同条款开源。这种“病毒式”的自由传播特性，确保了 Linux 的蓬勃发展不会受制于任何单一商业实体，形成了强大的社区驱动生态。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;二、核心特性与技术优势&lt;a href=&quot;#二核心特性与技术优势&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Linux 能取得今日之地位，与其自身卓越的特性密不可分：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;稳定性和高可靠性&lt;/strong&gt;：继承自 Unix 的优良基因，Linux 内核极其稳定，能够长时间连续运行而不宕机。这使得它成为运行关键任务应用（如服务器、数据库）的首选。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;强大的网络功能&lt;/strong&gt;：Linux 从诞生之初就与互联网紧密结合，其网络协议栈高效且完整，在性能和安全性方面表现出色，是构建网络基础设施的基石。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;多用户、多任务&lt;/strong&gt;：原生支持多个用户同时登录和操作，且彼此资源隔离，互不影响。系统能同时运行大量进程，并高效地进行调度和管理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;跨平台硬件支持&lt;/strong&gt;：Linux 内核支持从嵌入式设备、手机到巨型超级计算机的几乎所有硬件平台。这种高度的可移植性使其应用场景无比广阔。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;安全性&lt;/strong&gt;：由于其开源特性，全球安全专家可以持续审查代码，发现并快速修复漏洞。相比闭源系统，其安全响应机制更为透明和高效。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;丰富的软件生态&lt;/strong&gt;：通过各种包管理系统（如 APT、YUM、DNF），用户可以轻松地安装、更新和卸载成千上万的免费开源软件，从开发工具到办公应用，一应俱全。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;三、广泛应用领域&lt;a href=&quot;#三广泛应用领域&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;如今，Linux 已无处不在，渗透到数字世界的每一个角落：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;服务器与云计算领域&lt;/strong&gt;：这是 Linux 的传统优势领域。全球超过 90% 的超级计算机、绝大多数互联网服务器（包括 Google、Facebook、Amazon 等巨头）、以及云计算平台（如 AWS、Azure、Google Cloud 的核心服务）都运行在 Linux 之上。Apache、Nginx、MySQL 等核心网络软件也首选 Linux 环境。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;嵌入式系统与物联网（IoT）&lt;/strong&gt;：从智能电视、路由器、智能手表到汽车娱乐系统，Linux 因其小巧、灵活和可定制的特性，成为嵌入式设备的宠儿。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;移动设备&lt;/strong&gt;：Android，这个全球市场占有率最高的移动操作系统，其底层核心正是 Linux 内核。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;软件开发与科学计算&lt;/strong&gt;：Linux 是程序员和科研人员的乐园。它提供了强大的命令行工具链和原生开发环境，是进行人工智能、大数据分析、高性能计算等前沿研究的理想平台。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;桌面系统&lt;/strong&gt;：虽然市场份额相对较小，但 Linux 桌面环境（如 GNOME、KDE）日益美观易用。出现了如 Ubuntu、Fedora、Deepin 等优秀的发行版，为用户提供了 Windows 和 macOS 之外的又一个高质量选择，特别受开发者和技术爱好者青睐。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;结语&lt;a href=&quot;#结语&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;从一名芬兰大学生的个人项目，到支撑全球互联网技术的巨人，Linux 的成功是开源协作模式的一次伟大胜利。它证明了当来自世界各地的智慧为了一个共同目标自由汇聚时，所能迸发出的巨大能量。Linux 不仅仅是一个操作系统，更是一种哲学、一种文化。它代表着开放、共享、协作与创新，持续推动着整个信息技术产业向前发展，成为数字时代不可或缺的坚实基础。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;类人版（Deepseek V3润色而成）&lt;a href=&quot;#类人版deepseek-v3润色而成&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Linux，这个名字你可能经常听到，但或许你从未真正了解过它的奇妙之处。说起来，它的诞生更像是一个偶然——1991年，芬兰大学生林纳斯·托瓦兹只是为了方便自己使用，写了一个小小的操作系统内核，并随手把它丢到了网上。就像在湖面投下一颗石子，他没想到这片涟漪竟会扩散至整个世界。&lt;/p&gt;&lt;p&gt;而真正让Linux成长起来的，是一种被称为&lt;strong&gt;开源&lt;/strong&gt;的奇妙模式。简单来说，就是所有人都可以看到、修改、分享它的源代码。这就像是一本公开的菜谱，每个厨师都可以根据自己的口味调整，并将改进后的配方再次分享出去。正是这种开放的精神，让全球无数开发者自发地加入进来，共同雕琢这个系统。&lt;/p&gt;&lt;p&gt;你可能会问，这样一个由众人共同搭建的系统，究竟能有多厉害？答案可能超乎你的想象。&lt;/p&gt;&lt;p&gt;每天早上，当你打开手机（如果用的是Android系统，那么你已经在使用Linux了）、浏览网页（绝大多数网站运行在Linux服务器上）、甚至使用共享单车（许多嵌入式设备都基于Linux），你都在不知不觉中与它打交道。从身边的小设备，到太空中火星探测车的控制系统，Linux的身影无处不在。&lt;/p&gt;&lt;p&gt;更重要的是，Linux背后代表的一种理念：技术应该是开放、自由的。它不属于任何一家公司，而是属于全人类。正因为如此，我们才能看到无数基于Linux的创新诞生——无论是贫困地区学校使用的低成本电脑，还是科研机构中处理海量数据的超级计算机，都能见到它的身影。&lt;/p&gt;&lt;p&gt;当然，Linux的世界并非完美无缺。对于普通用户来说，它的入门门槛可能稍高，图形界面虽然已经越来越友好，但依然需要一定的学习成本。不过，正是这种可定制性，让每个人都能打造属于自己的专属系统。&lt;/p&gt;&lt;p&gt;如今，Linux已经走过了三十多个年头，但它依然保持着活力。每时每刻，来自世界各地的开发者仍在为它贡献代码，修复漏洞，添加新功能。这棵大树之所以能枝繁叶茂，正是因为它扎根于开放的土壤中。&lt;/p&gt;&lt;p&gt;或许，Linux最大的启示不在于技术本身，而在于它向我们展示了一种可能性：当人们为了共同的目标而协作时，能够创造出怎样的奇迹。在这个意义上，Linux不仅仅是一个操作系统，更是一次关于合作与共享的伟大实践。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;</content:encoded></item><item><title>另辟蹊径！荣耀畅玩5x任意版本使用Erec恢复官方最新系统</title><link>https://www.sumi233.top/posts/flash/kiwi-downdate/</link><guid isPermaLink="true">https://www.sumi233.top/posts/flash/kiwi-downdate/</guid><description>另辟蹊径！荣耀畅玩5x任意版本使用Erec恢复官方最新系统</description><pubDate>Tue, 16 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h3&gt;小贴士：&lt;a href=&quot;#小贴士&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;华为自带的Erecovery（类似于可以联网的小型救砖系统）会自动帮您恢复到设备的最新版本,所以我们可以搞点骚操作（bushi，利用EREC恢复到官方系统，因为大部分第三方的ROM都是基于低版本底包，EREC将无法使用，所以此教程诞生了！&lt;/li&gt;
&lt;li&gt;由于华为的原因,恢复回去会&lt;em&gt;重新给Bootloader上锁&lt;/em&gt;，&lt;em&gt;请备份好您的解锁码&lt;/em&gt;再进行操作。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;正文&lt;a href=&quot;#正文&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;手机一台，数据线一个。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;刷入一个属于自己机型emui4的官改卡刷包，必须是b422+以上的版本。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;刷完别急着进系统，现在是无法进入系统的（会卡一屏无限重启或者二屏一直卡着）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;先关机，然后接上充电器，&lt;em&gt;保持充电状态&lt;/em&gt;，按音量键+和电源键，开机后松开电源键会进入华为的erecovery模式。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Huawei_kiwi%20(1).jpeg&quot; alt=&quot;Erec模式&quot; title=&quot;Erec模式&quot; /&gt;&lt;figcaption&gt;Erec模式&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择下载’最新版本并恢复’选项，连接WIFI，之后会自动下载官方全量包，下载之后会自动恢复，大约10分钟～15分钟，设备将会自动重启。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Huawei_kiwi%20(2).jpeg&quot; alt=&quot;开机&quot; title=&quot;开机！&quot; /&gt;&lt;figcaption&gt;开机&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;等待进入系统，可以看到恢复到了最新的EMUI4 B443版本，本教程到这里就告一段落了。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.sumi233.top/gh/huang233893/blog-image-bed/top/huang233893/imgs/blog/Huawei_kiwi%20(2).jpeg&quot; alt=&quot;关于&quot; title=&quot;关于界面&quot; /&gt;&lt;figcaption&gt;关于&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;此文章原文从酷安迁移过来，原文日期为2019-08-17&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;</content:encoded></item></channel></rss>