访问控制列表(ACL) 是应用在应用在路由接或多层交换机接口上的指令列表(即规则),这些规则可以告诉路由器哪些包需要拒绝,哪些包可以接收,基本的工作原理:ACL使用包过滤技术,在路由器上第三层,第四层包头中的信息(工作在第三层上的设备有Router,用来逻辑寻址,第三层封装的是包,包括原IP,目标IP。第四层负责可靠和不可靠传输的,工作在第四层上的协议有TCP/UDP,封装的是段,包括原端口和目标端口。) 根据定义好的规则,对包进行过滤,从而达到访问控制的作用。
访问控制列表有两个方向:
进(In) :以到达路由器接口的数据包,将被路由器处理
出(out):已经过路由器的处理,正离开路由器
访问控制列表的匹配规则:
接口应用了规则以后,那么路由器将对数据包应用该规则进行顺序检查
如果匹配第一条规则,则不再往后检查,路由器决定丢包还是通过。
如果不匹配第一条规则,依次往后进行检查(一直如此)。
//匹配 == 是否关系到此数据包
// 如果一直没有匹配,默认拒绝所有
所以规则放置的顺序是很重要的,一旦找到了一条匹配规则则不再往下进行匹配,所以条件越具体的越往上写 如:子网掩码比较长的向上写(一个IP的子网掩码就比一个网段的子网掩码长),路由器上定义ACL,本路由器并不受次ACL的限制。
ACL 有两种基本控制类型
①标准访问控制列表
标准访问控制列表根据源IP进行允许或拒绝数据包,标准访问控制列表列表号是
1~99
命令:创建ACL access-list access-list-number {permit | deny} source IP
source-wildcard
accss-list-number :ACL列表标号
source 数据包源IP地址
source-wildcard:反码,可以通过 255.255.255.255 减去 子网掩码得到
permit | deny 允许或者拒绝。
如:access-list 1 permit192.168.18.0 0.0.0.255 //允许192.168.18.0网段的数据包通过。
access-list 1 deny host 192.168.18.32 //拒绝主机192.168.18.32 通过,当仅有一个 主机时可用host(主机)代替。
access-list 1 deny any //拒绝所有,这里any 代表的是所有。
②扩展访问控制列表
扩展访问控制列表是根据协议类型以及源IP,目标IP地址进行访问控制
如:access-list 101 permit ip 192.168.18.0 0.0.0.255 192.168.19.0 0.0.0.255
access-list 101 deny ip any any
//允许网络192.168.18.0/24 访问网络 192.168.19.0/24流量通过,而拒绝其他任何流量。
access-list 101 deny tcp 192.168.18.0 0.0.0.255 192.168.19.0 0.0.0.255 eq 21
access-list 101 permit ip any any
//拒绝网络192.168.18.0/24 访问 192.168.19.0/24 的FTP服务器,允许其他所有。
access-list 101 deny icmp 192.168.18.0 0.0.0.255 192.168.18.32 echo
access-list 101 permit ip any any
//拒绝网络192.168.18.0/24的主机ping通192.168.18.32 允许其他所有
echo是ping命令去的时候包,而echo-replay 是ping命令回来的包
标准访问控制列表和扩展访问列表都不能删除单条ACL语句,都是全部删除。
上面只是定义了ACL规则,要将ACL规则应用于接口ACL才会生效,命令如下:
ip access-group access-list-number {in | out}
取消接口上ACL的应用
no ip access-group access-list-name {in | out}