怎么判断ACL的有效性,我配置的:匹配放行源地址网段,没有写目标地址,这个有效吗?rule 0 permit ip source 192.168.1.0 0.0.0.255
display acl <编号> 时,发现配置的 ACL 规则匹配次数(Matched count)始终为 0,说明该策略路由根本没有生效,流量依然走的是普通的路由表(即默认路由)。这通常是由以下几个常见原因导致的:display ip policy-based-route interface <内网接口名称>,检查是否成功应用了策略。192.168.1.0/24 网段,正确的写法是 192.168.1.0 0.0.0.255。如果误写成了 192.168.1.0 255.255.255.0 或 192.168.1.0 0.0.0.0,会导致匹配完全失效。192.168.1.2 ~ 192.168.1.50,但实际测试的 PC IP 是 192.168.1.100,由于不在覆盖范围内,自然无法命中策略。ping -a <内网网关IP> <策略路由指定的下一跳IP>,确认下一跳连通性。deny 规则提前拦截了流量,后续的 permit 规则也不会被执行。display ip policy-based-route statistics 查看整体策略命中情况。display acl <编号> 仔细核对通配符掩码和 IP 范围。display ip policy-based-route interface <内网接口> 确认 PBR 已应用在 Inbound 方向。
F100 防火墙内网用户上网,出口必须配 NAT(SNAT/NAPT),否则私网地址没法在公网路由。
策略路由 ACL 显示 “匹配无命中”,就是流量根本没进到 PBR,或进了但 ACL 没对上,所以走了默认路由。
下面分开说清楚。
一、F100 出口要不要 NAT?
1. 必须要(绝大多数场景)
内网一般是 10/172/192 私网段,公网不路由私网 IP,所以必须做 源 NAT(nat outbound):
把内网私网 IP → 外网口公网 IP(或地址池)
多用户共享一个公网 IP 上网(PAT)
典型配置(接口下 NAT):
bash
运行
# 1. 定义要上网的内网段
acl basic 2000
rule permit source 192.168.0.0 0.0.255.255
# 2. 外网口(如 Gig1/0/2)下挂 NAT
interface GigabitEthernet 1/0/2
nat outbound 2000
# 3. 安全策略:内网→外网允许
security-policy
rule name lan2wan
source-zone trust
destination-zone untrust
action pass
# 4. 默认路由指向运营商网关
ip route-static 0.0.0.0 0 202.xx.xx.1
不配 NAT 的结果:能 ping 通网关,但上不了网,因为回包找不到私网 IP。
2. 什么情况可以不配 NAT?
防火墙透明模式(二层),上游路由器做 NAT
内网全是公网 IP(极少)
二、策略路由 ACL “匹配无命中”,为什么走默认路由?
核心原因
PBR 没匹配到流量 → 不执行 apply → 查路由表 → 走默认路由。
常见 6 个原因(按概率)
1)PBR 没绑对接口(最常见)
PBR 必须绑在内网入接口(流量进来的地方),不能绑在出口。
bash
运行
# 正确:内网口 Gig1/0/1 入方向
interface GigabitEthernet 1/0/1
ip policy-based-route 你的策略名
# 错误:绑在出口/虚接口/聚合口
查看绑定:
bash
运行
display ip policy-based-route interface GigabitEthernet 1/0/1
2)ACL 规则写反 / 写错
源 IP 写反、掩码错、写了 deny
ACL 里没有 permit 你要引流的网段
bash
运行
# 正确
acl 3000
rule permit ip source 192.168.1.0 0.0.0.255
# 错误:deny 或源不对
rule deny ip source 192.168.1.0 0.0.0.255
查看 ACL 匹配数:
bash
运行
display acl 3000
3)PBR 节点空配置(只有 if-match,没有 apply)
bash
运行
policy-based-route 策略名 permit node 10
if-match acl 3000
# 没有 apply ip next-hop ... → 等于不处理,走默认路由
必须加动作:
bash
运行
apply ip next-hop 10.1.1.1 # 下一跳
4)NAT 先转了地址,导致 ACL 匹配不到(V7 典型)
V7 默认顺序:Input → ACL → NAT → PBR → Route
ACL 匹配的是NAT 后的公网 IP,不是原始私网 IP,所以匹配数为 0。
解决:
把 PBR 用在 NAT 之前(内网口入方向)
或 ACL 匹配 转换后地址(不推荐)
5)已经有更优路由(静态 / 直连)
PBR 优先级高于默认路由,但低于直连 / 静态 / OSPF 等。
bash
运行
# 有一条静态路由比 PBR 更优,流量走它,不走 PBR
ip route-static 192.168.1.0 24 ...
6)策略节点顺序错
小节点号优先,前面节点匹配了,后面就不看了。
三、快速排查命令(直接抄)
bash
运行
# 1. 看 PBR 绑定和统计
display ip policy-based-route
display ip policy-based-route interface GigabitEthernet 1/0/1
# 2. 看 ACL 匹配数
display acl all
# 3. 看路由表
display ip routing-table
# 4. 看 NAT 配置
display nat outbound
四、总结
上网必须配 NAT(nat outbound),私网转公网是硬性要求。
PBR 不命中 = 没绑对接口 / ACL 写错 / 没 apply/NAT 先转了 / 有更优路由。
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
怎么判断ACL的有效性,我配置的:匹配放行源地址网段,没有写目标地址,这个有效吗?rule 0 permit ip source 192.168.1.0 0.0.0.255