2.0 KiB
2.0 KiB
本文作者:丁辉
Ingress限制IP访问
我们有时会遇到服务器请求过高疑似被攻击的情况,这时候我们就需要限制不知名IP的请求访问,本文记录如何配置全局 Ingress 配置限制某个IP访问的配置和验证过程。
修改 Ingress 配置
我们需要找到 Ingress 的配置文件并修改它
kubectl get configmap -n ingress-nginx
修改
kubectl edit configmap ingress-nginx-controller -n ingress-nginx
添加如下内容
我们需要在 Nginx-Ingress 内使用
http-snippet来配置限制。NGINX 控制器只识别官方支持的配置项,比如:
http-snippetserver-snippetlocation-snippetuse-forwarded-headersallow-snippet-annotations- 等等。
data:
http-snippet: |
deny #需要限制的IP;
deny 192.168.100.100;
allow all;
参数解释
| 指令 | 含义 |
|---|---|
deny 192.168.100.100; |
拒绝来自该 IP 的访问 |
allow 192.168.100.0/16; |
允许来自该网段的访问 |
allow all; |
允许所有其他请求(即没有被前面的 deny 拦住的 IP) |
重启 NGINX Ingress Controller
资源类型是
daemonset或deployment这就需要看安装时选择的参数来确定了,因为许多环境都不同。
kubectl rollout restart daemonset ingress-nginx-controller -n ingress-nginx
检查是否生效
验证方案
从被禁止的 IP 测试
假设你在某台机器(或 Pod)上模拟访问
curl -I http://your-domain.com
如果 IP 在 deny 列表中,应该返回 HTTP/1.1 403 Forbidden
从其他 IP 测试
使用不同 IP 的机器再访问一次
curl -I http://your-domain.com
应能正常访问 HTTP/1.1 200 OK