kubernetes - EKS 阻止单个 IP
问题描述
请减轻我的痛苦:我正在尝试阻止单个 IP 访问 EKS 上托管的站点之一。我已经尝试了 server-snippet 注释,但它没有用。我也尝试过创建一个网络策略来阻止,没有运气。知道如何设置受限 IP 列表吗?
这是网络策略:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: web-dev-network-policy
namespace: target_namespace
spec:
podSelector:
matchLabels:
app: php
policyTypes:
- Ingress
ingress:
- from:
- ipBlock:
cidr: source_ip_value/32
ports:
- protocol: TCP
port: 80
这是服务器片段:
nginx.ingress.kubernetes.io/server-snippet: |
location / {
deny source_ip;
}
编辑:在监视域的传入请求时,我可以看到 CoreDNS 重写请求(我想)以匹配托管站点的服务名称。我想这就是为什么location /
不匹配请求并且被允许的原因,例如:
source.ip.address - - [time/date] "HEAD / HTTP/2.0" 200 0 "-" "curl/7.58.0" 54 0.382 [service-name-service-name-80] [] private.ip:80 0 0.384 200 7a06748e7395fbsssceb737723399919
解决方案
这是一个社区维基答案。随意扩展它。
值得注意的是,根据官方文档:
集群入口和出口机制通常需要重写数据包的源 IP 或目标 IP。
Service
在发生这种情况的情况下,没有定义这是发生在 NetworkPolicy 处理之前还是之后,并且对于网络插件、云提供商、实现等的不同组合,行为可能会有所不同。在入口的情况下,这意味着在某些情况下,您可能能够根据实际的原始源 IP 过滤传入的数据包,而在其他情况下,NetworkPolicy 作用的“源 IP”可能是一个
LoadBalancer
或Pod 的节点等
但是,正如您在评论中已经提到的:
我们暂时搁置了这一点,因为在不启用代理协议的情况下似乎无法过滤客户端 IP 地址,这意味着生产 Ingress 的返工。现在我们必须满足AWS WAF
推荐阅读
- python - 如何使用shell或python将目录中的许多文件复制到许多其他目录
- zsh - 使用星号作为变量的 zsh 参数扩展不起作用
- android - 前一个可运行对象执行完毕后如何运行可运行对象?
- python - 如何以递减方式拉伸特定的numpy数组项?
- laravel - 如何在 yajra 数据表中显示用户定义的列名
- html - 在 div 内显示部分背景图像的问题 - 页面的透明效果部分(html、css)
- python-3.x - 如何在 pygame 中读取、写入和更新您的游戏高分 from/to file.txt saved.?
- python - Python类方法继承
- java - 如何修复 int Bitmap getWidth() 的空引用错误
- html - 是否可以使用 :hover 更改图像?