第41篇:用 ACL 实现简单流量过滤
一、写在前面
前两篇我们学了 ACL 的语法和匹配顺序,这篇用三个实战案例,手把手教你用 ACL 解决实际的网络需求。
ACL 最基础的应用就是流量过滤——在接口上放行或拒绝特定流量。
二、案例一:禁止研发部访问财务服务器
2.1 需求
研发部:10.0.1.0/24
财务服务器:10.0.2.100(TCP 80/443)
需求:研发部不能访问财务服务器,其他部门不受影响
2.2 拓扑
ACL 应用位置 ↓
核心交换机 GE0/0/1 GE0/0/2
2.3 配置
# 在核心交换机上配置 ACL
[Core] acl 3000
[Core-acl-adv-3000] rule 5 deny tcp source 10.0.1.0 0.0.0.255 destination 10.0.2.100 0 range 80 443
[Core-acl-adv-3000] rule 10 permit ip
[Core-acl-adv-3000] quit
# 应用在连接财务服务器的接口(出方向)
[Core] interface gigabitethernet 0/0/2
[Core-GigabitEthernet0/0/2] traffic-filter outbound acl 3000
2.4 验证
# 查看 ACL 匹配统计
[Core] display acl 3000
rule 5 deny tcp source 10.0.1.0 0.0.0.255 destination 10.0.2.100 0 range 80 443
(12 times matched) ← 被拦截了 12 次
# 在研发部 PC 上测试
C:\> curl http://10.0.2.100 ← 超时/连接被拒绝
C:\> ping 10.0.2.100 ← 通(ICMP 没有在 ACL 中拒绝)
三、案例二:禁止 P2P 下载,限制带宽滥用
3.1 需求
限制内网用户的上网行为——禁止 BT/电驴等 P2P 下载(匹配常见 P2P 端口)。
3.2 配置
[Router] acl 3001
[Router-acl-adv-3001] rule 5 deny tcp source any destination any range 6881 6889 ← BT 常用端口
[Router-acl-adv-3001] rule 10 deny udp source any destination any range 6881 6889
[Router-acl-adv-3001] rule 15 permit ip
[Router-acl-adv-3001] quit
# 应用在出口路由器的内网接口
[Router] interface gigabitethernet 0/0/0
[Router-GigabitEthernet0/0/0] traffic-filter inbound acl 3001
四、案例三:只允许特定管理 IP 登录设备
3.1 需求
交换机只允许运维网段 192.168.100.0/24 的设备通过 SSH/Telnet 登录管理,其他网段禁止。
3.2 配置
# 使用高级 ACL 匹配 Telnet(TCP 23)和 SSH(TCP 22)
[SW] acl 3002
[SW-acl-adv-3002] rule 5 permit tcp source 192.168.100.0 0.0.0.255 destination any eq 22
[SW-acl-adv-3002] rule 10 permit tcp source 192.168.100.0 0.0.0.255 destination any eq 23
[SW-acl-adv-3002] rule 15 deny tcp source any destination any eq 22
[SW-acl-adv-3002] rule 20 deny tcp source any destination any eq 23
[SW-acl-adv-3002] rule 25 permit ip
[SW-acl-adv-3002] quit
# 应用到所有管理接口(VLANIF 接口入方向)
[SW] interface vlanif 10
[SW-Vlanif10] traffic-filter inbound acl 3002
# 或应用到物理管理口
[SW] interface meth 0/0/0
[SW-MEth0/0/0] traffic-filter inbound acl 3002
五、ACL 与 NAT 配合
一般网络中最常见的 ACL 用途是配合 NAT——定义哪些内网 IP 需要做 NAT 转换。
[Router] acl 2000
[Router-acl-basic-2000] rule 5 permit source 10.0.0.0 0.255.255.255
[Router-acl-basic-2000] rule 10 deny source 10.0.100.0 0.0.0.255 ← 服务器段不做 NAT
[Router-acl-basic-2000] quit
# 在出接口应用
[Router] interface gigabitethernet 0/0/3
[Router-GigabitEthernet0/0/3] nat outbound 2000
六、ACL 应用位置的选择
写 ACL 时,需要考虑放在靠近源还是靠近目的:
靠近源(Source-side filtering):
在研发部的接入交换机上就拦截
优点:节省整网带宽
缺点:需要多台设备配
靠近目的(Destination-side filtering):
在财务服务器前面的交换机上拦截
优点:集中管理
缺点:不需要的流量也传到了中途
通用原则
| 场景 | 建议位置 |
|---|---|
| 禁止内网访问特定外网 | 出口路由器 inbound |
| 禁止外部访问内网特定服务 | 出口路由器 inbound |
| 部门间隔离 | 核心交换机(靠近目的端) |
| 管理访问控制 | 目标设备本身的入接口 |
七、ACL 性能注意事项
| 建议 | 原因 |
|---|---|
| ACL 条目不要太多 | 每增加一条规则,匹配时间增加 |
| 能用标准 ACL 别用扩展 | 匹配条件少,性能更好 |
| 精确规则放前面 | 减少不必要的匹配次数 |
| 定时清理无用 ACL | 残留的 ACL 消耗 TCAM 空间 |
八、思考
- 案例一中,如果 ACL 应用在 GE0/0/1 的 inbound 方向,效果有什么不同?
- 为什么 P2P 端口过滤不能完全禁止 P2P 下载?
- 管理 ACL 应用在 VLANIF 接口和物理管理口有什么区别?
- 靠近源端过滤和靠近目的端过滤各有何优缺点?
- ACL 配合 NAT 时,ACL 是匹配 NAT 转换前的 IP 还是转换后的 IP?
- 写一条 ACL:禁止 192.168.2.0/24 访问公司邮件服务器 10.0.3.50 的 SMTP(TCP 25)和 HTTPS(TCP 443),其他流量放行。
下篇预告:第42篇《NAT基础_静态NAT动态NATPAT》——理解NAT的三种基本类型:静态NAT、动态NAT和PAT。