6. ACL(访问控制列表)完整指南

ACL(Access Control List)是控制网络数据流动的重要工具,主要用于流量过滤、安全控制、NAT、QoS 等网络场景。


6.1 什么是 ACL?

ACL 就是定义在网络设备上的一组规则,用于判断“哪些数据包允许通过,哪些被拒绝”。

  • 顺序匹配:从上往下逐条检查,匹配成功即终止
  • 默认拒绝:未匹配的数据包默认被丢弃(隐含 deny all)
  • 可作用于入方向(in)或出方向(out)

6.2 标准 ACL vs 扩展 ACL

类型匹配维度推荐接口方向示例编号范围
标准 ACL源 IP 地址靠近目标接口1–99 / 1300–1999
扩展 ACL源/目标 IP + 协议 + 端口靠近源接口100–199 / 2000–2699

6.3 ACL 命令语法结构

✅ 标准 ACL

1
access-list <编号> permit|deny <源IP> <通配符掩码>

✅ 扩展 ACL

1
access-list <编号> permit|deny <协议> <源IP> <通配符> <目标IP> <通配符> [eq/gt/lt/range <端口>]

✅ 命名 ACL(推荐)

1
2
ip access-list standard|extended <名称>
[permit|deny] ...

✅ 应用 ACL 到接口

1
2
interface <接口名>
ip access-group <ACL编号或名称> in|out

6.4 ACL 示例汇总

只允许主机访问外网(标准 ACL)

1
2
3
4
access-list 10 permit 192.168.10.10
access-list 10 deny any
interface g0/0
ip access-group 10 out

阻止访问某服务器的 Web 服务(扩展 ACL)

1
2
3
4
access-list 110 deny tcp host 192.168.1.10 host 10.0.0.1 eq 80
access-list 110 permit ip any any
interface g0/0
ip access-group 110 in

命名 ACL 示例

1
2
3
4
5
ip access-list extended BLOCK_WEB
deny tcp any host 10.1.1.1 eq 80
permit ip any any
interface g0/0
ip access-group BLOCK_WEB in

6.5 ACL 实战技巧与方向原则

技巧说明
标准 ACL 放“靠近目标”接口只看源 IP,需精确判断目的地
扩展 ACL 放“靠近源”接口控制条件复杂,靠前处理节省资源
顺序匹配原则匹配到即终止,后续规则不再执行
默认隐含拒绝所有 ACL 最后自动加 deny all
推荐加入“permit any any”明确保留其他流量

6.6 ACL 验证与排错命令

1
2
3
4
show access-lists
show ip access-lists
show ip interface g0/0
debug ip packet

📌 如果 ACL 无效,重点排查:

  • 是否已 ip access-group 绑定接口
  • 接口方向 in/out 是否搞反
  • 是否添加了默认 permit 规则
  • 命令顺序是否导致提前拦截

6.7 ACL 应用实例合集

目标类型简要配置摘要
阻止单一主机访问网络标准 ACLaccess-list 10 deny 192.168.1.100
允许某网段访问 FTP(21 端口)扩展 ACLpermit tcp 192.168.x.0 any eq 21
阻止所有人远程登录(Telnet)扩展 ACLdeny tcp any any eq 23 + access-class
限制 DNS 只开放给某网段扩展 ACLpermit udp 192.168.x.x any eq 53

6.8 ACL 常见误区

  • 忘记绑定 ACL 到接口 → 无效
  • 顺序写错:先 deny 后 permit → 永远 deny
  • 忘记加 permit ip any any → 所有流量被默认拒绝
  • 接口方向选错 → ACL 完全不起作用

6.9 ACL 命令速查表

命令说明
access-list 10 permit 192.168.1.0 0.0.0.255标准 ACL:允许网段
access-list 110 deny tcp any any eq 80扩展 ACL:阻止 HTTP
ip access-list extended NAME命名 ACL 起始命令
ip access-group 110 in将 ACL 绑定到接口(入方向)
show access-lists查看所有 ACL 内容
debug ip packet实时抓包(谨慎使用)