V4.4共享订阅忽视ACL

仅使用exhook插件定义ACL,然后开启了共享订阅。

在exhook插件服务中,设置ACL的逻辑为只允许IP为192.168.1.1的客户端订阅主题abc,在该服务器上启动一个客户端c1订阅 $share/group/abc,因为是IP是192.168.1.1所以可以订阅成功;

同时在另外一台服务器192.168.1.2上启动另一个客户端c2也订阅$share/group/abc,因为非192.168.1.2所以订阅失败;

此时查看Dashboard,订阅中只有c1订阅了abc主题,但是此时向abc发送消息,仍然是c1和c2都能随机收到消息,哪怕Dashboard种显示c2的订阅数为0。

共享订阅是会忽视ACL配置吗,还是还有哪里可以配置这个?

  • 开启 debug 日志观察消息投递过程
  • 如何确认 192.168.1.2 客户端订阅失败了
    • 为 192.168.1.2 这个客户端抓包查看 sub 报文?
    • ExHook ACL 返回值?
    • 客户端 SUBSCRIBE 时,如果 ACL 检查失败,会向客户端返回 ReasonCode = 135 (not authorized) 的 SUBACK 报文