<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>回程路由 on Zero Day Notes</title>
        <link>https://blog.5772447.xyz/tags/%E5%9B%9E%E7%A8%8B%E8%B7%AF%E7%94%B1/</link>
        <description>Recent content in 回程路由 on Zero Day Notes</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Sun, 09 Aug 2026 07:05:00 +0800</lastBuildDate><atom:link href="https://blog.5772447.xyz/tags/%E5%9B%9E%E7%A8%8B%E8%B7%AF%E7%94%B1/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>记一次机房搬迁网络割接后跨机房业务单向可达的排查</title>
            <link>https://blog.5772447.xyz/posts/5453de23/</link>
            <pubDate>Sat, 27 Mar 2021 07:05:00 +0800</pubDate>
            <guid>https://blog.5772447.xyz/posts/5453de23/</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;公司把老园区 IDC（机房 A）里一批业务虚机与存储节点整建制迁到新园区机房 B，割接窗口定在周六凌晨 02:00–05:00。方案表面上很「干净」：业务网段整体搬迁、入口防火墙 DNAT/策略按新地址切换、跨机房链路从原有 MPLS 专线切换到新建的双上联 IPSec + 专线混合出口。搬迁前做过 ping/traceroute 抽样和少量应用冒烟，窗口内业务侧汇报「新机房对外正常、监控基本绿」。&lt;/p&gt;&#xA;&lt;p&gt;真正的问题在周一早高峰才爆出来——&lt;strong&gt;一部分跨机房调用表现为「半通」&lt;/strong&gt;：机房 A 的应用访问机房 B 新地址能建连，反过来 B 访问 A、或 B 回调 A 的回调地址却超时；运维在 B 机跳板机能 &lt;code&gt;ssh&lt;/code&gt; 到 A，A 的同事却感觉「B 回不来」。很多人第一反应是防火墙、安全组或应用端口，结果越查越像「路由和回程没在同一张图上」。&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;方向性矛盾&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A→B：HTTP/HTTPS、数据库、消息队列客户端侧大都能建立 TCP，偶发超时。&lt;/li&gt;&#xA;&lt;li&gt;B→A：同端口大量 &lt;code&gt;connect timeout&lt;/code&gt;；部分会话能 SYN 出去，却收不到 SYN-ACK。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;工具表象分裂&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;在 B 上 &lt;code&gt;ping&lt;/code&gt; A 的网关通，&lt;code&gt;ping&lt;/code&gt; A 的业务 VIP 有时通有时不通。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;traceroute&lt;/code&gt; 在两个方向上路径长度不一致：A→B 走新建专线，B→A 却绕到旧出口或公网边界设备。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;业务侧症状&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;双向回调型接口（支付回调、工单状态推送、AD 同步）失败率飙升。&lt;/li&gt;&#xA;&lt;li&gt;单向拉取型任务（A 定时拉 B 报表）看似正常，掩盖了回程问题。&lt;/li&gt;&#xA;&lt;li&gt;监控对「本机存活」全绿，因为探针都是本机房内部路径，&lt;strong&gt;跨机房回程不在探针路径上&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;变更后漂移&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;割接记录写着「静态路由已切换」，但两台核心三层、边界防火墙、业务侧策略路由（PBR）的生效快照并不一致；部分设备仍保留「迁出前」的下一跳。&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%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-先定方向不要一上来改防火墙&#34;&gt;&lt;a href=&#34;#1-%e5%85%88%e5%ae%9a%e6%96%b9%e5%90%91%e4%b8%8d%e8%a6%81%e4%b8%80%e4%b8%8a%e6%9d%a5%e6%94%b9%e9%98%b2%e7%81%ab%e5%a2%99&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1. 先定方向，不要一上来改防火墙&#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;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;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;7&#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;&lt;span style=&#34;color:#75715e&#34;&gt;# 在 A 业务机&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -v --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; http://B_VIP:8080/health&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcptraceroute B_VIP &lt;span style=&#34;color:#ae81ff&#34;&gt;8080&lt;/span&gt;&#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;&lt;span style=&#34;color:#75715e&#34;&gt;# 在 B 业务机&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -v --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; http://A_VIP:8080/health&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcptraceroute A_VIP &lt;span style=&#34;color:#ae81ff&#34;&gt;8080&lt;/span&gt;&#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;结果非常整齐：A→B 三次握手完成；B→A 停在第一次 SYN 之后，抓包在 A 网卡上&lt;strong&gt;根本看不到这个 SYN&lt;/strong&gt;。说明问题不在应用监听，而在 &lt;strong&gt;B→A 的包在中间被送丢/送错路径&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-对称抓包暴露非对称路径&#34;&gt;&lt;a href=&#34;#2-%e5%af%b9%e7%a7%b0%e6%8a%93%e5%8c%85%e6%9a%b4%e9%9c%b2%e9%9d%9e%e5%af%b9%e7%a7%b0%e8%b7%af%e5%be%84&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2. 对称抓包，暴露非对称路径&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;在 A/B 业务机、A/B 机房出口防火墙、跨机房专线两端同时抓同一五元组：&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;src=B_APP dst=A_VIP sport=随机 dport=8080&#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;时间线对齐后发现：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;B 业务机发出 SYN，下一跳走对；&lt;/li&gt;&#xA;&lt;li&gt;B 出口防火墙会话表有 created；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;专线 B 侧有出包，A 侧专线口没有对应入包&lt;/strong&gt;；&lt;/li&gt;&#xA;&lt;li&gt;同时在 A 的&lt;strong&gt;旧上联/备用出口&lt;/strong&gt;上，出现了目的为 A_VIP 的怪异入向流量（且被 antispoof/严格 uRPF 或安全策略丢掉）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;也就是说：B 以为自己走新专线去 A，但&lt;strong&gt;实际回程/对向某段仍把流量 steers 到旧路径&lt;/strong&gt;，形成经典的&lt;strong&gt;非对称路由（asymmetric routing）&lt;/strong&gt;；中间任一设备做了状态检测或反向路径校验，就会表现为「单向可达」。&lt;/p&gt;&#xA;&lt;h3 id=&#34;3-对照三张表转发表策略路由nat&#34;&gt;&lt;a href=&#34;#3-%e5%af%b9%e7%85%a7%e4%b8%89%e5%bc%a0%e8%a1%a8%e8%bd%ac%e5%8f%91%e8%a1%a8%e7%ad%96%e7%95%a5%e8%b7%af%e7%94%b1nat&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3. 对照三张表：转发表、策略路由、NAT&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;把割接 checklist 里「已经改完」的对象重新导出对账，而不是只看变更单勾选：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;检查项&lt;/th&gt;&#xA;          &lt;th&gt;A 核心&lt;/th&gt;&#xA;          &lt;th&gt;B 核心&lt;/th&gt;&#xA;          &lt;th&gt;A 边界 FW&lt;/th&gt;&#xA;          &lt;th&gt;B 边界 FW&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;业务网段路由下一跳&lt;/td&gt;&#xA;          &lt;td&gt;仍指向旧互联&lt;/td&gt;&#xA;          &lt;td&gt;新专线&lt;/td&gt;&#xA;          &lt;td&gt;DNAT 已切&lt;/td&gt;&#xA;          &lt;td&gt;正常&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;回程明细路由&lt;/td&gt;&#xA;          &lt;td&gt;缺失 B 新网段细路由&lt;/td&gt;&#xA;          &lt;td&gt;有&lt;/td&gt;&#xA;          &lt;td&gt;有&lt;/td&gt;&#xA;          &lt;td&gt;有&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;策略路由（PBR）&lt;/td&gt;&#xA;          &lt;td&gt;旧 match 未删&lt;/td&gt;&#xA;          &lt;td&gt;新 policy 生效&lt;/td&gt;&#xA;          &lt;td&gt;—&lt;/td&gt;&#xA;          &lt;td&gt;源网段 match 半生效&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;会话残留&lt;/td&gt;&#xA;          &lt;td&gt;无&lt;/td&gt;&#xA;          &lt;td&gt;有旧 SPI/旧隧道&lt;/td&gt;&#xA;          &lt;td&gt;长连接未清&lt;/td&gt;&#xA;          &lt;td&gt;已清&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;关键发现有三条：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;A 侧核心对「B 新业务网段」缺少更优的明细路由&lt;/strong&gt;，最长匹配落到一条更宽的默认/汇总，下一跳仍是割接前的旧互联地址。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;B 侧有一条基于源地址的策略路由&lt;/strong&gt;：迁移过来的新网段访问「总部/机房 A」应走新专线，但 match ACL 只写了部分子网，&lt;strong&gt;漏写了当晚临时扩容的 /26&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;li&gt;边界防火墙上，A→B 的新建连正常；B→A 因路径绕行，包以「非预期入接口」到达 A，被 &lt;strong&gt;strict RPF / 接口防欺骗&lt;/strong&gt; 静默丢弃——所以 A 业务机 tcpdump 空白，特别像「没人来连」。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;4-控制面确认不是-ospf-抖动是静态pbr-漂移&#34;&gt;&lt;a href=&#34;#4-%e6%8e%a7%e5%88%b6%e9%9d%a2%e7%a1%ae%e8%ae%a4%e4%b8%8d%e6%98%af-ospf-%e6%8a%96%e5%8a%a8%e6%98%af%e9%9d%99%e6%80%81pbr-%e6%bc%82%e7%a7%bb&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4. 控制面确认：不是 OSPF 抖动，是静态/PBR 漂移&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;show ip ospf neighbor&lt;/code&gt; / 邻居状态稳定，没有 Flap；问题集中在&lt;strong&gt;割接时手工切的静态与 PBR&lt;/strong&gt;。再查变更窗口的操作记录，发现执行顺序是：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;先切业务 DNS / VIP；&lt;/li&gt;&#xA;&lt;li&gt;再切防火墙 DNAT；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;最后才改路由，且 A/B 两侧不是同一人、同一时间点提交&lt;/strong&gt;；&lt;/li&gt;&#xA;&lt;li&gt;回退演练只验证了 A→B 主路径，&lt;strong&gt;没有强制做 B→A 与回调路径验收&lt;/strong&gt;。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;于是出现了「业务对外看起来活着，跨机房回程悄悄裂开」的窗口。&lt;/p&gt;&#xA;&lt;h3 id=&#34;5-业务层二次验证&#34;&gt;&lt;a href=&#34;#5-%e4%b8%9a%e5%8a%a1%e5%b1%82%e4%ba%8c%e6%ac%a1%e9%aa%8c%e8%af%81&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;5. 业务层二次验证&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;挑三类代表流量复测：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;纯正向：A 批处理拉 B API → 基本成功；&lt;/li&gt;&#xA;&lt;li&gt;纯反向：B 同步任务写 A → 失败；&lt;/li&gt;&#xA;&lt;li&gt;回调：B 处理完主动 POST A 回调 URL → 失败。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;与网络层结论完全同构，排除「个别应用 bug」干扰。&lt;/p&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;#%e6%ad%a2%e8%a1%80%e5%88%86%e9%92%9f%e7%ba%a7&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;止血（分钟级）&#xD;&#xA;&lt;/h3&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;在 A 核心补齐 B 新网段明细静态路由&lt;/strong&gt;，下一跳强制指向新专线对端，&lt;code&gt;metric&lt;/code&gt; 优于汇总默认。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;修正 B 侧 PBR 的 match ACL&lt;/strong&gt;，把漏网的 /26 与临时测试网段一次性纳入，确保源网段回总部/ A 时统一走新专线。&lt;/li&gt;&#xA;&lt;li&gt;边界防火墙：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;临时将相关接口 RPF 从 strict 调整为 loose（或对专线口加例外），避免好路径未完全收敛时误杀；&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;clear session&lt;/code&gt; 清掉绕行产生的半开/错向会话。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;业务侧：对回调类任务短暂切到「A 主动拉取」降级模式，减少用户可见失败。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;按此操作约 10 分钟后，B→A 三次握手恢复，回调成功率回到基线。&lt;/p&gt;&#xA;&lt;h3 id=&#34;根治当天窗口收口&#34;&gt;&lt;a href=&#34;#%e6%a0%b9%e6%b2%bb%e5%bd%93%e5%a4%a9%e7%aa%97%e5%8f%a3%e6%94%b6%e5%8f%a3&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;根治（当天窗口收口）&#xD;&#xA;&lt;/h3&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;路由即代码&lt;/strong&gt;：把 A/B 核心静态、PBR、防火墙路线用同一份 inventory（网段、下一跳、接口、优先级）生成，禁止两侧各改各的。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;割接验收改为「双向五元组矩阵」&lt;/strong&gt;，至少覆盖：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A→B 业务端口；&lt;/li&gt;&#xA;&lt;li&gt;B→A 业务端口；&lt;/li&gt;&#xA;&lt;li&gt;回调 URL；&lt;/li&gt;&#xA;&lt;li&gt;管理面（跳板机、监控、备份）；&lt;/li&gt;&#xA;&lt;li&gt;大包（&lt;code&gt;ping -M do -s 1400&lt;/code&gt;）防止隐式 MTU 问题夹带进来。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;严格 RPF 只在收敛完成后加回&lt;/strong&gt;；窗口内对新建互联口使用可观测的 drop 计数告警，而不是静默丢。&lt;/li&gt;&#xA;&lt;li&gt;旧互联地址、旧汇总路由设置明确 &lt;strong&gt;撤线时间与只读标记&lt;/strong&gt;，防止「先留着保底」变成长期黑洞入口。&lt;/li&gt;&#xA;&lt;li&gt;在流量分析/NetFlow 上对「非预期入接口访问本机房 VIP」做基线告警，作为非对称路径的持续探针。&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;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;路径规划只画了去程&lt;/strong&gt;：搬迁方案重点写「业务怎么进新机房」，回程与回调被默认成「对称自愈」，在静态+PBR 环境里不成立。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;两侧变更不同步&lt;/strong&gt;：路由、NAT、DNS、策略路由分属不同执行人，缺少同一时刻的配置快照对账，出现「半切」状态。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;验收探针路径不覆盖故障路径&lt;/strong&gt;：本机房健康检查与 A→B 主路径全绿，&lt;strong&gt;恰好照不到 B→A 与错误入接口丢包&lt;/strong&gt;。再叠加 strict RPF，故障表现从「绕路」升级成「单向黑洞」。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;技术本质是：&lt;strong&gt;跨机房割接中的控制面（静态/PBR）与数据面期望路径不一致，形成非对称路由；状态防火墙/RPF 把不对称放大成业务单向可达。&lt;/strong&gt;&lt;/p&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;搬迁网络设计强制输出三张图&lt;/strong&gt;：去程、回程、管理面；任何网段变更必须三图同时改。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;变更单增加「双向连通矩阵」必填项&lt;/strong&gt;，未测双向不得宣布窗口成功。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PBR/静态路由变更走生成式配置&lt;/strong&gt;，ACL 网段从 CMDB 自动展开，避免手写漏网段。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;窗口内保留可快速回退的对称路径&lt;/strong&gt;，但回退条目要有 TTL 和自动失效，禁止无限期双路径并存。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;监控补齐路径级探测&lt;/strong&gt;：从 A/B 双侧合成「对向 VIP + 关键端口」拨测，而不是只做本机 process up。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;RPF/防欺骗策略与割接 runbook 绑定&lt;/strong&gt;：割接中 loose、收敛后 strict，并确认 drop 计数进告警。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;演练要包含「回调失败」场景&lt;/strong&gt;：只测浏览器打开首页，测不出这类半通故障。&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;这次机房搬迁表面上「业务在新机房活了」，实质上卡在&lt;strong&gt;回程路由与策略路由未同步&lt;/strong&gt;，再被严格反向路径校验打成单向黑洞。排障关键不是先改应用，而是：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;用双向 curl/tcptraceroute 把问题钉成方向性；&lt;/li&gt;&#xA;&lt;li&gt;多点对称抓包证明非对称路径；&lt;/li&gt;&#xA;&lt;li&gt;对账静态路由、PBR match、NAT 与 RPF；&lt;/li&gt;&#xA;&lt;li&gt;先补明细回程与 ACL，再收紧安全策略。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;对有搬迁/割接任务的团队，最大教训就一句话：&lt;strong&gt;能通一半往往比全断更危险——因为它能通过错误的验收。&lt;/strong&gt; 把回程写进设计、把双向写进验收、把生成式配置写进变更，下一次割接才不会在周一早高峰才暴露「半张网」。&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>记一次跨机房链路变更验收Checklist的落地：连通矩阵、回程路由与MTU三道关</title>
            <link>https://blog.5772447.xyz/posts/7c686262/</link>
            <pubDate>Tue, 15 Dec 2020 07:00:00 +0800</pubDate>
            <guid>https://blog.5772447.xyz/posts/7c686262/</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;机房搬迁、专线扩容、防火墙替换、VPN 重协商这类跨机房链路变更，现场最常见的验收口径是「两边能 ping 通、核心业务打开页面」。看起来很快，晚上却往往出事：A 到 B 正常、B 到 A 超时；小包没事、大文件/数据库同步卡死；白天流量小看不出来，晚高峰回程路径一拥塞就全面抖。&lt;/p&gt;&#xA;&lt;p&gt;结合近年处置过的非对称路由、PMTUD 黑洞、OSPF 配置漂移、专线抖动等案例，我们把零散经验收成一份&lt;strong&gt;跨机房链路变更验收 Checklist&lt;/strong&gt;，并在一次生产窗口强制落地。目标不是再写一篇事后复盘，而是让值班在变更当晚按清单逐项打勾，把「半通 / 大包不通 / 路径漂移」挡在业务发现之前。&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;p&gt;变更窗口结束后，监控与值守群一度显示「正常」：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;ICMP 通&lt;/strong&gt;：核心交换机、关键服务器双向 &lt;code&gt;ping&lt;/code&gt; 延迟稳定，丢包为 0。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;页面通&lt;/strong&gt;：运维从办公网打开对端工单/监控，HTTPS 能打开。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;告警静默&lt;/strong&gt;：链路 up、BGP/OSPF 邻居 Established、专线 SD-WAN 面板全绿。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;约 40 分钟后问题陆续冒头：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;单向业务失败&lt;/strong&gt;：A 机房调用 B 机房内部 API 正常，反向回调/Webhook 超时；部分日志同步只见 half-open。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;大包业务卡死&lt;/strong&gt;：跨机房备份、镜像同步、数据库物理复制进度条长时间不动；&lt;code&gt;ping&lt;/code&gt; 小包仍正常。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;路径不一致&lt;/strong&gt;：&lt;code&gt;traceroute&lt;/code&gt; 去程走新专线，回程仍钻旧 VPN 或策略路由旁路；NAT/状态防火墙开始出现「只见半连接」。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;晚高峰放大&lt;/strong&gt;：业务量上来后抖动与重传激增，一线又会把锅甩给「应用层超时配置」。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;若只以「能 ping」结单，这类故障会伪装成应用问题，排查成本成倍上升。&lt;/p&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-停掉能-ping-就收工的习惯&#34;&gt;&lt;a href=&#34;#1-%e5%81%9c%e6%8e%89%e8%83%bd-ping-%e5%b0%b1%e6%94%b6%e5%b7%a5%e7%9a%84%e4%b9%a0%e6%83%af&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1. 停掉「能 ping 就收工」的习惯&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;窗口负责人没有直接关单，而是拉出验收清单，按&lt;strong&gt;业务矩阵 → 双向路径 → 大包/MTU → 协议与冗余 → 回退点&lt;/strong&gt;五段复核。同时保留变更前配置快照、路由表导出与流量基线，避免「修着修着不知道改过什么」。&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-第一道关连通矩阵比单点-ping-重要&#34;&gt;&lt;a href=&#34;#2-%e7%ac%ac%e4%b8%80%e9%81%93%e5%85%b3%e8%bf%9e%e9%80%9a%e7%9f%a9%e9%98%b5%e6%af%94%e5%8d%95%e7%82%b9-ping-%e9%87%8d%e8%a6%81&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2. 第一道关：连通矩阵（比单点 ping 重要）&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;列出跨机房真实流量，而不是只测运维跳板机：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;源区域&lt;/th&gt;&#xA;          &lt;th&gt;目标区域&lt;/th&gt;&#xA;          &lt;th&gt;代表流量&lt;/th&gt;&#xA;          &lt;th&gt;协议/端口&lt;/th&gt;&#xA;          &lt;th&gt;期望&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;A 应用区&lt;/td&gt;&#xA;          &lt;td&gt;B 数据库区&lt;/td&gt;&#xA;          &lt;td&gt;业务读写&lt;/td&gt;&#xA;          &lt;td&gt;TCP 业务端口&lt;/td&gt;&#xA;          &lt;td&gt;双向可建连&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;B 应用区&lt;/td&gt;&#xA;          &lt;td&gt;A API 网关&lt;/td&gt;&#xA;          &lt;td&gt;回调/Webhook&lt;/td&gt;&#xA;          &lt;td&gt;TCP 443/业务口&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;反向同样要通&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;A 备份网&lt;/td&gt;&#xA;          &lt;td&gt;B 对象存储/NAS&lt;/td&gt;&#xA;          &lt;td&gt;备份复制&lt;/td&gt;&#xA;          &lt;td&gt;TCP/NFS/专用口&lt;/td&gt;&#xA;          &lt;td&gt;持续大流量稳定&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;监控区&lt;/td&gt;&#xA;          &lt;td&gt;两端主机&lt;/td&gt;&#xA;          &lt;td&gt;探针/exporter&lt;/td&gt;&#xA;          &lt;td&gt;ICMP+TCP&lt;/td&gt;&#xA;          &lt;td&gt;对称可达&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;办公运维&lt;/td&gt;&#xA;          &lt;td&gt;两端堡垒/带外&lt;/td&gt;&#xA;          &lt;td&gt;运维通道&lt;/td&gt;&#xA;          &lt;td&gt;SSH/RDP/HTTPS&lt;/td&gt;&#xA;          &lt;td&gt;变更中不中断&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;执行要求：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;每个格子用&lt;strong&gt;源侧真实网段主机&lt;/strong&gt;测，不拿 NAT 后的跳板机冒充应用源&lt;/li&gt;&#xA;&lt;li&gt;同时测 &lt;strong&gt;TCP 端口&lt;/strong&gt;（&lt;code&gt;nc&lt;/code&gt;/&lt;code&gt;Test-NetConnection&lt;/code&gt;/&lt;code&gt;curl&lt;/code&gt;），不只靠 ICMP&lt;/li&gt;&#xA;&lt;li&gt;关键 &lt;code&gt;conntrack&lt;/code&gt;/会话表，确认是 ESTABLISHED，而不是反复 SYN 重试&lt;/li&gt;&#xA;&lt;li&gt;任一方「半通」即判验收失败，禁止用「业务侧可绕行」抵赖&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;本窗口第一轮就扫出 2 条反向路径缺失：B→A 的回调地址仍指向旧 VIP，A 侧安全策略只放行了新专线网段的入向，出向回包被旧策略路由送进黑洞。&lt;/p&gt;&#xA;&lt;h3 id=&#34;3-第二道关回程路由与对称性&#34;&gt;&lt;a href=&#34;#3-%e7%ac%ac%e4%ba%8c%e9%81%93%e5%85%b3%e5%9b%9e%e7%a8%8b%e8%b7%af%e7%94%b1%e4%b8%8e%e5%af%b9%e7%a7%b0%e6%80%a7&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3. 第二道关：回程路由与对称性&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;「去程通、回程不通」是跨机房变更的高频杀手。清单强制做：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;双向 traceroute / 路由查表&lt;/strong&gt;&lt;br&gt;&#xA;在源、目的各取 2 个真实主机，对打并记录路径哈希（下一跳序列）。去程与回程若不一致，标记为「非对称」，进入高风险清单。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;策略路由 / PBR / 默认路由优先级&lt;/strong&gt;&lt;br&gt;&#xA;核对静态路由、SD-WAN 选路、防火墙 policy-based route 是否与新链路同步；禁止只改一边的下一跳。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;状态防火墙与 RPF&lt;/strong&gt;&lt;br&gt;&#xA;对启用 strict uRPF / 会话严格绑定入接口的设备，非对称几乎必然丢回程。能改 loose 的评估影响；不能改的必须把去程回程收敛到同一逻辑路径。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;NAT 边界&lt;/strong&gt;&lt;br&gt;&#xA;跨机房若存在源 NAT/目的 NAT，验收时确认两端看到的五元组一致，避免「A 以为连的是 10.x，B 回的是公网映射地址」。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;本窗口发现：新专线只在 A 侧注入了更优 metric，B 侧回程仍偏好旧 IPsec。白天流量小时偶发成功（部分流碰巧对称），高峰则大面积超时——典型「验收假绿」。&lt;/p&gt;&#xA;&lt;h3 id=&#34;4-第三道关mtu--mss--大包&#34;&gt;&lt;a href=&#34;#4-%e7%ac%ac%e4%b8%89%e9%81%93%e5%85%b3mtu--mss--%e5%a4%a7%e5%8c%85&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4. 第三道关：MTU / MSS / 大包&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;小包通、大文件卡，优先怀疑隧道封装与 PMTUD：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;测路径 MTU&lt;/strong&gt;&lt;br&gt;&#xA;&lt;code&gt;ping -M do -s &amp;lt;size&amp;gt;&lt;/code&gt;（Linux）或等价大包 DF 探测，从 1500 递减找到两端实际可用 MTU；隧道场景常见有效载荷掉到 1400 附近。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;禁止只靠「不分片就缩小包」糊弄&lt;/strong&gt;&lt;br&gt;&#xA;业务 TCP 若 MSS 未钳制，仍会发接近 1500 的包，中间丢 ICMP「需要分片」时即 PMTUD 黑洞。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;验收项必须含大包业务&lt;/strong&gt;&lt;br&gt;&#xA;至少跑一轮：&lt;code&gt;iperf&lt;/code&gt;/&lt;code&gt;smb&lt;/code&gt; 大文件、数据库逻辑同步、对象存储 multipart；持续 3–5 分钟看重传与吞吐是否达到基线 80% 以上。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;设备侧检查&lt;/strong&gt;&lt;br&gt;&#xA;隧道口 MTU、TCP MSS adjust、是否错误丢弃 ICMP Type3 Code4、是否对 DF 包粗暴 drop。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;本窗口第三关直接复现：ICMP 64 字节完美，1420+ DF 包在防火墙被静默丢弃；备份任务卡在初始化后的大块传输。放通必要 ICMP 差错并在网关做 MSS 钳制后恢复。&lt;/p&gt;&#xA;&lt;h3 id=&#34;5-协议邻居冗余与回退演练&#34;&gt;&lt;a href=&#34;#5-%e5%8d%8f%e8%ae%ae%e9%82%bb%e5%b1%85%e5%86%97%e4%bd%99%e4%b8%8e%e5%9b%9e%e9%80%80%e6%bc%94%e7%bb%83&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;5. 协议邻居、冗余与回退演练&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;在三道关都绿后，补协议与运维动作：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;路由协议：邻居稳定时长、LSA/前缀数量对比变更前、是否出现 flap damping&lt;/li&gt;&#xA;&lt;li&gt;冗余：主断备切、备断主回切各测一次，观察收敛时间与是否双主/黑洞&lt;/li&gt;&#xA;&lt;li&gt;DNS/VIP/证书：跨机房域名解析与证书 SAN 是否指向新入口&lt;/li&gt;&#xA;&lt;li&gt;回退点：保留旧链路 admin-down 而非物理拆线，直到观察期结束；回退步骤写成 5 分钟内可执行的命令序&lt;/li&gt;&#xA;&lt;li&gt;观察期：至少覆盖一个业务高峰 + 一次备份窗，监控丢包、时延、会话失败率、专用链路带宽&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;6-清单落地时的分工与门禁&#34;&gt;&lt;a href=&#34;#6-%e6%b8%85%e5%8d%95%e8%90%bd%e5%9c%b0%e6%97%b6%e7%9a%84%e5%88%86%e5%b7%a5%e4%b8%8e%e9%97%a8%e7%a6%81&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;6. 清单落地时的分工与门禁&#xD;&#xA;&lt;/h3&gt;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;角色&lt;/th&gt;&#xA;          &lt;th&gt;职责&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;变更执行&lt;/td&gt;&#xA;          &lt;td&gt;按变更单改配置，输出前后 diff&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;网络值班&lt;/td&gt;&#xA;          &lt;td&gt;跑连通矩阵与 traceroute，填写路径记录&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;业务代表&lt;/td&gt;&#xA;          &lt;td&gt;对关键交易/同步链路做真实拨测&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;安全/防火墙&lt;/td&gt;&#xA;          &lt;td&gt;确认策略与会话、ICMP 差错、NAT&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;变更经理&lt;/td&gt;&#xA;          &lt;td&gt;三道关全部勾选后才允许「初步完成」&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;strong&gt;门禁规则&lt;/strong&gt;：任一关未通过 → 不得关闭变更单；可暂时业务放行但必须保持旧链路可秒级回退，并升级为 P1 跟踪。&lt;/p&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;p&gt;当晚按 Checklist 闭环处理，而不是继续和业务「对现象」：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;补齐反向路由与策略&lt;/strong&gt;：B 侧注入指向新专线的回程明细；回调 VIP 与安全策略源站网段对齐；清理指向已下线地址的残余静态路由。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;收敛非对称&lt;/strong&gt;：短期用策略路由强制关键子网对走同一逻辑隧道；中期把 SD-WAN/动态路由 metric 两端对称发布，取消「只在一端宣告更优」。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;修复 MTU 路径&lt;/strong&gt;：放行路径上 ICMP fragmentation needed；隧道口设置合理 MTU；边界做 &lt;code&gt;tcp adjust-mss&lt;/code&gt;；用大包业务回归确认吞吐回基线。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;固化验收产出物&lt;/strong&gt;：每次跨机房变更强制附件三份——连通矩阵结果表、双向 traceroute 文本、大包测试截图/日志；缺一不结单。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;观察 48 小时&lt;/strong&gt;：覆盖一次晚高峰与一次跨机房备份窗，无半通与吞吐塌陷后，再 admin-down 旧链路进入拆除排期。&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;表层是「路由/策略/MTU 各改了一点却没形成闭环」，深层是验收标准错误：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;用连通性代替业务性&lt;/strong&gt;：ping 通 ≠ 业务双向可用，更不等于大包与长连接可用。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;用单点代替矩阵&lt;/strong&gt;：只测运维主机与个别 VIP，漏掉回调、备份、监控等反向与旁路流量。&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;：专线/IPsec/GRE/VXLAN 叠加后有效 MTU 下降，PMTUD 若被安全策略误伤，故障只在大包时出现，白天小流量验收永远绿。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;缺少强制门禁&lt;/strong&gt;：清单若只是「参考」，窗口压力下仍会被跳过；必须与结单流程绑定。&lt;/li&gt;&#xA;&lt;/ol&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;h3 id=&#34;a-变更前t-1&#34;&gt;&lt;a href=&#34;#a-%e5%8f%98%e6%9b%b4%e5%89%8dt-1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;A. 变更前（T-1）&#xD;&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 导出两端路由表、策略路由、NAT、隧道 MTU/MSS、邻居状态&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 画清本次流量矩阵（至少含业务、回调、备份、运维、监控）&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 明确主路径/回退路径与可接受中断窗口&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 预置大包测试账号与 &lt;code&gt;iperf&lt;/code&gt;/文件源，不靠临时找业务要包&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;b-变更中执行&#34;&gt;&lt;a href=&#34;#b-%e5%8f%98%e6%9b%b4%e4%b8%ad%e6%89%a7%e8%a1%8c&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;B. 变更中（执行）&#xD;&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 配置 diff 双人复核，禁止口播改生产&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 每完成一段切换就跑矩阵对应格子，不做「全部改完再测」&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 旧链路保持可回退，直到三道关通过&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;c-变更后验收三道关缺一不可&#34;&gt;&lt;a href=&#34;#c-%e5%8f%98%e6%9b%b4%e5%90%8e%e9%aa%8c%e6%94%b6%e4%b8%89%e9%81%93%e5%85%b3%e7%bc%ba%e4%b8%80%e4%b8%8d%e5%8f%af&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;C. 变更后（验收三道关，缺一不可）&#xD;&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;strong&gt;关 1 连通矩阵&lt;/strong&gt;：双向 TCP/业务端口全绿，无半开连接&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;strong&gt;关 2 回程对称&lt;/strong&gt;：双向 traceroute 路径符合设计，无意外旁路&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;strong&gt;关 3 MTU/大包&lt;/strong&gt;：DF 大包与真实大流量业务达标&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 冗余切换与回切演练完成&lt;/li&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 观察期与监控基线对比通过&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;d-制度化&#34;&gt;&lt;a href=&#34;#d-%e5%88%b6%e5%ba%a6%e5%8c%96&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;D. 制度化&#xD;&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;把本 Checklist 嵌入变更管理系统：跨机房/跨专线类别强制模板&lt;/li&gt;&#xA;&lt;li&gt;季度抽检历史变更附件，缺矩阵/缺 traceroute 记流程缺陷&lt;/li&gt;&#xA;&lt;li&gt;与「机房搬迁割接」「PMTUD/黑洞」「路由震荡」类事故单做关联培训，新人上岗先跑一遍模拟矩阵&lt;/li&gt;&#xA;&lt;/ul&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;跨机房链路变更最怕的不是完全不通，而是&lt;strong&gt;半通、大包不通、高峰才爆&lt;/strong&gt;。把验收从「ping 一下」升级为 &lt;strong&gt;连通矩阵 + 回程对称 + MTU/大包&lt;/strong&gt; 三道关，并用结单门禁卡住，是成本最低、收益最稳的防坑手段。&lt;/p&gt;&#xA;&lt;p&gt;本篇作为网络侧方法论/Checklist，和既有的机房搬迁非对称路由、IPSec 大包/PMTUD、OSPF flap 等排查文互补：那些文章回答「出了什么事」，本清单回答「怎样在当晚就证明没出事」。建议团队直接复制表格进变更单模板，按现场拓扑改端口与代表主机，不必等下一次半夜回填再补课。&lt;/p&gt;&#xA;&lt;hr&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;p&gt;&lt;strong&gt;IPSec 隧道与 MTU&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/6ef1b86a/&#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/f11611fb/&#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/3c48c9b3/&#34; &gt;IPSec VPN MTU 不匹配致 ERP 远程访问异常：定位与修复&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item></channel>
</rss>
