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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值