ACL In and Out方向

最近在工作使用到了ACL, 在使用过程中对到底在接口下In方向调用, 还是out方向调用, 以前也没有认真了解过. 所以准备通过实验来详细了解一下扩展ACL在接口下的应用.

实验拓扑

实验拓扑

实验信息

  • R1
    • e0/0 192.168.1.2/24
    • e0/1 192.168.3.254/24
    • e0/2 192.168.130.254/25
  • SW1
    • e0/0 192.168.1.1/24
    • e0/1 vlan130(192.168.130.126/25)
    • e0/2 vlan100(192.168.100.254/24)
  • Host-1 192.168.130.200/25
  • Host-2 192.168.3.208/24
  • Host-3 192.168.100.1/24
  • Host-4 192.168.130.126/25
    R1和SW1 之间运行OSPF, 并且宣告本地路由

在SW1的interface vlan130下in方向调用ACL

1
2
3
ip access-list extend test
permit ip 192.168.130.0 0.0.0.127 192.168.3.0 0.0.0.255
deny ip any any
  • 这个时候从130.32 ping 3.208 还是反过来都是可以ping通的
  • 简单的说所谓的In方向就是进入到该接口的流量
    1
    2
    3
    4
    SW1#sh access-list test
    Extended IP access list test
    10 permit ip 192.168.130.0 0.0.0.127 192.168.3.0 0.0.0.255 (10 matches)
    20 deny ip any any

可以看到从3.208来的流量匹配的也命中了第一条策略:

  • 3.208过来的流量算是out方向的流量, 因为没有对out方向流量做限制, 所以默认是permit any any
  • 匹配的是130.32收到ping包之后的回包流量, 这个对于interface vlan130属于In方向流量要进行过滤
    修改一下ACL, 再进行双向测试:

    1
    2
    3
    ip access-list extend test
    permit tcp 192.168.130.0 0.0.0.127 192.168.3.0 0.0.0.255 eq 23
    deny ip any any
  • 3.208 telnet 130.32是不通的, 但是130.32可以telnet 3.208.

  • 发现3.208的流量其实已经到了130.32, 而且130.32已经给了回包, 但是回包被网关丢弃了(目的地不可达), 所以TCP连接无法建立
    ACL-IN

在SW1的interface vlan130下out方向调用ACL

我们只是单纯的修改ACL调用的方向, 将in改为out, 可以看到两边都不通了.

  • 3.208 telnet 130.32不通, 但是报错不一样了.(% Destination unreachable; gateway or host down)
    ACL-OUT
    可以看到3.208的流量根本就没有到130.32, 然后ACL中deny any any的策略命中, 说明没有匹配到任何策略就被丢弃了.
  • 130.32 telnet 3.208 不通, 可以发现流量到了3.208, 但是由于回包流量被drop了 所以也无法建立TCP连接
    ACL-OUT-1
    我们修改ACL, 并重新进行测试:

    1
    2
    3
    ip access-list extend test
    permit tcp 192.168.3.0 0.0.0.255 192.168.130.0 0.0.0.127 eq 23
    deny ip any any
  • 3.208可以telnet 130.32; 130.32 无法telnet 3.208

  • 因为源目IP地址虽然匹配到了, 但是TCP端口没有匹配到, 因为发起流量的源端口是一个随机高端口, 返回的时候找ACL中无法直接定义到这个端口所以没有匹配到策略就被丢弃

小结

  • 简单的说, 无论是在In方向还是out方向调用ACL都能实现我们的功能, 但是流量源目地址的方向就要注意了, 是不一样的
  • 一般情况下, 如果针对源地址做限制的话, ACL挂在离地址段最近的一个端口in方向
  • 实验中, 在SVI口和物理接口下同时调用ACL可以发现, 下联的主机可以ping通SVI口的地址, 但是不能ping通物理接口地址.(如果没有方向相关策略的话)

ACL概念

  • 标准ACL一般只针对IP头部的源地址进行限制
  • 扩展ACL可以匹配源目IP地址以及目的端口
    1
    2
    3
    4
    5
    6
    7
    8
    ACL编号范围
    <1-99> IP standard access list
    <100-199> IP extended access list
    <1100-1199> Extended 48-bit MAC address access list
    <1300-1999> IP standard access list (expanded range)
    <200-299> Protocol type-code access list
    <2000-2699> IP extended access list (expanded range)
    <700-799> 48-bit MAC address access list