五、访问控制列表
<2000-2999>标准访问控制列表
<3000-3999>扩展访问控制列表
<4000-4999>指定一个L2的acl群组
<5000-5999>用户自定义访问控制列表
ACL的五大要素:源地址、源端口、目标地址、目标端口、协议
如果简单说来就是:源地址访问目的地址的什么协议的什么端口
思路:应用需要用什么协议,需要用什么端口--------确定IP地址
1.标准访问控制列表
Forexample1:
rule 0 deny source 192.168.16.2 0
#这条的意思是:访问规则0,拒绝源网段192.168.16.0的访问,而子网掩码为0就相当于255.255.255.255也就是32,为完全匹配的意思,就是说单单只拒绝这个一IP地址的访问。
先搭建一个前期的可访问的路由的环境:
R1:
[router]interface GigabitEthernet 0/0/0
[router-GigabitEthernet0/0/0]ip address192.168.10.2 255.255.255.0
[router]ip route-static 192.168.1.0255.255.255.0 192.168.10.1
[router]ip route-static192.168.2.0 255.255.255.0 192.168.10.1
建议配置回程路由的时候加上出接口,然后在加上下一跳的地址。
三层交换switch:
#
sysname switch
#
vlan 2
vlan 3
quit
#
interface vlan 1
ip address 192.168.10.1 24
quit
#
interface vlan 2
ip address 192.168.1.1 255.255.255.0
quit
#
interface vlan 3
ip address 192.168.2.1 255.255.255.0
quit
#
port-group 1
description hr
group-member GigabitEthernet 0/0/1GigabitEthernet 0/0/2
port link-type access
port default vlan 2
quit
#
port-group 2
description sh
group-member GigabitEthernet 0/0/3GigabitEthernet 0/0/4
port link-type access
port default vlan 3
quit
#
interface GigabitEthernet 0/0/24
port-like trunk
port trunk allow-pass vlan 1 2 3
quit
#
ip route-static 0.0.0.0 0.0.0.0 192.168.10.2
同时来看下vlan的情况:
###########################################
通过实验证明:
在vlan1里面的诸多端口中,任意一个端口下接pc:
如果pc机的Ip在192.168.10.x网段,并且网关指向192.168.10.1,那么它是可以ping到192.168.10.2可以进外网路由。
如果pc机的Ip在任意其他网段都是不可访问到外网路由的192.168.10.2端口的。
所以这里,如果要使其他端口可以访问外网路由,要么将之添加到现有的可访问外网路由的vlan2或者vlan3,要么就新建其他的vlan并在三层交换的GE 0/0/24端口下重新允许新建的vlan数据通过。
标准acl:
(inbound调用)
[switch]acl 2000
[switch-acl-basic-2000]rule 5 deny source192.168.2.2 0
[switch]traffic-filter inbound acl 2000
(这这一步的实验中得出结论,阻止了来自源地址192.168.2.2的任何访问流量,自身2.0网段互访也不可以实现。)
如果将acl进行更改为:
[switch-acl-basic-2000]rule 5 deny source192.168.2.0 0.0.0.255
(这样表示拒绝来自192.168.2.0网段的所有流量,那么这时候2.0网段不仅不可以访问其他网段,而且连自身网段2.0内部互访都不可以。)
(对于上面的这种标准acl在inbound下调用和在outbound调用效果一样)
(接口下调用)
如果在三层交换的接口GE 0/0/1接口下同时调用inbound和outbound的acl 2000,如下
[switch-acl-basic-2000]rule 5 deny source192.168.2.0 0.0.0.255
[switch]interface GigabitEthernet 0/0/1
[switch-GigabitEthernet0/0/1]traffic-filterinbound acl 2000
[switch-GigabitEthernet0/0/1]traffic-filteroutbound acl 2000
[switch-GigabitEthernet0/0/1]restart #重新启动端口才能生效
这样192.168.1.3无论是在进方向还是出方向上都无法访问2.0网段,同时2.0网段的数据流量也进不来。
###################################
通过实验其实可以看出,标准访问控制列表有局限性,它只能够单纯的阻止或者允许源地址访问,而无法具体定义,从而没有可扩展性,所以一般是不怎么使用标准访问控制列表的。
2.扩展访问控制列表
a.Forexample1:
acl 3000
rule 11 deny ip source 192.168.11.00.0.0.255 destination 192.168.12.0 0.0.0.255
#这条的意思是:访问规则11,拒绝源网段192.168.11.0访问192.168.12.0网段
b.Forexample2:
如果在扩展访问控制列表的Forexample1中,要使得其中一个192.168.11.6的IP访问192.168.12.99,因为原来是禁止的,如果要重建acl 3000又会很麻烦,怎么办呢?有一个简单的方法就是在这条语句的前面加上一条permit的单条语句,因为rule的匹配规则为从上往下匹配,所以如果放在第一条线匹配到,就可以既能让192.168.11.6访问成功,又能继续阻止其他的访问。
即:
rule 10 permit ip source192.168.11.6 0 destination 192.168.12.99 0
rule 11 deny ip source 192.168.11.0 0.0.0.255 destination 192.168.12.0 0.0.0.255
(所以在建立rule列表的时候,建议rule号码前面留有空余的号码,比如rule 11,如果有问题可以在前面添加rule 10)
c. 重新应用至接口.在应用过程中注意一点
traffic behavior 上permit与deny的区别.:
使用permit表示按照acl 3000的规则来进行数据放行,3001中允许那就允许,禁止那就禁止,但是若使用deny,则无论3000规则中的permit或者deny,一律全都丢弃不进行转发。
建立vlan并分别加入vlan:
[switch]vlan2
[switch-vlan2]vlan 3
[switch-vlan3]quit
[switch]interface vlan 2
[switch-Vlanif2]ip address192.168.1.1 255.255.255.0
[switch-Vlanif2]quit
[switch]interface vlan 3
[switch-Vlanif3]ip address 192.168.2.1255.255.255.0
[switch-Vlanif3]quit
[switch]port-group 1 #这里使用了端口群组的加入方式
[switch-port-group-1]description hr
[switch-port-group-1]group-memberGigabitEthernet 0/0/1 GigabitEthernet 0/0/2
[switch-port-group-1]port link-type access
[switch-port-group-1]port default vlan 2
[switch]port-group 2
[switch-port-group-2]description sh
[switch-port-group-2]group-memberGigabitEthernet 0/0/3 GigabitEthernet 0/0/4
[switch-port-group-2]port link-type access
[switch-port-group-2]port default vlan 3
[switch]interface vlan 1
[switch-Vlanif1]ip address 192.168.10.1 24
当配置好了以后其它们的vlan间是可以互通的,这是默认的,不同于思科的设备得配置vlan间路由才可以使vlan间互通。如果需要让vlan间不互通,通过配置acl就可以实现。
配置acl访问控制策略:
(目前192.168.2.2/24和192.1680.1.2/24是可以互通的,现在要使他们不能互通,但是可以访问192.168.10.2/24)
[switch]acl 3000
[switch-acl-adv-3000]rule1 deny ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255
#因为系统默认是permit所有,所以这个acl 3000里面只用有一条deny的语句就可以实现了。
[switch]traffic-filter inbound acl 3000 #这里是在流量过滤下调用访问控制列表3000
而下面的这条策略则可以实现禁PING的功能,因为ping命令是属于icmp的协议。
[switch-acl-adv-3000]rule 5 deny icmpsource 192.168.2.0 0.0.0.255 destination 192.168.1.0 0.0.0.255