第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 空间

八、思考

  1. 案例一中,如果 ACL 应用在 GE0/0/1 的 inbound 方向,效果有什么不同?
  2. 为什么 P2P 端口过滤不能完全禁止 P2P 下载?
  3. 管理 ACL 应用在 VLANIF 接口和物理管理口有什么区别?
  4. 靠近源端过滤和靠近目的端过滤各有何优缺点?
  5. ACL 配合 NAT 时,ACL 是匹配 NAT 转换前的 IP 还是转换后的 IP?
  6. 写一条 ACL:禁止 192.168.2.0/24 访问公司邮件服务器 10.0.3.50 的 SMTP(TCP 25)和 HTTPS(TCP 443),其他流量放行。

下篇预告:第42篇《NAT基础_静态NAT动态NATPAT》——理解NAT的三种基本类型:静态NAT、动态NAT和PAT。