in的时候判断的是源地址是vlan内的地址,out的时候判断源地址是非本vlan 内的地址。
18、19两个不同的网段,在18网段上加访问列表,
----〉表示能够访问,---X-->;表示不能访问。
ip access-l exte test_liu
deny ip host 10.24.18.5 host 10.24.19.30
permit ip any any
__________________________________________________
inter vlan 18
ip access-g test_liu in
exit
测试:18.5--X-->19.30
19.30--X-->18.5
访问列表生效,在IN 方向判断源地址18.5属于本VLAN
___________________________________________________
inter vlan 18
ip access-g test_liu out
exit
测试:18.5---->19.30
19.30---->18.5
访问列表不生效,在OUT方向判断源地址18.5属于本VLAN,不作限制
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ip access-l exte test_liu
deny ip host 10.24.19.30 host 10.24.18.5
permit ip any any
----------------------------------------------------
inter vlan 18
ip access-g test_liu in
exit
测试:18.5---->19.30
19.30---->18.5
访问列表不生效,在in方向判断源地址19.30不属于本VLAN,不作限制
__________________________________________________ 配置路由器
动态路由已设好,IP地址分配如下:
RouterA f0/0: 10.65.1.2
RouterA f0/1: 10.66.1.2
RouterA s0/1: 10.68.1.2
RouterC s0/0: 10.68.1.1
RouterC s0/1: 10.78.1.2
RouterB s0/0: 10.78.1.1
RouterB s0/1: 10.69.1.2
RouterB f0/0: 10.70.1.2
SWA:10.65.1.8gateway:10.65.1.2
PCA:10.65.1.1gateway:10.65.1.2
PCB:10.66.1.1gateway:10.66.1.2
PCC:10.69.1.1gateway:10.69.1.2
PCD:10.70.1.1gateway:10.70.1.2
PCE:10.65.1.3gateway:10.65.1.2
PCF:10.65.2.1gateway:10.65.1.2
基本基础
先从PCA ping PCD:
[root@PCA @root]#ping 10.70.1.1 (通)
在ROC的s0/0写一个输入的访问控制列表:
RouterC(config)#access-list 1 permit 10.65.1.1 0.0.0.0
RouterC(config)#access-list 1 deny any
RouterC(config)#int s0/0
RouterC(config-if)#ip access-group 1 in
RouterC(config-if)#end
RouterC#sh access-list 1
[root@PCA @root]#ping 10.70.1.1(通)
[root@PCE @root]#ping 10.70.1.1(不通)
[root@PCE @root]#ping 10.66.1.1(通)
[root@PCB @root]#ping 10.70.1.1(不通)
[root@PCD @root]#ping 10.66.1.1(通)
第一个ping,PCA的IP地址是10.65.1.1在访问控制列表access-list 1中是
允许的,所以通。
第二个ping,PCE虽然是65网段,但是access-list 1对10.65.1.1是完全匹配,
所以10.65.1.3的数据包不能通过。
第三个ping,PCE到PCB不通过RouterC的s0/0,所以能通。
第四个ping,PCB的IP地址是10.66.1.1,它是被禁止的,所以不通。
第五个ping,从PCD到PCB的数据包是从RouterC的s0/0口出,不受access-list 1
的控制,所以通。
下面再写一个访问控制列表,先删除原访问控制列表:
RouterC(config)#no access-list 1
RouterC(config-if)#no ip access-group 1 in
二者都可能实现去掉访问列表的目的。前者是从列表号角度删除,后者是从接口
的输入和输出角度删除。
可以通过sh access-list
下面再写一个访问控制列表:
RouterC(config)#access-list 2 deny 10.65.1.1 0.0.0.255
RouterC(config)#access-list 2 permit any
RouterC(config)#int s0/0
RouterC(config-if)#ip access-group 1 out
RouterC(config-if)#end
RouterC#sh access-list 1
这个访问控制列表比上一个访问控制列表有以下几点不同:
⑴ 先deny后permit,
⑵ 禁止的是一个C类
⑶ 一个输出的访问控制
[root@PCA @root]#ping 10.69.1.1(不通)
[root@PCE @root]#ping 10.69.1.1(不通)
[root@PCF @root]#ping 10.69.1.1(通)
[root@PCB @root]#ping 10.69.1.1(通)
因为PCA和PCE的IP地址10.65.1.1、10.65.1.3,在deny范围内,所以不通。
而PCF的IP是10.65.2.1不在10.65.1.0 0.0.0.255范围内,所以能通。
梯形基本
访问控制列表一般是顺序匹配的,梯形结构,下面是一个参考:
RouterC(config)#access-list 4 permit 10.65.1.1
RouterC(config)#access-list 4 deny 10.65.1.0 0.0.0.255
RouterC(config)#access-list 4 permit 10.65.0.0 0.0.255.255
RouterC(config)#access-list 4 deny 10.0.0.0 0.255.255.255
RouterC(config)#access-list 4 permit any
RouterC(config)#int s0/1
RouterC(config-if)#ip access-group 4 out
[root@PCA @root]#ping 10.69.1.1(通)
[root@PCE @root]#ping 10.69.1.1(不通)
[root@PCF @root]#ping 10.69.1.1(通)
[root@PCB @root]#ping 10.69.1.1(不通) 列表格式
---- 标准型IP访问列表的格式如下: ---- access-list[list number][permit|deny][source address] ---- [address][wildcard mask][log] ---- 下面解释一下标准型IP访问列表的关键字和参数。首先,在access和list这2个关键字之间必须有一个连字符-;其次,list number的范围在0~99之间,这表明该access-list语句是一个普通的标准型IP访问列表语句。因为对于Cisco IOS,在0~99之间的数字指示出该访问列表和IP协议有关,所以list number参数具有双重功能: (1)定义访问列表的操作协议; (2)通知IOS在处理access-list语句时,把相同的list number参数作为同一实体对待。正如本文在后面所讨论的,扩展型IP访问列表也是通过list number(范围是100~199之间的数字)而表现其特点的。因此,当运用访问列表时,还需要补充如下重要的规则: 在需要创建访问列表的时候,需要选择适当的list number参数。
允许拒绝
---- 在标准型IP访问列表中,使用permit语句可以使得和访问列表项目匹配的数据包通过接口,而deny语句可以在接口过滤掉和访问列表项目匹配的数据包。source address代表主机的IP地址,利用不同掩码的组合可以指定主机。 ---- 为了更好地了解IP地址和通配符掩码的作用,这里举一个例子。假设您的公司有一个分支机构,其IP地址为C类的192.46.28.0。在您的公司,每个分支机构都需要通过总部的路由器访问Internet。要实现这点,您就可以使用一个通配符掩码 0.0.0.255。因为C类IP地址的最后一组数字代表主机,把它们都置1即允许总部访问网络上的每一台主机。因此,您的标准型IP访问列表中的access-list语句如下: ---- access-list 1 permit 192.46.28.0 0.0.0.255 ---- 注意,通配符掩码是子网掩码的补充。因此,如果您是网络高手,您可以先确定子网掩码,然后把它转换成可应用的通配符掩码。这里,又可以补充一条访问列表的规则5。
指定地址
---- 如果您想要指定一个特定的主机,可以增加一个通配符掩码0.0.0.0。例如,为了让来自IP地址为192.46.27.7的数据包通过,可以使用下列语句: ---- Access-list 1 permit 192.46.27.7 0.0.0.0 ---- 在Cisco的访问列表中,用户除了使用上述的通配符掩码0.0.0.0来指定特定的主机外,还可以使用host这一关键字。例如,为了让来自IP地址为192.46.27.7的数据包可以通过,您可以使用下列语句: ---- Access-list 1 permit host 192.46.27.7 ---- 除了可以利用关键字host来代表通配符掩码0.0.0.0外,关键字any可以作为源地址的缩写,并代表通配符掩码0.0.0.0 255.255.255.255。例如,如果希望拒绝来自IP地址为192.46.27.8的站点的数据包,可以在访问列表中增加以下语句: ---- Access-list 1 deny host 192.46.27.8 ---- Access-list 1 permit any ---- 注意上述2条访问列表语句的次序。第1条语句把来自源地址为192.46.27.8的数据包过滤掉,第2条语句则允许来自任何源地址的数据包通过访问列表作用的接口。如果改变上述语句的次序,那么访问列表将不能够阻止来自源地址为192.46.27.8的数据包通过接口。因为访问列表是按从上到下的次序执行语句的。这样,如果第1条语句是: ---- Access-list 1 permit any ---- 的话,那么来自任何源地址的数据包都会通过接口。
拒绝列表
---- 在默认情况下,除非明确规定允许通过,访问列表总是阻止或拒绝一切数据包的通过,即实际上在每个访问列表的最后,都隐含有一条deny any的语句。假设我们使用了前面创建的标准IP访问列表,从路由器的角度来看,这条语句的实际内容如下: ---- access-list 1 deny host 192.46.27.8 ---- access-list 1 permit any ---- access-list 1 deny any ---- 在上述例子里面,由于访问列表中第2条语句明确允许任何数据包都通过,所以隐含的拒绝语句不起作用,但实际情况并不总是如此。例如,如果希望来自源地址为192.46.27.8和192.46.27.12的数据包通过路由器的接口,同时阻止其他一切数据包通过,则访问列表的代码如下: ---- access-list 1 permit host 192.46.27.8 ---- access-list 1 permit host 192.46.27.12 ---- 注意,所有的访问列表会自动在最后包括deny any语句。 ---- 顺便讨论一下标准型IP访问列表的参数log,它起日志的作用。一旦访问列表作用于某个接口,那么包括关键字log的语句将记录那些满足访问列表中permit和deny条件的数据包。第一个通过接口并且和访问列表语句匹配的数据包将立即产生一个日志信息。后续的数据包根据记录日志的方式,或者在控制台上显示日志,或者在内存中记录日志。通过Cisco IOS的控制台命令可以选择记录日志方式。 (1) “ACL 的最后一条语句都是隐式拒绝语句” 是什么意思?
每个 ACL 的末尾都会自动插入一条隐含的 deny 语句,虽然ACL中看不到这条语句,它仍其作用。隐含的 deny 语句会阻止所有流量,以防不受欢迎的流量意外进入网络。
(2) 配置ACL后为什么没有生效?
在创建访问控制列表之后,必须将其应用到某个接口才可开始生效。ACL 控制的对象是进出接口的流量。