策略匹配工具
策略匹配工具
策略匹配(Policy Match)工具用于根据入接口、协议、源/目的地址和端口等参数,查询流量可能匹配的防火墙策略。该工具适合在存在多条相似策略时快速定位候选策略,也可辅助检查身份策略和 Web Filter 的匹配结果。
相关信息
该工具根据当前配置和输入参数执行查询,不会生成真实业务会话。实际流量还会受到路由、VIP/NAT、策略顺序、用户认证状态和会话表等因素影响,因此查询结果不能替代真实流量测试、会话表或 Debug Flow 验证。
iprope 的结构和策略组说明请参考:策略与对象 → iprope 列表章节。
版本变化
FortiOS 7.4.1 及之后版本增强了 Policy Match 工具:
- 查询结果可显示匹配的防火墙策略和 Web Filter 配置文件及动作。
- 支持基于用户或用户组的身份策略匹配。
- GUI 可从结果页跳转到策略列表或直接编辑策略。
- CLI 增加策略类型和身份匹配参数;在原有命令中指定超过 6 个参数时,会启用增强的 Policy Match 查询。
使用前提
在正确的 VDOM 中执行查询。
确认策略所需路由已经存在。入接口是必填参数,且应填写流量实际进入 FortiGate 的接口。
相关信息
可通过源地址的回程路由辅助判断入接口;如果实际流量存在非对称路径,应以数据包真实进入的接口为准。
FortiGate # get router info routing-table details 192.168.100.177 Routing table for VRF=0 Routing entry for 192.168.100.0/24 Known via "connected", distance 0, metric 0, best * is directly connected, lan多 VRF 环境中,入接口、路由和待查询流量必须属于同一 VRF,否则结果可能不准确。
查询 SSL VPN 流量时,入接口应选择对应的 SSL VPN 虚拟接口,源地址应填写当前已认证在线用户获得的 SSL VPN 地址。
基础六参数命令没有用户或用户组参数,查询启用身份认证的策略时可能无法命中预期策略;FortiOS 7.4.1 及之后版本应使用扩展参数。
GUI 查询
进入策略与对象 → 防火墙策略,点击“策略匹配”。
输入查询参数,包括入接口、IP 版本、协议、源地址、源端口(可选)、用户或用户组、目的地址(可以是 IP 或 FQDN)和目的端口。

点击“查找策略匹配”。
检查匹配策略、策略动作,以及 Web Filter 配置文件、FortiGuard 分类及对应动作(需要该策略启用 Web Filter)。

根据需要点击“在列表中显示”在策略列表中定位该策略,或点击“编辑”按钮编辑该策略。
CLI 查询
基础策略查询
基础命令使用 6 个查询参数,protocol 可以使用协议名称,也可以使用 IANA 分配的协议号,例如 TCP 为 6,UDP 为 17:
diagnose firewall iprope lookup <source_ip> <source_port> <destination_ip> <destination_port> <protocol> <device>使用协议名称分别查询 TCP 和 UDP 流量。
# diagnose firewall iprope lookup 192.168.100.177 12345 39.105.115.226 443 tcp wan1 <src [192.168.100.177-12345] dst [39.105.115.226-443] proto tcp dev wan1> matches policy id: 0 # diagnose firewall iprope lookup 39.105.115.226 12345 39.123.11.1 161 udp wan1 <src [192.168.100.177-12345] dst [39.105.115.226-161] proto tcp dev wan1> matches policy id: 1使用协议号执行相同查询。
# diagnose firewall iprope lookup 192.168.100.177 12345 39.105.115.226 443 6 wan1 <src [192.168.100.177-12345] dst [39.105.115.226-443] proto 6 dev wan1> matches policy id: 0 # diagnose firewall iprope lookup 39.105.115.226 12345 39.123.11.1 161 17 wan1 <src [192.168.100.177-12345] dst [39.105.115.226-161] proto 17 dev wan1> matches policy id: 1
提示
示例中的 TCP 查询返回 policy id: 0,表示未命中已配置的放行策略并落到隐式拒绝;UDP 查询命中策略 ID 1。应结合设备上的实际策略配置解释查询结果。
身份和 Web Filter 查询
FortiOS 7.4.1 增加以下扩展格式:
diagnose firewall iprope lookup <source_ip> <source_port> <destination_ip> <destination_port> <protocol> <device> <policy_type> [<auth_type>] [<user/group>] [<server>]policy_type:指定普通防火墙策略policy或代理策略proxy。auth_type、user/group和server:按需提供身份匹配参数。不同版本支持的取值可能不同,可通过命令行?查看当前版本的参数帮助。
以下示例查询本地用户 user1 的 HTTPS 流量。示例环境中,该用户属于防火墙策略引用的用户组,策略同时应用了 Web Filter 配置文件。
# diagnose firewall iprope lookup 192.168.100.177 12345 www.bet365.com 443 6 wan1 policy local user1
firewall policy id: 1
firewall proxy-policy id: 0
matched policy_type: policy
policy_action: accept
webf_profile: default
webf_action: deny
webf_cate: 11- 普通防火墙策略 ID
1被命中,策略动作为accept。 - Web Filter 配置文件为
default,匹配的 Web Filter 分类 ID52的动作为deny。 - 防火墙策略允许流量与 Web Filter 拒绝 URL 是两个不同处理阶段,不能仅根据
policy_action: accept判断最终访问结果。
REST API 查询
FortiOS 7.4.1 及之后版本也可通过 /api/v2/monitor/firewall/policy-lookup/ 接口传递相同参数。以下请求仅为格式示例,管理地址、VDOM 和访问令牌需替换为实际值。
https://192.0.2.1/api/v2/monitor/firewall/policy-lookup/?access_token=<token>&srcintf=port2&sourceport=55555&sourceip=10.1.100.125&protocol=6&dest=www.httpbin.org&destport=443&policy_type=policy&auth_type=user&user_group=local_user&ipv6=false&vdom=vdom1响应中的核心匹配信息如下:
{
"results": {
"match": true,
"policy_id": 1,
"matched_policy_type": "policy",
"webfilter_profile": "webfilter",
"webfilter_action": "deny",
"webfilter_category": 52,
"urlf_entry_id": 0,
"success": true
},
"vdom": "vdom1",
"path": "firewall",
"name": "policy-lookup",
"status": "success",
"version": "v7.4.1"
}重要
不要在脚本、命令历史或文档中保存真实访问令牌。生产自动化应使用受控的凭证存储,并只授予执行该监控查询所需的最小权限。