按协议匹配流量
ACL 规则里的协议字段决定这条规则管哪一类报文:写 ip 表示所有 IP 报文,写 tcp、udp、icmp 等关键字则只匹配对应协议,也可以直接写 IANA 分配的数字协议号。三厂都支持关键字与数字混写。这里的核心风险在于规则顺序:ip 会把 TCP、UDP、ICMP 一并匹配走,一旦精细规则前面先放了一条 permit ip,后面那些精确的拒绝规则就永远匹配不到。
基本信息
| 适用平台 | 华为 VRP、思科 IOS、H3C Comware 的高级 ACL(扩展 ACL) |
|---|---|
| 常用关键字 | ip(全部)、tcp、udp、icmp、gre、ospf |
| 常用数字协议号 | icmp 1、tcp 6、udp 17、gre 47、ospf 89 |
| 权限要求 | system-view / 全局配置模式 |
| 匹配方向 | 规则自上而下匹配,命中即停止 |
典型使用场景
- 放行 OSPF 邻居:只允许指定路由器与组播地址之间收发协议报文
- 放行隧道与冗余协议:GRE 47、VRRP 112 等底层协议需要显式放通
- 管理面收敛:只允许 ICMP 与 SSH 进入管理网段,其余拒绝
- 精细化限流:按 TCP 端口控制业务访问,同时保留 ICMP 用于排障
- 规则审计:把模糊的 permit ip 拆成明确的协议与端口清单
华为 VRP
华为 VRP
[Huawei] acl number 3000
[Huawei-acl-adv-3000] rule 5 permit ospf source 10.0.0.1 0 destination 224.0.0.5 0
[Huawei-acl-adv-3000] rule 10 deny ip source 10.9.0.0 0.0.255.255
[Huawei-acl-adv-3000] rule 15 permit ip
! 顺序:先精确的协议规则,再兜底的条目,兜底放最后思科 IOS
思科 IOS
SW-CORE-01(config)# access-list 100 permit ospf host 10.0.0.1 host 224.0.0.5
SW-CORE-01(config)# access-list 100 permit 47 any any # 数字协议号写法
SW-CORE-01(config)# access-list 100 deny ip 10.9.0.0 0.0.255.255 any
SW-CORE-01(config)# access-list 100 permit ip any anyH3C Comware
H3C Comware
[H3C] acl advanced 3000
[H3C-acl-ipv4-adv-3000] rule 5 permit ospf source 10.0.0.1 0 destination 224.0.0.5 0
[H3C-acl-ipv4-adv-3000] rule 10 deny ip source 10.9.0.0 0.0.255.255
[H3C-acl-ipv4-adv-3000] rule 15 permit ip常用协议号
| 协议 | 关键字 | 协议号 | 备注 |
|---|---|---|---|
| ICMP | icmp | 1 | ping 与差错报文,排障需要 |
| TCP | tcp | 6 | 可用端口条件进一步限定 |
| UDP | udp | 17 | 可用端口条件进一步限定 |
| GRE | gre | 47 | 隧道封装,放行时注意双向 |
| OSPF | ospf | 89 | 邻居交互使用组播地址 224.0.0.5 |
| VRRP | vrrp 或数字 | 112 | 网关冗余协议,组播 224.0.0.18 |
ip 匹配所有 IP 报文,包括 TCP、UDP、ICMP。只要 permit ip 写在前面,后面的精细规则就永远不会命中——这类问题不会报错,只会表现为「策略写了但完全不起作用」,排查时先看规则顺序。
放行 OSPF 邻居时不要只放单播:邻居建立过程中还需要收发组播地址 224.0.0.5(所有 OSPF 路由器)的报文,漏掉这一条会表现为邻居卡在 Init 或根本无法建立。