VPP中ACL(访问控制列表)的使用——系列二

目录
[一、ACL_PLUGIN测试]
  [1.三层测试]
  [2.黑名单实现]
  [3.二层测试]
[二、CLASSIFY测试]
  [1.二层测试]
  [2.三层测试]
  [3.四层测试]
  [4.Hex测试:某session中配置多个过滤条件]
  [5.多table组成表链测试]
  [6.单table配多条session测试]


一、ACL_PLUGIN测试

1.三层测试

  因为acl_plugin默认采用白名单机制,策略挂载到端口后,未匹配到数据包全部拒绝。所以直接采用permit即可生效。同时,可直接ip掩码,例如10.10.150.0/24格式,提供了很高灵活性。

  • 数据流入方向input/output 端口permit测试
  • 数据流出方向input/output 端口permit测试

  实验结论:验证端口的input output方向挂载acl均可生效,但src和dst需要斟酌指定。

2.黑名单实现

  因默认机制为白名单方式,所以实现黑名单功能至少需要2条acl控制规则,并同时挂载某端口。通过调整挂载acl序号顺序,判断多个挂载规则表之间关系。

实验结论:对于符合第一条规则的数据包击中,则不往后执行。未击中,执行后续acl规则。

3.二层测试

二、CLASSIFY测试

1.二层测试

对源MAC为64:00:6a:1d:75:06数据包进行拒绝。

实验结果:

策略挂载到eth2 input后,实现功能,图片显示数据包击中策略,被拦截证实的图片。测试策略表仅挂在eth2的input方向成功,output失败。同时,挂载eth1的input和output 均不生效。
150.2 ping 200.2 不通,删除session后ping通 //效果实现
100.2 ping 150.2 不通,删除session后通 //效果实现

2.三层测试

(1)对源IP为10.10.150.2的ICMP数据包进行拒绝。测试可行

实验结果:
执行set int input acl intfc eth2 ip4-table 1时,测试成功,实现指定拦截。
150.2  ping  200.2  不通
150.2  ping  100.2  不通
100.2  ping  200.2  通
100.2  ping  150.2  不通

(2)添加dest 拦截测试
分别挂载到eth1端口的input 、output端口。

测试发现仅挂eth2的input流入方向生效,output不生效;同时,挂载端口eth1无法生效。

3.四层测试

对源IP地址为10.10.150.2的TCP数据包进行拒绝。l4创建acl table必须添加l3参数,指定session时l4后参数为src_port 和dst_port。

使用netperf发送数据报,实现成功拦截端口号为12865的TCP数据报文。

4.Hex测试:某session中配置多个过滤条件

  1. 对源MAC为00:0c:29:e9:0e:9c(且)源IP为10.10. 150.2的ICMP包进行过滤。
    Ip proto Offset 10B, Ip src 13B begin。

(2)对源IP地址为10.10. 150.0/24****网段的所有ICMP数据包进行过滤,即match参数中的0x0a0a96,proto即match参数中的0x01。

实验结果: 实现整个网段的ICMP过滤功能,修改150.2为150.4进行测试拦截成功。

5.多table组成表链测试

(1)使用多个表过滤源IP地址和源MAC地址,即将参数next-table指向下一个策略表。对源MAC为00:0c:29:e9:0e:9c或源IP为10.10.150.2的数据包进行拒绝。

结果:先执行table1,没匹配成功MAC,则执行下一表table0匹配。此时table2 src ip有匹配成功数据包21个。则执行动作数据包拒绝通过。

(2)ACL表0禁止来源是10.10.150.0/24网段的数据包访问,表1禁止来源是10.10.150.2的数据包访问,即表0、表1是覆盖关系。

实验结果:只hit到网段拦截,但下一跳具体ip无拦截。

结论:若数据包匹配成功,则执行动作;匹配失败则匹配下一表。

(3)白名单permit实现

classify默认采用黑名单模式,需要直接指定拒绝策略,则其他未匹配数据包均能通过。通常cisco产品具有添deny any关键字,但classify中无any关键字,session中只能指定具体值。测试案例,仅允许10.10.150.2的IP访问通过,其他拒绝。

实验结果:首先匹配到数据包会执行动作,就不会匹配往后策略表。未匹配到则继续匹配策略表。对150网段内主机IP任意修改,拦截ping200网段数据包,实现网段测试。

实验结论:table****表连接都是或的关系,只要某数据包有命中,就不会往下执行

table表的循环索引: table表死循环的测试,在挂端口后设置循环列表,vpp,vppctl进程仍在运行,但都vpp,vppctl都卡死;VPP其他网段无法ping通。

结论:挂端口后不可形成循环链表,需挂端口前设置好索引关系,或挂端口后处理好索引关系。

6.单table配多条session测试

对发往10.10.200.2,源IP地址为10.10.150.2、10.10.150.3、10.10.100.2、10.10.100.3的数据包进行过滤。证实table可以同时挂多个端口并生效,并每条table中设置多条session。

赞赏

微信赞赏支付宝赞赏

发表评论

邮箱地址不会被公开。 必填项已用*标注