<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>BPDU Guard on Zero Day Notes</title>
        <link>https://blog.5772447.xyz/tags/bpdu-guard/</link>
        <description>Recent content in BPDU Guard on Zero Day Notes</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Fri, 18 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.5772447.xyz/tags/bpdu-guard/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>核心交换机堆叠后边缘端口为何频繁 errdisable？一次 BPDU Guard 误触发与配置漂移的排查记录</title>
            <link>https://blog.5772447.xyz/posts/953d9b4c/</link>
            <pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate>
            <guid>https://blog.5772447.xyz/posts/953d9b4c/</guid>
            <description>&lt;h2 id=&#34;问题背景&#34;&gt;&lt;a href=&#34;#%e9%97%ae%e9%a2%98%e8%83%8c%e6%99%af&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;问题背景&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;公司核心交换机在 2026 年 8 月底完成堆叠升级（两台 Catalyst 9300 组成 StackWise-480），原计划是提升冗余与带宽。升级后一周内，接入层边缘端口开始频繁出现 errdisable，现象集中在会议室、打印机、IP 电话等非 PC 设备端口。运维团队最初怀疑是终端发送异常 BPDU，实则根源在于堆叠后 STP 根桥选举漂移与 BPDU Guard 全局配置不匹配。&lt;/p&gt;&#xA;&lt;h2 id=&#34;故障现象&#34;&gt;&lt;a href=&#34;#%e6%95%85%e9%9a%9c%e7%8e%b0%e8%b1%a1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;故障现象&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;边缘端口（配置了 &lt;code&gt;spanning-tree portfast edge&lt;/code&gt; + &lt;code&gt;spanning-tree bpduguard enable&lt;/code&gt;）在堆叠升级后 3-7 天内随机进入 errdisable 状态。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;show interfaces status err-disabled&lt;/code&gt; 显示原因为 &lt;code&gt;bpduguard&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;受影响端口包括会议室投影仪、打印机、多功能一体机、IP 电话等「非 PC」设备。&lt;/li&gt;&#xA;&lt;li&gt;PC 端口（同样配置了 PortFast + BPDU Guard）反而稳定，说明问题与设备类型强相关。&lt;/li&gt;&#xA;&lt;li&gt;日志中可见 &lt;code&gt;\%SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port&lt;/code&gt; 反复出现，但抓包显示这些 BPDU 的源 MAC 正是堆叠成员自身的桥 ID。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;排查过程&#34;&gt;&lt;a href=&#34;#%e6%8e%92%e6%9f%a5%e8%bf%87%e7%a8%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;排查过程&#xD;&#xA;&lt;/h2&gt;&lt;h3 id=&#34;第-1-步确认-bpdu-guard-触发日志&#34;&gt;&lt;a href=&#34;#%e7%ac%ac-1-%e6%ad%a5%e7%a1%ae%e8%ae%a4-bpdu-guard-%e8%a7%a6%e5%8f%91%e6%97%a5%e5%bf%97&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第 1 步：确认 BPDU Guard 触发日志&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;在核心堆叠上执行：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;show logging | include BLOCK_BPDUGUARD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;发现触发时间集中在早 8:00-9:00 与晚 18:00-19:00，正好对应员工上下班高峰。进一步查看具体端口：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;show spanning-tree interface GigabitEthernet1/0/23 detail&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;发现该端口收到了来自桥 ID &lt;code&gt;32768.4c71.0dxx.xxxx&lt;/code&gt; 的 BPDU，而这个桥 ID 正是堆叠升级后的新根桥。&lt;/p&gt;&#xA;&lt;h3 id=&#34;第-2-步对比堆叠前后根桥选举&#34;&gt;&lt;a href=&#34;#%e7%ac%ac-2-%e6%ad%a5%e5%af%b9%e6%af%94%e5%a0%86%e5%8f%a0%e5%89%8d%e5%90%8e%e6%a0%b9%e6%a1%a5%e9%80%89%e4%b8%be&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第 2 步：对比堆叠前后根桥选举&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;升级前根桥是老的 Catalyst 3850（桥 ID 优先级 32768 + MAC），升级后两台 9300 组成堆叠，系统自动选出更低的桥 ID（默认优先级相同，但 9300 的 MAC 地址池更低）。结果导致原先被「信任」的上行 BPDU 现在被边缘端口收到，形成环路假象。&lt;/p&gt;&#xA;&lt;h3 id=&#34;第-3-步抓包验证-bpdu-来源&#34;&gt;&lt;a href=&#34;#%e7%ac%ac-3-%e6%ad%a5%e6%8a%93%e5%8c%85%e9%aa%8c%e8%af%81-bpdu-%e6%9d%a5%e6%ba%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第 3 步：抓包验证 BPDU 来源&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;在受影响的边缘端口做 SPAN 镜像，抓到：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;BPDU 的源 MAC 是堆叠成员 2 的系统 MAC（&lt;code&gt;4c71.0dxx.xxxx&lt;/code&gt;）。&lt;/li&gt;&#xA;&lt;li&gt;该 BPDU 的 Flags 中 &lt;code&gt;Topology Change&lt;/code&gt; 位被置位，说明堆叠成员在发送 TCN（Topology Change Notification）。&lt;/li&gt;&#xA;&lt;li&gt;边缘端口本应只收到来自终端的 BPDU（极少），却持续收到来自核心的 BPDU。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;第-4-步检查全局配置漂移&#34;&gt;&lt;a href=&#34;#%e7%ac%ac-4-%e6%ad%a5%e6%a3%80%e6%9f%a5%e5%85%a8%e5%b1%80%e9%85%8d%e7%bd%ae%e6%bc%82%e7%a7%bb&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第 4 步：检查全局配置漂移&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;执行 &lt;code&gt;show running-config | section spanning-tree&lt;/code&gt; 发现：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;堆叠升级前配置了 &lt;code&gt;spanning-tree extend system-id&lt;/code&gt;（老 Catalyst 3850 必需）。&lt;/li&gt;&#xA;&lt;li&gt;升级后 9300 默认已启用 &lt;code&gt;extend system-id&lt;/code&gt;，但团队在迁移配置时误删了 &lt;code&gt;spanning-tree mode rapid-pvst&lt;/code&gt; 下的 &lt;code&gt;spanning-tree vlan 10-100 priority 4096&lt;/code&gt;（原根桥优先级）。&lt;/li&gt;&#xA;&lt;li&gt;结果两台 9300 都以默认优先级 32768 参选，MAC 地址更小的成员 2 当选根桥，而边缘端口的 BPDU Guard 把「来自根桥的合法 BPDU」误判为攻击。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;解决方案&#34;&gt;&lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;解决方案&#xD;&#xA;&lt;/h2&gt;&lt;h3 id=&#34;立即止血不改配置&#34;&gt;&lt;a href=&#34;#%e7%ab%8b%e5%8d%b3%e6%ad%a2%e8%a1%80%e4%b8%8d%e6%94%b9%e9%85%8d%e7%bd%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;立即止血（不改配置）&#xD;&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;interface range GigabitEthernet1/0/1-48&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; spanning-tree bpduguard disable&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; spanning-tree portfast edge&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;先把所有边缘端口的 BPDU Guard 临时关闭，恢复业务。后续逐步排查。&lt;/p&gt;&#xA;&lt;h3 id=&#34;根治方案三步走&#34;&gt;&lt;a href=&#34;#%e6%a0%b9%e6%b2%bb%e6%96%b9%e6%a1%88%e4%b8%89%e6%ad%a5%e8%b5%b0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;根治方案（三步走）&#xD;&#xA;&lt;/h3&gt;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;明确根桥与备份根桥&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;spanning-tree vlan 10-100 priority &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt;   ! 成员 &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; 成为根桥&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;spanning-tree vlan 10-100 priority &lt;span style=&#34;color:#ae81ff&#34;&gt;8192&lt;/span&gt;   ! 成员 &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; 成为备份根桥（在成员 &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; 配置 session 内执行）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;区分「边缘端口」与「上行端口」&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;边缘端口（连终端）：保留 &lt;code&gt;portfast edge&lt;/code&gt; + &lt;code&gt;bpduguard enable&lt;/code&gt;，但仅在明确「不会收到来自核心 BPDU」的端口上启用。&lt;/li&gt;&#xA;&lt;li&gt;上行端口（连防火墙/核心）：&lt;strong&gt;绝不&lt;/strong&gt;配置 BPDU Guard，允许正常 STP 收敛。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;引入 BPDU Guard 的「白名单」机制&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;spanning-tree portfast edge bpduguard default   ! 全局默认开启&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;interface range Gi1/0/1-48&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; spanning-tree bpduguard enable&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;! 对会议室、打印机等「可能被误触发」的端口，改用：&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;spanning-tree bpduguard disable&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;spanning-tree guard root   ! 改用 Root Guard，更温和&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;监控与告警&lt;/strong&gt;&#xA;在 Zabbix 中增加 errdisable 计数器告警，阈值设为「单端口 24h 内 errdisable 超过 3 次」即触发。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;根因分析&#34;&gt;&lt;a href=&#34;#%e6%a0%b9%e5%9b%a0%e5%88%86%e6%9e%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;根因分析&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;根本原因是&lt;strong&gt;配置漂移 + 根桥选举变化&lt;/strong&gt;的组合拳：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;堆叠升级改变了桥 ID（MAC 地址更低），导致原先「不该被边缘端口看到」的 BPDU 现在被看到。&lt;/li&gt;&#xA;&lt;li&gt;团队在迁移配置时遗漏了「根桥优先级」的显式声明，造成选举结果不可预期。&lt;/li&gt;&#xA;&lt;li&gt;BPDU Guard 的设计初衷是「防止终端发送恶意 BPDU」，但在堆叠场景下，合法的根桥 BPDU 也被误杀，形成「自伤」。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;预防措施&#34;&gt;&lt;a href=&#34;#%e9%a2%84%e9%98%b2%e6%8e%aa%e6%96%bd&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;预防措施&#xD;&#xA;&lt;/h2&gt;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;堆叠/升级前必做的 STP 健康检查&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;show spanning-tree summary&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;show spanning-tree root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;show spanning-tree bridge id&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;记录当前根桥、备份根桥、所有 VLAN 的优先级。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;配置版本控制&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;所有交换机配置必须纳入 Git（或至少做差异备份）。&lt;/li&gt;&#xA;&lt;li&gt;升级前执行 &lt;code&gt;show archive config differences&lt;/code&gt; 对比新旧配置，重点关注 &lt;code&gt;spanning-tree&lt;/code&gt; 段。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;BPDU Guard 的「分层防御」&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;边缘端口：&lt;code&gt;portfast edge + bpduguard enable&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;服务器端口：&lt;code&gt;portfast edge + bpduguard enable&lt;/code&gt;（服务器极少发 BPDU）&lt;/li&gt;&#xA;&lt;li&gt;会议室/打印机端口：&lt;code&gt;portfast edge + root guard&lt;/code&gt;（更温和，允许 BPDU 但不允许抢根桥）&lt;/li&gt;&#xA;&lt;li&gt;上行端口：&lt;strong&gt;禁用&lt;/strong&gt; BPDU Guard&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;定期演练「根桥漂移」场景&lt;/strong&gt;&#xA;每季度模拟一次「主根桥宕机」，验证备份根桥是否能快速接管，且边缘端口不会误触发。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;监控指标&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;errdisable 计数器（按端口、按原因分类）&lt;/li&gt;&#xA;&lt;li&gt;STP 拓扑变更计数器（&lt;code&gt;show spanning-tree detail | include Topology change&lt;/code&gt;）&lt;/li&gt;&#xA;&lt;li&gt;根桥 ID 变化告警（通过 SNMP Trap 或脚本定期比对）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;总结&#34;&gt;&lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;总结&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;一次看似「常规」的核心交换机堆叠升级，因为遗漏了根桥优先级的显式声明，导致 BPDU Guard 把合法的根桥 BPDU 误判为攻击，造成边缘端口大面积 errdisable。这起故障再次印证了「配置漂移」在网络变更中的杀伤力——表面上看是「设备行为异常」，实则是「人的配置遗漏」被放大了。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;关键教训&lt;/strong&gt;：任何涉及 STP 根桥选举的变更，必须显式声明优先级、做好配置版本对比、并在边缘端口上采用「Root Guard」而非「BPDU Guard」作为更温和的兜底策略。&lt;/p&gt;&#xA;&lt;h2 id=&#34;延伸阅读&#34;&gt;&lt;a href=&#34;#%e5%bb%b6%e4%bc%b8%e9%98%85%e8%af%bb&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;延伸阅读&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/380b3a5a/&#34; &gt;一次核心交换机 VRRP 双主导致内网间歇性断网的排查记录&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/461e307d/&#34; &gt;核心路由器 OSPF 邻居为何频繁 Flap？一次全网路由震荡的排查记录&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/25390aee/&#34; &gt;一次跨机房 IPSec VPN 隧道大包不通导致业务间歇性卡死的排查记录&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/150709e6/&#34; &gt;记一次生产服务变更验收 Checklist 的落地：预检、灰度与回滚三道闸&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item></channel>
</rss>
