ACL------通常总的分为两大类:standard和extended
Standard:只能匹配一个地址(源地址)
Extended:能匹配两个地址(源和目的),之外extended还可以匹配协议,四层端口号等
当做过acl之后,若测试时出现u,则为管理性不可达,是由于acl有问题
另外:在写acl时要按照从小到大写(覆盖面积),按金字塔结构
Standard:
Access-list 1 permit/deny 1.1.1.1(后不加反掩码,则为全0匹配,host匹配)
写的过程中有两种方法,反掩码和通配符
反掩码:必须是连续的1,连续的0,如:
00000000.00000000.11111111.11111111
通配符:不必连续,如:
11001110.00000000.11111101.11111000
但两种方法都是0匹配,1不匹配
例如:想同时匹配 192.168.1.0/24 192.168.3.0/24 192.168.5.0/24
若用反掩码需要写三条,但如果用通配符,一条就可以完成
192.168.1.0-----------192.168.00000001.0
192.168.3.0-----------192.168.00000011.0
192.168.5.0-----------192.168.00000101.0
找出对应位,相同照写,不同写** ,则:192.168.00000**1.0(**可以在已知ip中写任意一个,不过ios会以最小匹配),之后相同的写0,不同写1,可以得到通配符: 0.0.6.0
因此:permit 192.168.1.0 0.0.6.0
Acl中any相当于全1,host相当于全0
在标准acl中若金字塔反了会出错,而在extended acl中不一定出错
小知识:在cisco设备中允许ping 网络号和子网广播,ping之后,设备会发5个包,去测试这个网段是否存在主机
Extended:
若想让一台主机去访问一个网段内的一台主机,而不能访问其网段内的其他主机,standard acl不能满足要求,此时必须使用extended acl来实现
图一:
图二:
在图一中,想让PC1 访问PC2,但不能访问PC3,则standard acl就不能满足
数据层面:数据流层下的一种调用方式----in/out接口调用(数据的流向)
注:acl的调用
控制层面:路由时调用,可以在策略时使用,同时可以用在**--map等协议中
在做acl时,如图二,若想限制R1的环回到R3的数据包,则可以在R2的IN/OUT,R3的IN都可以,但在R1的OUT不行,因为R1的环回是由R1始发,在cisco的ios中,不能在始发上调用acl ,只能在途经和终点调用,若确实想在始发上调用,则用:control-plane(控制层面命令,如其中的service-policy 可以限速,控制发多少等)
接口下调用,是决定包是否发,其他技术(如**-map)下调用,只做匹配(包和路由等),接口调用时,要考虑不良影响范围,则:standard acl中,离目标越近越好,但在extended acl中却是离源越近越好(因为反正不可达,就早点限制,以便减少带宽使用)
匹配路由:
想要匹配一条路由,反掩码和通配符为32个0
但在下面情况,可能会分不清,如:
192.168.1.0/24
192.168.1.0 0.0.0.0 ,用access-list 1 permit 192.168.1.0
192.168.1.0/30
此时就不知道是几个路由,因此想路由的同时抓掩码,则用 extended acl
Access-list 100 permit ip(ip路由)192.168.1.0 0.0.0.0 255.255.255.0 0.0.0.0
同时抓掩码和ip的一些例子:
192.168.1.0/24------192.168.00000001.0/24
192.168.2.0/24------192.168.00000010.0/24
则:access-list 100 permit ip 192.168.1.0 0.0.3.0 255.255.255.0 0.0.0.0
172.16.1.0/30-------172.00010000.1.0/30
172.20.1.0/30-------172.00010100.1.0/30
则:access-list 100 permit ip 172.16.1.0 0.4.0.0 255.255.255.252 0.0.0.0
10.1.1.0/27----------00001010.1.00000001.0 255.255.255.11100000
20.1.2.0/29----------00010100.1.00000010.0 255.255.255.11111000
则:access-list 100 permit ip 10.1.1.0.30.3.0 255.255.255.224 0.0.0.24
Standard 条目
route
Extended 条目,掩码
1:Prefix-list:在大型列表查找和加载比acl的性能更好,命名时无限制,但不能以S SE SEQ命名,因为ios会误以为是sequence(序列号),可以动态的删除,或增加某个路由条目
Ip access-list(ip acl):命名时不能以特殊字符,数字开头,但可以放在中间或末尾,但注意将?放在末尾时,需要先敲ctrl+v ,松开后再敲问号
Ip acl中有一个resequence(重排序),prefix-list中没有
Ip access-list resequence nat(列表名)100(始序列号) 20(间隔) 200(尾),有的里没有尾
小知识:找某类地址时,只能用acl(prefix-list只能找路由,并且是extended acl的优化),找地址(数据包):只能用acl 找路由:acl prefix-list都可以
例如:现要找出公司所有的A类(B类 C类)地址,有acl和prefix-list ,该用那个?条目如何写?
2:基于时间的acl
Access-list 100 permit ip XX.XX.XX.XX XX.XX.XX.XX time range XX:XX
……
3:基于动态的acl:需要配合auto-command(登录后,在权限内执行某命令)
Autocommand:line vty 0
Login local
Autocommand +某条命令
Username XX privilege XX password XX
基于动态acl 整个命令:line vty 0
Atuocommand access-enable(开启动态acl功能)
Ip access-list extended XX
Permit tcp host XX.XX.XX.XX HOST XX.XX.XX.XX EQ 23
Dynamic XS(名字)permit ip any any
注意:两个acl不能敲反,因为如果两者存在覆盖问题,或者依赖关系,则会影响后续acl的效果
动态acl就是先登到网关,在登到网关的基础上,网关设定你干什么,你就能干什么
在图一中,若pc3要登录到r2的网关才能访问pc1,则在配置access-enable时,需在后加上host,否则,pc3在访问后,pc2不做策略也可以访问pc1,但host上网,其他人可以伪装其ip上网,所以无安全性
在extended acl中,基于命名的和编号的都可以用在time-range和dynamic中,但自反acl只能用在命名extended中
4:自反acl:自己发出的数据包可以回来,其他人发出的不能回来
小知识:在tcp的报头中,存在established bit ,类似于自反acl,它是只有在数据包中的established位为1的数据包才能回,但他不安全,容易伪装,而且非tcp就无established 位,则也回不来
内网允许出去的acl
自反acl由3个acl组成: 外网拒绝所有的acl
外网自动生成的acl
命令: ip access-list extended R1-R3
Permit ip any any refect bj(开启自反acl并命名为bj)
Int f1/0
Ip access-group R1-R3 in(接口调用)
Int f1/1
Ip access-group delay-any in(外网acl)
Evalude bj 进入bj,配置条件
Deny ip any any
注:自反acl中,若端口变了,就不能用了,所以不利于端口变化的协议中,如:ftp
Acl featrue:
Acl中:log(日志)的作用很大,能显示出匹配项
Eg:access-list 1 permit any log
此时log只能显示一个(就算ping很多次,也只显示一条,防止log刷屏),过多久显示一次,不同ios不同,一般是3-5分钟,此时若想查看有多少个包,可以将acl no掉,系统会弹出log(里面有总数);写log时,若前面不是any,则只会显示匹配项的log,所以一般都写any
在standard的acl中,log只能定位ip,所以不精确,但extended acl 可以精确定位(ip,协议,mac,连接接口)
Access-list 100 permit ip any host 4.4.4.4 log-input(若后写的是log,则和standard效果一样)
Log-update:只能基于条数,loggin inter :基于速率
所有的log都会受到logging rate-limit 的限制
No logging console:不能通过console看到log日志
Logging buffered XX:对某个log进行缓存,cisco中有(0-7)8个级别(通常称为几级警告),要特别关注 0,1,2告警
Logging buffered 5(记录0-5级告警),<=5的告警
Logging history
小知识:#terminal monitor(关闭会导致在console下的日志通过远程不显示)
默认开启,关闭方法:terminal no monitor
注意:这些方法都只是初步检测网络
其中还有一些其他参数:
Dscp/precedence都和ip首部中的tos有关
fragments分片(是否允许分片/未分片的包)
Option:只能在命名acl中
Tcp中也有相关参数,也是根据tcp首部而来
Remark:注释
Access-list 100 remark r1-2-r2-icmp-deny
Access-list 100 deny icmp host 1.1.1.1 host 2.2.2.2
Ip acl中;helper-address:将广播以单播发送
p
Pc1 pc3
Pc2 pc4
Pc通过dhcp获取ip,开始会发广播包,查询dhcp sever,因此sever不能放在r1后面(p点),但用两个sever造价太大,因此可以买一个性能好的,放在p点,统一用p点server下放ip,但需要开启help-address
Access-list dynamic-extended:把动态acl的密钥延长到6min
Access-list compiled(就是turbo acl)加快acl在system中查询速率,超过19个开,小于不用开
Protocol type-code acl(200-299):一般用于三层交换机
Eg:access-list 211 permit 0x11(16进制表示)
Mac acl:
E3/0 f0/1 f0/9 e0/0
Ip acl:控制ip协议栈
使用位置
Mac acl:控制非ip协议栈懂得流量
R acl(router):2层交换机变3层时使用
P acl(port):过滤功能
V acl(vlan):vlan acl
注意:r acl只能用于ip,出/入向调用皆可;p acl 能用于ip和mac,只能在入向调用
如:
Ip acl---------deny 1 permit any ,1ping 2不能通
Mac acl------deny 1 permit any,1 ping2 能通(mac acl只能在交换机的接口调用)
交换机的mac acl:1,可在接口下调用 2,除了700-799,1100-1199还有基于命名的
在2层接口挂一个3层的acl的调用,
cisco交换机上有一个feature,不管是2层还是3层交换机(最好为企业级),在其上调用acl。他都有能力抓ip包,查ip
2层交换机没有3层的转发功能,但有3层的过滤功能
交换机上一般只能做入向调用,因为一般交换机上只有一个入向buffere,不是交换机上不能做出向调用,只要在交换机上有出向buffer,就可调用
写了int vlan 1 就只能有ip(r acl),因为已经变为三层口
实验: 12.1.1.1 12.1.1.2 13.1.1.1 13.1.1.2
Vlan2 vlan3
在r1 ping r2能通后,利用r acl,p acl 使r1到r2不能通
方法:1,在交换机上使用p acl(物理接口上)2,在交换机的swi上用r acl
Access-list 8 deny 12.1.1.1 permit any
int vlan2
ip access-list 8 in
或者:access-list 9 deny 13.1.1.1 permit any
int vlan2
Ip access-list 9 out
两种方法都可,一种控制发包,一种控制回包,但 在第二种方法调用时若用in就不行了
对于access 9 in向调用能通的原因:
Vlan2 vlan3
因为回流量不是给vlan,而是给三层引擎,不经过svi2口,进出引擎都匹配acl