这是项目拓扑,用ensp模拟的
要实现的目的,10.1不可以访问10.2,但是可以访问10.3 正常情况下,都是一个网段,完全可以实现三台PC互相通讯的。
那么怎么实现呢?需要两个步骤
1、创建ACL 设置过滤规则,什么数据包允许通过、什么数据包不允许通过
2、在网络接口调用ACL,只有调用了才会检测数据包
首先在视图模式下创建ACL,这是说一下ACL 打一个?问号 ,是干什么呢?就是给大家看看ACL的编号
[lsw1]acl ?
INTEGER<2000-2999> Basic access-list(add to current using rules)
2000-2999 属于标准acl 只看数据包的源IP地址
INTEGER<3000-3999> Advanced access-list(add to current using rules)
3000-3999 属于高级acl 只看五元组,是什么呢?是源IP地址、目标IP地址、协议类型、源端口、目标端口
而最常用的就是上面这两个
区别就是高级ACL可以看数据内容或者说参数更多一些,
INTEGER<4000-4999> Specify a L2 acl group
4000-4999 二层ACL
INTEGER<5000-5999> User defined access-list
5000-5999 用户自定义
[lsw1]acl 2000 创建ACL2000
[lsw1-acl-basic-2000] 进入ACL2000
[lsw1-acl-basic-2000]rule deny source 192.168.10.1 0.0.0.0
上面命令是禁止源IP192.168.10.1 通行 ,后面的子网0.0.0.0为精准匹配,就是禁止这个IP或者说是禁止源IP地址的数据包通行
permit:允许
rule :规则
deny :禁止
source : 源
但是现在还是不好使,上面说了需要两个步骤,现在只是创建了ACL,下面需要调用ACL,我们在交换机的0/0/1口调用ACL
[lsw1]interface GigabitEthernet 0/0/1 进入0/0/1接口
[lsw1-GigabitEthernet0/0/1]traffic-filter inbound acl 2000 调用ACL2000
traffic-filter 调用
inbound 英文意思是到达的意思,在这里叫做对进入接口的包做过滤
看着是不是ACL做完了,但是会发现ping 10.3也不通了,那么是什么原因呢?其实是ACL里面禁用了源10.1,也就是所有和10.1通信的都不好使了,所以普通ACL是不行的么?那么要是在0/0/2口配置ACL2000呢,是不是会好用呢?下面给大家试试吧
首先我们要把0/0/1口的ACL2000删除
[lsw1-GigabitEthernet0/0/1]undo traffic-filter inbound acl 2000 删除ACL2000的命令,其实就是在正常配置命令前加undo
[lsw1-GigabitEthernet0/0/1]display this 这是查询当前接口信息,查询一下0/0/1接口下面的ACL2000是否被删除
#
interface GigabitEthernet0/0/1
#
return 接口下面什么信息都没有了
下面我们在交换机0/0/2口执行ACL2000 ,这里有些不同大家发现没有PC1访问PC2 那么0/0/1是进口,0/0/2是出口所以在出口上调用ACL2000 需要用到的命令是 outbound 具体如下
[lsw1-GigabitEthernet0/0/2]traffic-filter outbound acl 2000 0/0/2调用ACL2000
这时候就实现了10.1不可以访问10.2,但是可以访问10.3