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 应用实例合集
目标 | 类型 | 简要配置摘要 |
---|
阻止单一主机访问网络 | 标准 ACL | access-list 10 deny 192.168.1.100 |
允许某网段访问 FTP(21 端口) | 扩展 ACL | permit tcp 192.168.x.0 any eq 21 |
阻止所有人远程登录(Telnet) | 扩展 ACL | deny tcp any any eq 23 + access-class |
限制 DNS 只开放给某网段 | 扩展 ACL | permit 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 | 实时抓包(谨慎使用) |