第一次接触华为Ensp模拟器时,我被它强大的网络仿真能力惊艳到了。作为一个网络工程师,能够在不接触真实设备的情况下,完整模拟企业网络环境进行各种配置测试,这简直是神器。今天我要重点分享的是ACL(访问控制列表)在Ensp中的实战应用,这是网络安全管理中最基础也最关键的技能之一。
ACL简单来说就是网络流量的"交通警察",它通过一系列规则决定哪些数据包可以通过,哪些需要被拦截。在华为设备中,ACL主要分为四种类型:基本ACL(2000-2999)、高级ACL(3000-3999)、二层ACL(4000-4999)和命名ACL。每种类型针对不同的控制维度,就像交通警察可以检查司机的身份证(基本ACL)、检查车辆载货清单(高级ACL)、或者直接识别车牌号(二层ACL)。
为什么需要学习ACL配置?想象一下,公司网络中有研发部、市场部和访客区,研发部的核心代码服务器不能让市场部随意访问,访客区的设备更不能接入内网。这种场景下,ACL就是实现部门间网络隔离的最佳工具。接下来我会通过Ensp模拟一个典型的企业园区网,手把手教你配置各种ACL。
基本ACL是最简单的访问控制列表,编号范围是2000-2999。它只能基于源IP地址进行过滤,就像小区门禁只检查你的住址是否在允许名单上。在实际项目中,我常用它来做最基础的访问控制。
让我们看一个典型场景:公司有两台服务器,IP分别是1.1.1.2和1.1.1.3,现在需要只允许1.1.1.2访问某个网络资源。配置步骤如下:
bash复制[Huawei]acl 2000
[Huawei-acl-basic-2000]rule 1 permit source 1.1.1.2 0
[Huawei-acl-basic-2000]rule 2 deny source 1.1.1.3 0
[Huawei-acl-basic-2000]quit
[Huawei]interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0]traffic-filter inbound acl 2000
这里有几个关键点需要注意:
0表示精确匹配,相当于子网掩码255.255.255.255deny any规则在最后在实际配置中,我遇到过不少新手容易踩的坑。最常见的就是规则顺序问题。比如有同事想先禁止某个IP,再允许一个网段,结果配置成这样:
bash复制rule 1 deny source 192.168.1.100 0
rule 2 permit source 192.168.1.0 0.0.0.255
这样配置会导致192.168.1.100依然被禁止,但192.168.1.0/24网段的其他IP可以访问。如果想让某个特定IP例外,必须把允许规则放在拒绝规则前面。
另一个常见问题是忘记应用ACL到接口。创建完ACL后,必须通过traffic-filter命令将其绑定到接口的inbound或outbound方向才会生效。我曾经花了半小时排查为什么ACL不工作,最后发现是漏了这一步。
当基本ACL无法满足需求时,就需要用到高级ACL(编号3000-3999)。它可以基于源/目的IP、协议类型、端口号等多个维度进行过滤,就像机场安检不仅要看登机牌,还要检查行李内容和登机时间。
继续我们的企业网络场景,假设现在需要禁止市场部(1.1.1.3)访问研发部(3.1.1.2)的Web服务(80端口),但允许研发部(1.1.1.2)访问。配置如下:
bash复制[Huawei]acl 3000
[Huawei-acl-adv-3000]rule 1 deny tcp source 1.1.1.3 0 destination 3.1.1.2 0 destination-port eq 80
[Huawei-acl-adv-3000]rule 2 permit tcp source 1.1.1.2 0 destination 3.1.1.2 0 destination-port eq 80
[Huawei-acl-adv-3000]quit
[Huawei]interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0]traffic-filter inbound acl 3000
高级ACL的强大之处在于可以精确控制到协议和端口级别。比如你可以:
在复杂网络环境中,我总结了几个高级ACL的使用技巧:
先拒绝后允许:与基本ACL不同,高级ACL通常建议先配置拒绝规则,再配置允许规则,这样更符合安全原则。
使用注释:复杂的ACL规则可以添加注释说明:
bash复制rule 1 deny tcp source 1.1.1.3 0 destination 3.1.1.2 0 destination-port eq 80 description "禁止市场部访问研发部Web"
定期优化:随着网络变化,ACL规则会越来越复杂。建议每季度审查一次,合并冗余规则,删除过期规则。
测试验证:配置完成后,一定要用display acl 3000查看规则,并用真实流量测试效果。我曾经遇到过因为拼写错误导致规则不生效的情况。
二层ACL(编号4000-4999)工作在数据链路层,可以根据MAC地址进行过滤。这在访客网络管理中特别有用,比如禁止某些特定设备接入:
bash复制[Huawei]acl 4000
[Huawei-acl-L2-4000]rule 1 deny source-mac 5489-98EE-4701
[Huawei-acl-L2-4000]quit
[Huawei]interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0]traffic-filter inbound acl 4000
需要注意的是,二层ACL只能应用在二层接口上。如果接口已经是三层模式,需要先执行portswitch命令切换为二层模式。
传统ACL使用数字编号,时间一长很难记住每个ACL的用途。命名ACL解决了这个问题,它允许给ACL起一个有意义的名称,大大提高了可管理性。比如我们要创建一个控制ICMP流量的ACL:
bash复制[Huawei]acl name ICMP-Control
[Huawei-acl-adv-ICMP-Control]rule 1 permit icmp source 1.1.1.2 0 destination 3.1.1.2 0
[Huawei-acl-adv-ICMP-Control]rule 2 deny icmp source 1.1.1.3 0 destination any
[Huawei-acl-adv-ICMP-Control]quit
[Huawei]interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0]traffic-filter inbound acl name ICMP-Control
命名ACL还有几个优势:
在实际项目中,我建议对长期使用的ACL都采用命名方式,临时测试可以用数字编号。
现在我们把所有知识综合起来,为一个典型的企业网络设计ACL方案。假设网络有三个部门:
安全需求如下:
配置步骤如下:
bash复制# 创建命名ACL控制研发部访问
[Huawei]acl name R&D-Access
[Huawei-acl-adv-R&D-Access]rule 1 permit ip source 192.168.10.0 0.0.0.255 destination any
[Huawei-acl-adv-R&D-Access]quit
# 创建高级ACL控制市场部访问
[Huawei]acl 3001
[Huawei-acl-adv-3001]rule 1 deny ip source 192.168.20.0 0.0.0.255 destination 192.168.10.100 0
[Huawei-acl-adv-3001]rule 2 permit ip source 192.168.20.0 0.0.0.255 destination any
[Huawei-acl-adv-3001]quit
# 创建基本ACL控制访客区
[Huawei]acl 2001
[Huawei-acl-basic-2001]rule 1 deny source 192.168.30.0 0.0.0.255
[Huawei-acl-basic-2001]quit
# 应用到各个接口
[Huawei]interface Vlanif 10
[Huawei-Vlanif10]traffic-filter outbound acl name R&D-Access
[Huawei]interface Vlanif 20
[Huawei-Vlanif20]traffic-filter outbound acl 3001
[Huawei]interface Vlanif 30
[Huawei-Vlanif30]traffic-filter outbound acl 2001
这个案例展示了如何组合使用多种ACL类型实现复杂的企业网络访问控制。在实际部署时,建议先在Ensp中模拟测试,确认效果后再应用到生产环境。