一、什么是黑白名单
- 白名单就是值得信任允许访问或者允许通过验证的名单。
- 黑名单就是不值得信任限制访问或者不允许通过验证的名单。
二、IP Restriction介绍
- IP Restrictiong是kong的IP黑白名单插件,可以针对服务、路由、消费者配置黑白名单。
- 配置参数解读:
service_id:配置在服务上
route_id:配置在路由上
consumer_id:配置在消费者上
config.whitelist:配置白名单
config.blacklistr:配置黑名单
示例
- 给服务phoenix-apocalypse和消费者quanzhengzheng增加黑白名单插件
curl -X POST http://localhost:8001/services/431f3d59-5e34-429b-b5ff-2c66bf75aee8/plugins \
–data “name=ip-restriction” \
–data “consumer_id=fbf3b658-3c9f-4ea0-958c-84b3db435d02” \
–data “config.whitelist=127.0.0.1” - 请求接口/api/v1/apply/rate
curl -i -X POST \
–url http://10.140.129.120:8000/api/v1/apply/rate \
–Header ‘Authorization:67EDA32A0E1FB4BA5BA991EFBCA601AE’
提示报错“Your IP address is not allowed” - 修改配置增加此ip段
curl -X PATCH http://localhost:8001/plugins/4c58b6f0-e1ed-41a7-af3e-707a8a9af793
–data “config.whitelist=127.0.0.1,112.74.0.0/16” - 再次请求成功
三、黑白名单的配置规则
- 黑名单、白名单只能选择其一,不能同时存在。
- 可以设置具体的IP 如:192.168.1.1 或192.168.1.1/32
- 可以设置某一个IP段如下
- 192.168.1.0/24 表示192.168.1.0~192.168.1.255
- 192.168.0.0/16 表示192.168.0.0~192.168.255.255
- 192.0.0.0/8 表示192.0.0.0~192.255.255.255
- 0.0.0.0/0 表示所有合法的IP
四、源码解读
源码路径 /app/kong/luajit/share/lua/5.1/kong/plugins/ip-restriction
├── handler.lua
└── schema.lua
handler:插件的入口类,用于实现插件逻辑。
schema :插件的配置类,定义可配置的参数及有效参数范围等。