banner
NEWS LETTER

Ingress限制IP访问

Scroll down

本文作者:丁辉

Ingress限制IP访问

我们有时会遇到服务器请求过高疑似被攻击的情况,这时候我们就需要限制不知名IP的请求访问,本文记录如何配置全局 Ingress 配置限制某个IP访问的配置和验证过程。

修改 Ingress 配置

我们需要找到 Ingress 的配置文件并修改它

1
kubectl get configmap -n ingress-nginx

修改

1
kubectl edit configmap ingress-nginx-controller -n ingress-nginx

添加如下内容

我们需要在 Nginx-Ingress 内使用 http-snippet 来配置限制。

NGINX 控制器只识别官方支持的配置项,比如:

  • http-snippet
  • server-snippet
  • location-snippet
  • use-forwarded-headers
  • allow-snippet-annotations
  • 等等。
1
2
3
4
5
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

资源类型是 daemonsetdeployment 这就需要看安装时选择的参数来确定了,因为许多环境都不同。

1
kubectl rollout restart daemonset ingress-nginx-controller -n ingress-nginx

检查是否生效

验证方案

从被禁止的 IP 测试

假设你在某台机器(或 Pod)上模拟访问

1
curl -I http://your-domain.com

如果 IP 在 deny 列表中,应该返回 HTTP/1.1 403 Forbidden

从其他 IP 测试

使用不同 IP 的机器再访问一次

1
curl -I http://your-domain.com

应能正常访问 HTTP/1.1 200 OK

I'm so cute. Please give me money.

其他文章
cover
Ingress问题记录
  • 70/01/01
  • 00:00
  • Kubernetes-网关
cover
部署GatewayAPI
  • 70/01/01
  • 00:00
  • Kubernetes-网关
目录导航 置顶
  1. 1. Ingress限制IP访问
    1. 1.1. 修改 Ingress 配置
    2. 1.2. 重启 NGINX Ingress Controller
    3. 1.3. 检查是否生效
    4. 1.4. 验证方案
      1. 1.4.1. 从被禁止的 IP 测试
      2. 1.4.2. 从其他 IP 测试
请输入关键词进行搜索