# 防火墙策略不通怎么排查 ## 场景 「策略明明放行了,就是不通」。防火墙排障和路由器不一样:包可能被策略拒、被 NAT 改错、被路由丢了,现象都一样(不通、超时),原因差很远。 这篇是一套固定顺序,从最外层往最里层走,每步都有明确的判定标准,不用靠猜。 ## 前置条件 - 能登录防火墙(串口/SSH) - 知道源 IP、目的 IP、目的端口、协议 - 知道流量方向(哪个区域到哪个区域) - 最好有维护窗口,抓包会占 CPU ## 配置 **第一步:确认有没有会话** ```bash display firewall session table display firewall session table verbose source 192.168.10.50 display firewall session table verbose destination 1.2.3.5 ``` - **有会话** → 说明策略和 NAT 都过了,问题在路由或对端 - **没有会话** → 包根本没被放行,或者压根没到防火墙 **第二步:看策略命中** ```bash display security-policy rule all display security-policy statistics ``` 顺序是从上往下匹配,**第一条命中的决定结果**。看有没有一条 deny 在你的 permit 上面。 **第三步:确认区域划对** ```bash display zone display interface brief ``` 接口不在区域里,策略里就选不到它,现象是「配了策略但不生效」。 **第四步:确认 NAT 对不对** ```bash display nat-policy rule all display firewall server-map # 服务器映射有没有生效 display nat session table # 实际转换结果 ``` 看转换后的源/目的地址是不是你期望的。源 NAT 配错网段,包出去了但回不来。 **第五步:确认路由和回程** ```bash display ip routing-table display ip routing-table 8.8.8.8 display ip routing-table 192.168.10.50 ``` 去和回两条路由都要有。**只配去程没配回程**是最常见的「单向通」。 **第六步:抓包定位** ```bash capture-packet interface GigabitEthernet1/0/2 destination file 1.pcap capture-packet interface GigabitEthernet1/0/1 destination file 2.pcap ``` 内外网口各抓一份,对比: - 内网口有包、外网口没包 → NAT 或策略丢了 - 两个口都有包,但没回应 → 对端或路由问题 - 外网口有回应包、内网口没有 → 回程策略或 NAT 反查失败 抓完记得停: ```bash capture-packet stop ``` ## 验证 排查结论要用一次实际访问来验证,不能只看命令输出。 ```bash # 触发一次访问,然后立刻看 display firewall session table verbose destination 1.2.3.5 display security-policy statistics ``` 会话表里出现了、统计里那条规则计数 +1,才算真的走通了。 ## 回滚 排查阶段尽量只读,不改配置。非要临时改的话: ```bash # 临时加一条放行,放在最前面 security-policy rule name temp_allow source-zone trust destination-zone untrust destination-address 1.2.3.5 32 service tcp destination-port 8080 action permit quit quit ``` 查完记得删掉 `undo security-policy rule name temp_allow`,临时规则是最容易被忘的东西。 ## 坑 !!! note "策略顺序比策略内容更容易出错" 防火墙是从上往下第一条命中即停。你新加的 permit 如果排在一条 deny 下面, 永远不会生效。加规则时先看 `display security-policy rule all` 的顺序。 - **NAT server 不自动放行**:配了映射还要配 untrust→trust 的 permit,否则外面连不上。 - **easy-ip 和无 NAT 混用**:同一条流量如果同时命中「不转换」和「easy-ip」,结果取决于规则顺序。 - 策略里的 `service` 是预定义服务,自定义端口要用 `service tcp destination-port 8080` 这种写法,别直接写数字。 - 应用层协议(FTP 主动模式、SIP、H.323)需要 ALG/ASPF,只放行控制端口不够,会卡在数据连接。 - 双机热备环境下,**备机不通是正常的**(它是 standby),排障要在 active 上做。 - 会话表有老化时间。改完策略立刻测可能还是旧会话在生效,`reset firewall session table` 清一下再测。 - 抓包文件存在设备 flash 上,抓太久会写满,`dir` 看一下剩余空间。 - 时间不对会导致证书、日志、时间相关策略异常,排障第一步先 `display clock`。 ## 相关 - [防火墙上线配置(区域与策略)](防火墙上线配置(区域与策略).md) - [防火墙双机热备(主备模式)](防火墙双机热备(主备模式).md)