Ingress中配置白名单
本文最后更新于145 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

CM 全局必要配置

# 在ingress configmap配置文件data下添加 use-forwarded-headers: 'true',来获取客户端IP
# 这样在每个ingress上只需要使用 nginx.ingress.kubernetes.io/whitelist-source-range 添加白名单地址就可以了
kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-configuration
  namespace: gray-01
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
data:
  compute-full-forwarded-for: 'true'
  forwarded-for-header: X-Forwarded-For
  use-forwarded-headers: 'true'

新版本可以生效

# 如果需要配置全局的白名单,就更改ingress 的 configmap 配置 nginx-configuration
kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-configuration
  namespace: gray-01
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
data:
  whitelist-source-range: 192.168.208.1/24,xx.xx.xx.xx
  whitelist-source-range: 183.134.214.162,172.16.11.171,172.16.17.169,172.16.17.214,172.16.17.178/25172.16.216.17,172.16.216.8,172.16.216.20/15,172.16.216.9,172.16.216.47,172.16.216.4,210.77.190.119,210.77.190.147,210.77.190.149,210.77.190.155,210.77.190.151
  block-cidrs: 192.168.208.1
  • 扩展
    • 如果在集群中,有AB两个服务,外部有负载均衡SLB,而且B的ingress的backend的后端service是nodeport类型的svc,那么A服务通过负载均衡访问B服务的时候,会失败? 或者白名单会失效,需要进一步了解原理

老版本需要在开放白名单的Ingress中单独配置

# 强制覆盖403界面
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/server-snippet: |
      # 强制覆盖默认 403 页面
      error_page 403 =200 /empty;
      location = /empty {
        internal;
        return 200 "";
      }
    nginx.ingress.kubernetes.io/whitelist-source-range: |
      172.16.11.171,
      172.16.17.169,
      172.16.17.214,
      172.16.17.178/25,
      172.16.216.17,
      172.16.216.8,
      172.16.216.20/15,
      172.16.216.9,
      172.16.216.47,
      172.16.216.4,
      210.77.190.119,
      210.77.190.147,
      210.77.190.149,
      210.77.190.155,
      210.77.190.151,
      183.134.214.162,
      172.17.195.136,
      172.16.106.88,
      172.17.27.68

原理

  • error_page 403 =200 /empty:将 403 错误映射到一个返回空内容的内部路径 /empty
  • return 200 "":直接返回 HTTP 200 和空内容,浏览器显示空白页。

效果

  • 非白名单 IP 访问时,无任何内容返回(类似 ERR_EMPTY_RESPONSE)。
  • 完全隐藏 Nginx 标识和 403 页面。
男孩子都是香香软软的小猪
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇