单主机与全网的写法差异
ACL 规则里最基础的两类匹配对象是单台主机和任意地址。思科用 host 与 any 两个关键字直接表达;华为与 H3C 用「地址加通配符」的形式,单主机的通配符是全 0,可以简写成一个 0。语义完全相同,但写法不同,跨厂商配置迁移时最容易在这一行上出错,尤其是通配符与传统子网掩码的写法完全相反这一点。
基本信息
| 适用平台 | 华为 VRP、思科 IOS、H3C Comware 的 ACL |
|---|---|
| ACL 编号习惯 | 华为/H3C 基本 ACL 2000-2999、高级 3000-3999;思科标准 1-99、扩展 100-199 以及命名 ACL |
| 核心差异 | 思科用 host 与 any 关键字,华为/H3C 用地址加通配符 |
| 权限要求 | system-view / 全局配置模式 |
| 通配符规则 | 通配符中为 0 的位必须匹配,为 1 的位忽略,与掩码含义相反 |
典型使用场景
- 服务器白名单:只允许特定主机访问管理端口
- 管理面加固:仅放通运维网段或特定跳板机
- 规则收尾:每条 ACL 末尾补一条拒绝全网的兜底规则
- 迁移改写:把思科配置换算成华为或 H3C 的等价写法
- 排障复核:通配符写错导致规则匹配范围过大或完全不匹配
华为 VRP
华为 VRP
[Huawei] acl 3000 # 高级 ACL
[Huawei-acl-adv-3000] rule 5 permit ip source 192.168.1.10 0 destination any
[Huawei-acl-adv-3000] rule 10 deny ip source any
! 单主机通配符可简写为一个 0,等价于 0.0.0.0
[Huawei] acl 2000 # 基本 ACL 只匹配源地址
[Huawei-acl-basic-2000] rule 5 permit source 192.168.1.10 0思科 IOS
思科 IOS
SW-CORE-01(config)# access-list 100 permit ip host 192.168.1.10 any
SW-CORE-01(config)# access-list 100 deny ip any any
! 等价改写:host 192.168.1.10 等同于 192.168.1.10 0.0.0.0
SW-CORE-01(config)# ip access-list extended MGMT
SW-CORE-01(config-ext-nacl)# permit tcp host 192.168.1.10 any eq 22H3C Comware
H3C Comware
[H3C] acl advanced 3000
[H3C-acl-ipv4-adv-3000] rule 5 permit ip source 192.168.1.10 0 destination any
[H3C-acl-ipv4-adv-3000] rule 10 deny ip source any写法对照
| 匹配对象 | 华为 / H3C | 思科 | 说明 |
|---|---|---|---|
| 单台主机 | source 192.168.1.10 0 | host 192.168.1.10 | 通配符全 0,可简写为一个 0 |
| 任意地址 | source any | any | 关键字一致 |
| 一个网段 | source 192.168.1.0 0.0.0.255 | 192.168.1.0 0.0.0.255 | 通配符与掩码相反,易错点 |
| 主机的等价完整写法 | source 192.168.1.10 0.0.0.0 | 192.168.1.10 0.0.0.0 | 语义完全相同 |
华为与 H3C 里单主机如果只写地址不带通配符,多数版本会直接报语法错误,这一点与思科省略通配符的习惯不同。跨厂商改写时把每一行的通配符单独核一遍,比整体替换更可靠。
网段通配符可以用「255.255.255.255 减去掩码」快速核算:掩码 255.255.255.0 对应通配符 0.0.0.255,掩码 255.255.248.0 对应 0.0.7.255。手工换算时先按位算再填写,比凭感觉写小一个数量级的事故要少得多。