<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Passive-Interface on Zero Day Notes</title>
        <link>https://blog.5772447.xyz/tags/passive-interface/</link>
        <description>Recent content in Passive-Interface on Zero Day Notes</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Tue, 04 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.5772447.xyz/tags/passive-interface/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>核心路由器 OSPF 邻居为何频繁 Flap？一次全网路由震荡的排查记录</title>
            <link>https://blog.5772447.xyz/posts/da7616e2/</link>
            <pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate>
            <guid>https://blog.5772447.xyz/posts/da7616e2/</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;生产网络核心层由两台华为 CE12800 核心三层交换机（CR1/CR2）通过 OSPF Area 0 互联，承载全网 200+ VLAN 的三层路由。2026 年 8 月 3 日 14:20 起，监控系统连续告警「OSPF Neighbor Down/Up」，同时全网出现间歇性丢包、部分业务系统数据库连接超时。BGP（与上游 ISP 做 eBGP）也受影响，出现大量路由撤回与重新注入。初步判断为 OSPF 协议层面的路由震荡。&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;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;OSPF 邻居反复 Flap&lt;/strong&gt;：CR1 与 CR2 的 OSPF 邻居状态在 Full ↔ Init/2-Way 之间切换，平均每 90 秒一次，持续约 40 分钟。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;路由表震荡&lt;/strong&gt;：全网路由表（含静态 + OSPF + BGP）出现大规模撤回与重新学习，RIB/FIB 频繁更新。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;业务影响&lt;/strong&gt;：核心业务数据库（MySQL 主从）出现大量「Lost connection to MySQL server during query」，部分应用接口返回 504。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;BGP 受波及&lt;/strong&gt;：上游 eBGP 会话因大量路由撤回而触发 damping，部分公网路由暂时不可达。&lt;/li&gt;&#xA;&lt;/ol&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;第一步确认-ospf-邻居状态与日志&#34;&gt;&lt;a href=&#34;#%e7%ac%ac%e4%b8%80%e6%ad%a5%e7%a1%ae%e8%ae%a4-ospf-%e9%82%bb%e5%b1%85%e7%8a%b6%e6%80%81%e4%b8%8e%e6%97%a5%e5%bf%97&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第一步：确认 OSPF 邻居状态与日志&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;在 CR1 上执行：&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;display ospf peer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;display ospf interface&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;display ospf error&#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;发现 CR1 与 CR2 的邻居关系频繁在 Full → Init 切换，错误日志提示：&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-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;OSPF/3/IFSM: OSPF 1.1.1.1 Neighbor 10.0.0.2(GE1/0/1) from Full to Init, reason: 1-WayHelloReceived&#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;同时发现两台设备上同一个接口的 Hello timer / Dead timer 配置不一致：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;CR1: Hello 10s, Dead 40s&lt;/li&gt;&#xA;&lt;li&gt;CR2: Hello 5s, Dead 20s&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;第二步检查-passive-interface-配置&#34;&gt;&lt;a href=&#34;#%e7%ac%ac%e4%ba%8c%e6%ad%a5%e6%a3%80%e6%9f%a5-passive-interface-%e9%85%8d%e7%bd%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第二步：检查 passive-interface 配置&#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;display current-configuration interface GE1/0/1&#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;发现 CR2 的上联接口意外配置了 &lt;code&gt;ospf silent-interface&lt;/code&gt;，导致 CR2 不再发送 Hello，但仍接收 CR1 的 Hello，形成单向邻居。&lt;/p&gt;&#xA;&lt;h3 id=&#34;第三步检查区域类型与认证&#34;&gt;&lt;a href=&#34;#%e7%ac%ac%e4%b8%89%e6%ad%a5%e6%a3%80%e6%9f%a5%e5%8c%ba%e5%9f%9f%e7%b1%bb%e5%9e%8b%e4%b8%8e%e8%ae%a4%e8%af%81&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第三步：检查区域类型与认证&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;进一步对比两台设备的 OSPF Area 配置：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;CR1 Area 0 配置为 &lt;code&gt;nssa no-import-route&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;CR2 Area 0 配置为 &lt;code&gt;stub no-summary&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;区域类型不一致导致 LSA 类型不匹配，邻居关系无法稳定建立。&lt;/p&gt;&#xA;&lt;h3 id=&#34;第四步全网路由震荡原因&#34;&gt;&lt;a href=&#34;#%e7%ac%ac%e5%9b%9b%e6%ad%a5%e5%85%a8%e7%bd%91%e8%b7%af%e7%94%b1%e9%9c%87%e8%8d%a1%e5%8e%9f%e5%9b%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;第四步：全网路由震荡原因&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;OSPF 邻居 Flap 直接导致：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;全网路由表大规模撤回（因为 OSPF 是 IGP，BGP 依赖 IGP 下一跳可达性）&lt;/li&gt;&#xA;&lt;li&gt;BGP 收到大量路由撤回后触发 damping&lt;/li&gt;&#xA;&lt;li&gt;业务系统因路由瞬断而出现连接超时&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;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;统一 Hello/Dead timer&lt;/strong&gt;：在 CR1 与 CR2 的所有 OSPF 接口上统一配置 &lt;code&gt;ospf timer hello 10 dead 40&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;清理 passive-interface&lt;/strong&gt;：删除 CR2 上误配置的 &lt;code&gt;ospf silent-interface&lt;/code&gt;，恢复双向 Hello 发送。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;统一区域类型&lt;/strong&gt;：将 CR1/CR2 Area 0 统一改为 &lt;code&gt;nssa no-import-route&lt;/code&gt;，并在边界路由器上配置 &lt;code&gt;import-route direct route-policy&lt;/code&gt; 精确控制路由注入。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;增加认证与 BFD&lt;/strong&gt;：开启 OSPF MD5 认证 + BFD（双向转发检测），将故障收敛时间从秒级降到毫秒级。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;监控与告警&lt;/strong&gt;：增加 OSPF 邻居状态监控 + 路由表变化速率告警，提前发现配置漂移。&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;不同维护窗口由不同团队操作，Hello/Dead timer、passive-interface、区域类型三项关键参数未做版本化管理。&lt;/li&gt;&#xA;&lt;li&gt;90 秒的 Flap 周期刚好是 Dead timer 的 2 倍，属于典型的 timer 不一致导致的单向邻居。&lt;/li&gt;&#xA;&lt;li&gt;passive-interface 误配 + 区域类型不匹配形成「三重失配」，任何一项修复都只能短暂缓解，最终必须三者同时统一才能根治。&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;&lt;strong&gt;配置版本化与 Review&lt;/strong&gt;：所有网络设备配置变更必须走 Git + Review，关键参数（timer、area type、passive）做 diff 检查。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;自动化一致性巡检&lt;/strong&gt;：每周运行一次脚本对比全网 OSPF/BGP 配置，检测 timer、area、认证差异。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;BFD + 快速收敛&lt;/strong&gt;：核心链路必须开启 BFD，把协议收敛时间控制在 50ms 以内。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;变更窗口隔离&lt;/strong&gt;：网络变更必须在业务低峰期执行，变更后立即执行「配置漂移检查清单」。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;监控分层告警&lt;/strong&gt;：OSPF 邻居 Flap 告警 → 路由表变化速率告警 → 业务连接超时告警，形成三级响应。&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;一次看似普通的 OSPF 邻居 Flap，根源是三层配置漂移累积到临界点后引发的全网级雪崩。通过统一 timer、清理 passive、统一区域类型、开启 BFD + 认证，最终将故障收敛时间从分钟级降到毫秒级。网络排障永远是「配置一致性 &amp;gt; 协议特性」，任何参数漂移都可能成为压垮全网的最后一根稻草。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
