入站 ACL 的逻辑

图 1 显示了入站 ACL 的逻辑。 如果数据包报头中的信息与某条 ACL 语句匹配,则会跳过列表中的其他语句,由匹配的语句决定是允许还是拒绝该数据包。 如果数据包报头与 ACL 语句不匹配,那么将使用列表中的下一条语句测试数据包。 此匹配过程会一直继续,直到抵达列表末尾。

每条 ACL 的末尾都有一条语句,该语句是一条隐式 deny any 语句。 该语句在输出中不显示。 最后这条隐含的语句适用于不满足之前任何条件的所有数据包。 这条最后的测试条件与所有其他数据包都匹配,并会产生“拒绝”操作。 此时路由器不会让这些数据进入或送出接口,而是直接丢弃它们。 最后这条语句通常称为“隐式 deny any 语句”或“拒绝所有流量”语句。 由于该语句的存在,所以 ACL 中应该至少包含一条 permit 语句,否则 ACL 将阻止所有流量。

出站 ACL 的逻辑

图 2 显示了出站 ACL 的逻辑。 在数据包转发到出站接口之前,路由器检查路由表以查看是否可以路由该数据包。 如果该数据包不可路由,则将其丢弃,并且不进行 ACE 测试。 接下来,路由器检查出站接口是否配置有 ACL。 如果出站接口没有配置 ACL,那么数据包可以发送到输出缓冲区。 下面是出站 ACL 的运作示例:

对于出站列表,“允许”表示将数据包发送到输出缓冲区,而“拒绝” 则表示丢弃数据包。