您好,欢迎来到暴趣科技网。
搜索
您的当前位置:首页Netty | 黑白名单

Netty | 黑白名单

来源:暴趣科技网

Netty 中的 “cidrPrefix” 是什么?

  • 用 CIDR 的方式表示一个 IP,比如:192.168.31.100/24,其中 24 就是 Netty 中的 cidrPrefix;

Netty 地址过滤功能源码解析

Netty 地址过滤的功能
  • 同一个 IP 只能有一个连接,逻辑在 UniqueIpFilter 中实现,其也是个 handler,用的时候安装到 pipeline 上就行了;
  • IP 地址过滤:黑名单、白名单,逻辑在 RuleBasedIpFilter 和 IpSubnetFilterRule 中实现;

示例:使用黑名单增强安全

  • 定义黑名单的规则,其实给出的是一个 IP 和 CIDR,根据这两个值算出网络号;
  • 然后比较 Client 的 IP 的网络号和规则中计算出的网络号是否相等,如果相等,说明 Client 的 IP 是在黑名单中(当 IpSubnetFilterRule 的 IpFilterRuleType 是 REJECT 的情况下),断开连接;
  • 代码片段如下:
// IpSubnetFilterRule 规则判断的是 Client 的 IP 和规则中的 IP 是否在同一个局域网中,规则定义如下:
// 如果和规则定义的 IP 在同一个局域网中,就断开连接;
// 如果和规则定义的 IP 不在同一个局域网中,就放过,什么都不做;
// 这个规则其实就是个黑名单
final IpSubnetFilterRule ipSubnetFilterRule
        = new IpSubnetFilterRule("127.0.0.1", 8, IpFilterRuleType.REJECT);
final RuleBasedIpFilter ruleBasedIpFilter = new RuleBasedIpFilter(ipSubnetFilterRule);

// 黑名单 handler
pipeline.addLast("ipFilter", ruleBasedIpFilter);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务