ACL包过滤
ACL
中文名叫做访问控制列表,但并非是用来控制谁访问谁,谁不能访问的,他的作用是匹配和筛选;
想要控制谁能被访问,就需要筛选出到达目的地址的包,然后进行过滤,他本身不对数据包做任何的操作,他只负责筛选
常见功能
- 访问控制
- ACL+Packet-filter
- Packet叫做包,filter过滤器所以组合叫做包过滤,也就是ACL和包过滤合作就是访问控制
- 路由控制
- ACL+Route-policy
- ACL+路由策略实现路由控制
- 流量控制
- ACL+QOS
- QOS是做流控的,他们组合决定了什么数据包先走,什么数据包后走
基于ACL的包过滤

定义:
- 对进出的数据包逐包检车,丢弃或允许通过
- 包过滤必须配置在接口的某个方向才能生效
- 一个接口的一个方向只能配置一个包过滤策略
针对一种效果,可以在出口或者入口配置不同的策略
包过滤的方向
- 入方向
- 只对外部进入的数据包做过滤
- 出方向
- 只对从内部发出的数据包做过滤
包过滤的工作流程

包刚进入,就会先判断这个包是否配置了入方向的ACL包过滤,没有配置就直接放行,如果配置了,就会主意匹配规则,规则可能不止一条,当匹配第一条规则,匹配成功后再根据规则要求是丢弃还是放行,如果不匹配,那就匹配下一条规则,匹配上就根据要求放行或丢弃,如果一直不匹配就会到最后一次的检查默认动作
默认规则的存在大概是处理不背选中的包的,例如要放行某个包到2网段,那么其他来源的不准走,这种情况就需要将默认规则设置为拒绝,这样通过筛选的就放行
所有规则匹配完了之后,会去检查默认动作,默认动作要么丢弃,要么方向,华三的设备一般默认动作是放行
出口方向的也差不多

主意事项
- 如果默认动作是允许,至少需要一条拒绝规则
- 如果默认动作是拒绝,至少需要一条允许规则
- 上述的两个主意是因为要处理不通过规则的包,因为通过条件的要么放行,要么丢包,那么剩余的包正好是反向操作
- H3C的ACL用于包过滤默认允许,用于其他默认拒绝
- 把小范围的规则分配一个考前的顺序
- 在不影响实际效果的前提下,把包过滤尽量配置在离源地址最近的接口的入方向
ACL分类
基本ACL
- 支队数据包的源地址进行匹配
- 编号2000-2999

比如说上图,配置一个基本的ACL想要让1.0网段访问不了2.0,但是如果配置了基本ACL就会导致1.0到3.0和4.0都去不了,是一个范围伤害
高级ACL
- 对数据包的五元组进行匹配(源IP,目的IP,源端口,目的端口,协议)
- 编号3000-3999
实验
实验拓扑如下:

左侧PC1和PC2是用路由器模拟PC机,这里配置网关的时候,直接配置一条默认路由指向网关地址就行,本质上将,PC上的网关也是一个意思,二者可以画等号
实验需求
- 按照图示配置IP地址
- 全网路由互通
- 在SERVER1上配置开启TELNET和FTP服务
- 配置ACL实现如下效果
192.168.1.0/24网段不允许访问192.168.2.0/24网段,要求使用基本ACL实现- PC1可以访问SERVER1的TELNET服务,但不能访问FTP服务
- PC2可以访问SERVER1的FTP服务,但不能访问TELENT服务
192.168.2.0/24网段不允许访问SERVER1,要求通过高级ACL实现
配置IP
PC1:
[PC1]int g0/0
[PC1-GigabitEthernet0/0]ip add 192.168.1.1 24
[PC1-GigabitEthernet0/0]quit
[PC1]ip route-static 0.0.0.0 0.0.0.0 192.168.1.254
PC2:
[PC2]int g0/0
[PC2-GigabitEthernet0/0]ip add 192.168.1.2 24
[PC2-GigabitEthernet0/0]quit
[PC2]ip route-static 0.0.0.0 0.0.0.0 192.168.1.254
L2-SW的g0/3口记得配置turnk口,不配置也没事
R1:
[R1]int g0/1
[R1-GigabitEthernet0/1]ip add 192.168.1.254 24
[R1-GigabitEthernet0/1]int g0/1
[R1-GigabitEthernet0/1]ip add 100.1.1.1 24
R2:
[R2]int g0/0
[R2-GigabitEthernet0/0]ip add 100.1.1.2 24
[R2-GigabitEthernet0/0]int g0/1
[R2-GigabitEthernet0/1]ip add 100.2.2.2 24
[R2-GigabitEthernet0/1]int g0/2
[R2-GigabitEthernet0/2]ip add 192.168.2.2 24
PC3:

R3:
[R3]int g0/0
[R3-GigabitEthernet0/0]ip add 100.2.2.3 24
[R3-GigabitEthernet0/0]int g0/1
[R3-GigabitEthernet0/1]ip add 192.168.3.3 24
SERVER1:
[SERVER1]int g0/0
[SERVER1-GigabitEthernet0/0]ip add 192.168.3.1 24
配置RIPv2使全网互通
[R1]rip
[R1-rip-1]version 2
[R1-rip-1]undo summary
[R1-rip-1]net 192.168.1.0 255.255.255.0
[R1-rip-1]net 100.1.1.0 255.255.255.0
[R2]rip
[R2-rip-1]v 2
[R2-rip-1]undo summary
[R2-rip-1]net 100.1.1.0 255.255.255.0
[R2-rip-1]net 192.168.2.0 255.255.255.0
[R2-rip-1]net 100.2.2.0 255.255.255.0
[R3]rip
[R3-rip-1]v 2
[R3-rip-1]net 100.2.2.0 255.255.255.0
[R3-rip-1]net 192.168.3.0 255.255.255.0
[R3-rip-1]undo summary
[SERVER1]rip
[SERVER1-rip-1]v 2
[SERVER1-rip-1]undo sum
[SERVER1-rip-1]net 192.168.3.0 255.255.255.0
SERVER1配置服务
按照要求,SERVER1要配置telnet和ftp两个服务
telnet:
[SERVER1]telnet server enable
[SERVER1]local-user wangdaye class manage
[SERVER1-luser-manage-wangdaye]password simple 123456abcd
[SERVER1-luser-manage-wangdaye]service-type telnet
[SERVER1-luser-manage-wangdaye]authorization-attribute user-role level-15
[SERVER1-luser-manage-wangdaye]quit
[SERVER1]user-interface vty 0 4
[SERVER1-line-vty0-4]authentication-mode scheme
[SERVER1-line-vty0-4]user-role level-15
配置了telnet服务,创建了一个wangdaye账户,密码为123456abcd
ftp:
[SERVER1]ftp server enable
[SERVER1]local-user lidaye class manage
[SERVER1-luser-manage-lidaye]password simple 123456abcd
[SERVER1-luser-manage-lidaye]service-type ftp
[SERVER1-luser-manage-lidaye]authorization-attribute user-role level-15
配置ACL
要求1
192.168.1.0/24网段不允许访问192.168.2.0/24网段,要求使用基本ACL实现
基本ACL是只限制源地址的

那么为了防止误伤其他的包,那么可以在R2的g0/2口的出口方向配置限制原地为192.168.1.0/24网段的即可,本来说配置acl最好是靠近源地址的入方向,但是如果在离1网段最近的入方向配置,也就是R1的g0/1口的入方向配置的话,就会导致后面的3.0网段也收不到了,但是如果在R2的g0/0口的入方向配置那么就会导致除了192.168.2.0/24收不到外,还会有3.0和100.2.2.0/24网段收不到
所以此时再R2的g0/2配置基本ACL,这里基本ACL的编号是从2000开始,这里直接用2000
先创建一条规则,限定源地址要绑定的是反掩码
[R2]acl basic 2000
[R2-acl-ipv4-basic-2000]rule deny source 192.168.1.0 0.0.0.255
注意:如果dis this会发现,规则后面默认带了一个序号这第一个是0,如果不指定的话会以五的倍数递增,中间间隔五个的目的是为了方便中途突然想要插入规则

刚刚只是配置完了策略,现在需要将策略用在R2的g0/2口的出方向
[R2]int g0/2
[R2-GigabitEthernet0/2]packet-filter 2000 outbound
packet-filter就是前面讲ACL常见功能中的包过滤
要求2和3
PC1可以访问SERVER1的TELNET服务,但不能访问FTP服务
这里因为需要针对限制访问服务,区别服务的使用端口号,那么限制访问服务就是要针对对应的端口,就要用高级ACL
高级ACL属于精准打击,不需要太过谨慎,可以直接在靠近源地址的入口方向配置,所以在R1的g0/1的入口方向配置高级ACL
这里 配置ACL可以不用管放通telnet协议,只用管限制ftp服务,因为默认操作就是放通
[R1]acl advanced 3000
[R1-acl-ipv4-adv-3000]rule deny tcp source192.168.1.1 0 destination 192.168.3.1 0 destination-port range 20 21
在ACL中精确匹配的0.0.0.0可以简写为一个0;这里本身是可以指定源端口的,但是知道服务端的端口是20和21,但是客户单的端口是随机的,所以就不设置源端口;在destination-port后面敲问号会有五个命令可以选,从上到下依次是等于,大于,小于,不等于,在某个区间

同样的也可以配置第二条规则了,也就是PC2不能访问TELNET服务,但是可以访问FTP
[R1-acl-ipv4-adv-3000]rule deny tcp source 192.168.1.2 0 destination 192.168.3.1 0 destination-port eq 23
配置完ACL后就可以进入到f0/1口配置访问控制
[R1-GigabitEthernet0/1]packet-filter 3000 inbound
要求4
192.168.2.0/24网段不允许访问SERVER1,要求通过高级ACL实现
因为是高级ACL所以依旧精准打击,那么就是靠近源地址的入口方向配置
也就是R2的g0/2口入方向配置,因为是不能访问server1的服务,telnet和ftp都属于ip协议,目的端口也不用指定,这样就配置完了
[R2]acl advanced 3000
[R2-acl-ipv4-adv-3000]rule deny ip source 192.168.2.0 0.0.0.255 destination 192.168.3.1 0
[R2-acl-ipv4-adv-3000]quit
[R2]int g0/2
[R2-GigabitEthernet0/2]packet-filter 3000 inbound