<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Firewall4 on Zero Day Notes</title>
        <link>https://blog.5772447.xyz/tags/firewall4/</link>
        <description>Recent content in Firewall4 on Zero Day Notes</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Sat, 08 Aug 2026 07:00:00 +0800</lastBuildDate><atom:link href="https://blog.5772447.xyz/tags/firewall4/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>OpenWrt旁路由升级后内网专线业务为何全断？一次firewall4默认策略变更的排查实录</title>
            <link>https://blog.5772447.xyz/posts/66ccc411/</link>
            <pubDate>Sat, 08 Aug 2026 07:00:00 +0800</pubDate>
            <guid>https://blog.5772447.xyz/posts/66ccc411/</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;公司总部到分支机房有一条专线，出口由主路由承担 PPPoE / 策略路由，一台 x86 小主机刷 OpenWrt 做&lt;strong&gt;旁路由&lt;/strong&gt;：只负责科学上网、内网 DNS 分流、部分业务 VLAN 的策略转发，不直接做 NAT 出口。日常几乎零故障，于是变更窗口一拖再拖，固件一直停在 22.03。&lt;/p&gt;&#xA;&lt;p&gt;最近为了修几个已知 CVE、顺带把 packages 跟上源，运维在周末凌晨把这台旁路由原地升级到 23.05。LuCI 能开、ping 网关正常、无线客户端上网也没异样。结果周一早高峰一到，分支机房访问总部 ERP、视频会议、打印机映射全部超时；总部侧看起来“线路绿着”，专线运营商检测也说丢包率正常——典型的&lt;strong&gt;看起来通、业务死&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;同网段本机互访正常&lt;/strong&gt;：总部办公区访问总部服务器、分支访问分支本地 NAS 都不受影响。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;经旁路由策略转发的跨站业务全挂&lt;/strong&gt;：源地址被 PBR（Policy-Based Routing）导入旁路由的流量，目标是对端机房内网网段时，客户端报超时 / 半开连接；抓包能看到 SYN 出去，几乎等不到 SYN-ACK。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;旁路由自身上网正常&lt;/strong&gt;：&lt;code&gt;ping 1.1.1.1&lt;/code&gt;、访问 LuCI、&lt;code&gt;opkg update&lt;/code&gt; 都成功，容易让人误判“路由没问题，一定是专线/应用层”。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;主路由策略路由计数在涨&lt;/strong&gt;：对端回程报文其实到了主路由，说明专线物理层与运营商侧无中断。&lt;/li&gt;&#xA;&lt;li&gt;升级窗口前一周一切正常；变更 diff 表面只有固件大版本，业务配置“原样保留”。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;最坑的一点是：升级脚本宣称 &lt;em&gt;config migrated&lt;/em&gt;，UCI 里 &lt;code&gt;firewall&lt;/code&gt; 段看起来还在，没有明显被清空的规则——所以第一反应几乎都不会去怀疑防火墙默认策略。&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-先定边界是专线死还是某条路径死&#34;&gt;&lt;a href=&#34;#1-%e5%85%88%e5%ae%9a%e8%be%b9%e7%95%8c%e6%98%af%e4%b8%93%e7%ba%bf%e6%ad%bb%e8%bf%98%e6%98%af%e6%9f%90%e6%9d%a1%e8%b7%af%e5%be%84%e6%ad%bb&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1. 先定边界：是专线死，还是“某条路径”死&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;在分支机房挑一台能复现的 PC，同时做三组对照：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;直连主路由默认网关 → 访问总部指定网段：&lt;strong&gt;通&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;强制走旁路由（临时把网关指到旁路由 LAN，或在主路由开一条只匹配这台 PC 的 PBR）→ &lt;strong&gt;不通&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;旁路由上 &lt;code&gt;ping&lt;/code&gt; 对端网关 / &lt;code&gt;traceroute&lt;/code&gt; 对端服务器 → 旁路由&lt;strong&gt;自己&lt;/strong&gt;能通&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;结论立刻收窄：&lt;strong&gt;专线与主路由正常，问题出在“经过旁路由转发”的那条路径。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-看转发面不先看应用&#34;&gt;&lt;a href=&#34;#2-%e7%9c%8b%e8%bd%ac%e5%8f%91%e9%9d%a2%e4%b8%8d%e5%85%88%e7%9c%8b%e5%ba%94%e7%94%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2. 看转发面，不先看应用&#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;/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;sysctl net.ipv4.ip_forward&#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;# = 1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip rule; ip route show table all | head&#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;PBR 表项还在，路由条目也指到正确 next-hop。再在旁路由开 &lt;code&gt;tcpdump&lt;/code&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;/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;tcpdump -ni eth0 host &amp;lt;分支客户端IP&amp;gt; and host &amp;lt;总部ERP&amp;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;# 能看到进方向 SYN&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcpdump -ni eth1 host &amp;lt;总部ERP&amp;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;# 出方向有时有、有时没有；回程 SYN-ACK 经常在 br-lan 侧消失&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;入方向到了、出方向或回程丢——很像 &lt;strong&gt;filter 的 FORWARD 链在丢包&lt;/strong&gt;，而不是路由表错。&lt;/p&gt;&#xA;&lt;h3 id=&#34;3-从-iptables-惯性切到-nftables-现实&#34;&gt;&lt;a href=&#34;#3-%e4%bb%8e-iptables-%e6%83%af%e6%80%a7%e5%88%87%e5%88%b0-nftables-%e7%8e%b0%e5%ae%9e&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3. 从 iptables 惯性切到 nftables 现实&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;旧印象里 OpenWrt 22.03 及更早多是 &lt;strong&gt;firewall3 + iptables/fw3&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;iptables -L -n -v&#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;# 空的，或提示用 nft&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nft list ruleset | less&#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;ruleset 赫然是 &lt;strong&gt;firewall4（fw4）基于 nftables&lt;/strong&gt; 的表。再看 zone 与默认策略：&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;uci show firewall | grep -E &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;forward|input|output|name&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fw4 print | head -100&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nft list chain inet fw4 forward&#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;&lt;code&gt;firewall.@defaults[0].forward&lt;/code&gt; 在迁移后变成了 &lt;strong&gt;&lt;code&gt;REJECT&lt;/code&gt; / 等价于 DROP 路径&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;旧机依赖的那条“lan → wan / lan → vpn 隐式允许转发”在 fw3 时代靠 zone forward=&lt;code&gt;ACCEPT&lt;/code&gt; 顶着&lt;/li&gt;&#xA;&lt;li&gt;升级迁移脚本把 &lt;strong&gt;defaults.forward 收紧&lt;/strong&gt;，同时部分自定义 &lt;code&gt;firewall.forwarding&lt;/code&gt; / &lt;code&gt;firewall.rule&lt;/code&gt; 因选项名变更或匿名 section 顺序变化&lt;strong&gt;没有完整落地&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;结果：旁路由作为“纯转发节点”时，&lt;strong&gt;本机 INPUT 仍 ACCEPT（所以 LuCI/ping 自己都好）&lt;/strong&gt;，但 &lt;strong&gt;FORWARD 默认拒&lt;/strong&gt;，跨接口业务包被 nft 静默丢弃&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&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;/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;nft list chain inet fw4 forward | grep -E &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;policy|drop|reject&amp;#39;&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;# policy drop&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;# 计数器在 counter packets 上持续增加，与业务超时时间线吻合&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;把测试机的一条流固定五元组后，对着 counter 刷一次访问，数字精确跳——根因锁定。&lt;/p&gt;&#xA;&lt;h3 id=&#34;4-对照升级前备份&#34;&gt;&lt;a href=&#34;#4-%e5%af%b9%e7%85%a7%e5%8d%87%e7%ba%a7%e5%89%8d%e5%a4%87%e4%bb%bd&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4. 对照升级前备份&#xD;&#xA;&lt;/h3&gt;&lt;p&gt;幸好升级前有 &lt;code&gt;sysupgrade -b&lt;/code&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;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;8&#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;# 旧&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;firewall.@defaults&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;.forward&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ACCEPT&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#75715e&#34;&gt;# 或 zone lan forward=ACCEPT + 明确 forwarding&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;# 新&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;firewall.@defaults&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;.forward&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;REJECT&amp;#39;&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;# 旧存在的 config forwarding&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;#   option src &amp;#39;lan&amp;#39;&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;#   option dest &amp;#39;offload&amp;#39; / &amp;#39;vpn&amp;#39; / 自定义 zone&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;# 新配置中对应 section 丢失或 dest zone 名变更后悬空&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;旁路由场景下我们从来不只依赖 “wan 口出去的 masq”，还有 &lt;strong&gt;lan→专线接口 zone、lan→隧道 zone&lt;/strong&gt; 的 forwarding。迁移后默认变严 + forwarding 悬空，等于把旁路由从“透明转发器”变成了“只许本机说话的终端”。&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;p&gt;目标：先让早高峰业务恢复，再谈优雅配置。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;临时放行旁路由转发（UCI 方式，避免手改 nft 重启丢失）：&lt;/li&gt;&#xA;&lt;/ol&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;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; 8&#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; 9&#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;10&#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;uci set firewall.@defaults&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;.forward&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ACCEPT&amp;#39;&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;# 或更稳妥：只补齐业务需要的 zone forwarding，而不是永久放开 defaults&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uci add firewall forwarding&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uci set firewall.@forwarding&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;-1&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;.src&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;lan&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uci set firewall.@forwarding&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;-1&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;.dest&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;wan&amp;#39;&lt;/span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;# 按实际 zone 名&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uci add firewall forwarding&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uci set firewall.@forwarding&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;-1&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;.src&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;lan&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uci set firewall.@forwarding&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;-1&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;.dest&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s2s&amp;#39;&lt;/span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;# 专线/隧道 zone 名以现场为准&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;uci commit firewall&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/etc/init.d/firewall restart&#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;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;用业务五元组再打一枪，确认 &lt;code&gt;nft&lt;/code&gt; forward 链 counter 不再对应该流增长，SYN-ACK 回来。&lt;/li&gt;&#xA;&lt;li&gt;若仍有个别网段不通，检查 &lt;strong&gt;zone 成员网卡是否还在&lt;/strong&gt;（升级后网卡名/DSA 口名变化会导致 interface 掉出 zone，表现同样是“能 ping 自己不能转”）。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;根治&#34;&gt;&lt;a href=&#34;#%e6%a0%b9%e6%b2%bb&#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;按最小权限重建 forwarding 矩阵&lt;/strong&gt;，不要长期 &lt;code&gt;defaults.forward=ACCEPT&lt;/code&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;只允许 &lt;code&gt;lan → s2s&lt;/code&gt;、&lt;code&gt;lan → vpn&lt;/code&gt;、必要的 &lt;code&gt;s2s → lan&lt;/code&gt; 回程&lt;/li&gt;&#xA;&lt;li&gt;明确 &lt;code&gt;masq&lt;/code&gt; 只开在真正做 NAT 的 zone（旁路由很多场景甚至不应开 masq）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;为自定义 zone 写死名称与 device&lt;/strong&gt;，避免依赖匿名 section 顺序；升级后跑一次：&lt;/li&gt;&#xA;&lt;/ol&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;fw4 restart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nft list ruleset &amp;gt; /root/fw4-after-upgrade.nft&#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;# 与升级前备份 diff&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;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;&lt;strong&gt;变更清单里增加 firewall4 专项&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;firewall.@defaults[0].{input,output,forward}&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;所有 &lt;code&gt;config forwarding&lt;/code&gt; / &lt;code&gt;config rule&lt;/code&gt; / &lt;code&gt;config redirect&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;option device&lt;/code&gt; / &lt;code&gt;option network&lt;/code&gt; 是否仍解析得到&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;旁路由升级改为：&lt;strong&gt;先在同型号备机刷 23.05 → 导入配置 → 用 iperf/业务探针打转发路径 → 再窗口切换&lt;/strong&gt;，禁止生产机“原地碰运气”。&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;根因不是“OpenWrt 坏了”，而是 &lt;strong&gt;防火墙后端换代带来的安全默认值与配置模型漂移&lt;/strong&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;升级前 (fw3/iptables)&lt;/th&gt;&#xA;          &lt;th&gt;升级后 (fw4/nftables)&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;iptables + fw3&lt;/td&gt;&#xA;          &lt;td&gt;nftables + fw4&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;默认转发姿态&lt;/td&gt;&#xA;          &lt;td&gt;现场长期 ACCEPT / 宽松 zone&lt;/td&gt;&#xA;          &lt;td&gt;迁移后偏 REJECT/DROP&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;配置兼容&lt;/td&gt;&#xA;          &lt;td&gt;旧 UCI 基本原义&lt;/td&gt;&#xA;          &lt;td&gt;部分 option/匿名段迁移不完整&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;旁路由特性&lt;/td&gt;&#xA;          &lt;td&gt;依赖 FORWARD 放行&lt;/td&gt;&#xA;          &lt;td&gt;FORWARD 一收紧业务全死、本机仍“看起来健康”&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;旁路由的故障面具有迷惑性：&lt;strong&gt;管理面（INPUT）健康 ≠ 数据面（FORWARD）健康&lt;/strong&gt;。主路由、专线、应用三方都可以“证明自己没问题”，于是锅会在多方之间空转，直到有人在旁路由上直接读 &lt;code&gt;nft&lt;/code&gt; 的 forward policy 与 counter。&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;code&gt;firewall3 → firewall4&lt;/code&gt;、DSA 改造、内核大版本，一律按“网络割接”做，而不是“打个补丁”。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;升级验收探针必须覆盖转发路径&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;至少一条：客户端 → 旁路由 → 对端内网 TCP 业务端口&lt;/li&gt;&#xA;&lt;li&gt;不要只用“能打开 LuCI / 能 ping 外网”当验收&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;配置即代码&lt;/strong&gt;：&lt;code&gt;/etc/config/firewall&lt;/code&gt;、&lt;code&gt;network&lt;/code&gt;、PBR 相关配置进 Git；升级前后自动 diff，forwarding 段数量不得无故减少。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;监控&lt;/strong&gt;：对旁路由 snmp/prometheus 采 &lt;code&gt;nft&lt;/code&gt; counter 或转发流量；业务超时告警与“旁路由 forward drop 速率”关联，避免只盯专线运营商链路灯。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;文档化 zone 矩阵&lt;/strong&gt;：一张表写清 src zone / dest zone / 是否 masq / 是否依赖自定义 rule，新人半夜不敢“顺手修”。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;保留 15 分钟回退包&lt;/strong&gt;：&lt;code&gt;sysupgrade&lt;/code&gt; 前离线保存旧固件 + 完整 backup，确认 SERIAL/电源可进 failsafe。&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;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;OpenWrt 大版本升级 → 防火墙从 fw3 切到 fw4 → 默认 FORWARD 收紧 + 部分 forwarding 迁移丢失 → 旁路由本机仍通但跨站转发静默丢包 → 专线与主路由“背锅”。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;排查口诀可以压成一句：&lt;strong&gt;旁路由疑难，先看 FORWARD policy 与 counter，再看专线。&lt;/strong&gt;&lt;br&gt;&#xA;处理上止血可以短暂放开 defaults.forward，根治必须按 zone 矩阵最小放行，并把 firewall4 纳入升级验收清单。家里或公司的 x86 软路由如果还在 “能上网就当健康”，下次跨大版本前务必先在备机验证一条真实业务的转发路径——否则周一早上等你的，一定是“专线没问题，就是业务全死”的灵魂拷问。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
