在 kubernetes 上运行的 traefik AWS ELB 上的真实 IP



我已经在配置了traefik(v1.7(的EKS集群(v1.13(上部署了一个服务。我已经将源IP列入白名单,并在ELB上启用了代理协议。我无法获得客户端的真实IP。这是我的配置方式。

traefik.toml

[entryPoints.https.whiteList]
sourceRange = ["10.100.0.0/16"]
useXForwardedFor = true
[entryPoints.https.proxyProtocol]
trustedIPs = ["10.100.0.0/16"]
[entryPoints.https.forwardedHeaders]
trustedIPs = ["10.100.0.0/16"]

入口对象:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-nginx
annotations:
kubernetes.io/ingress.class: "test-dev"
traefik.ingress.kubernetes.io/preserve-host: "true"
ingress.kubernetes.io/whitelist-x-forwarded-for: "true"
traefik.ingress.kubernetes.io/whitelist-source-range: "10.100.0.0/16"
spec:
rules:
- host: test-nginx.example.com
http:
paths:
- path: /
backend:
serviceName: nginx-headers
servicePort: 80

输出:

$ curl https://test-nginx.example.com/
Hostname: nginx-headers-5f544s5cc3-sl5c6
IP: 127.0.0.1
IP: 10.100.0.57
GET / HTTP/1.1
Host: test-nginx.example.com
User-Agent: curl/7.64.1
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 54.31.147.124, 10.100.0.57
X-Forwarded-Host: test-nginx.example.com
X-Forwarded-Port: 443
X-Forwarded-Proto: https
X-Forwarded-Server: test-dev-traefik-7549d898bc-ttjf4
X-Real-Ip: 10.100.0.57        

我在这里错过了什么吗?任何帮助将不胜感激。

我知道这不是一个安全的解决方案,但至少你会看到真实的IP,可以继续调试

[entryPoints.https.whiteList]
sourceRange = ["0.0.0.0/0"]
useXForwardedFor = true
[entryPoints.https.proxyProtocol]
trustedIPs = ["0.0.0.0/0"]
[entryPoints.https.forwardedHeaders]
trustedIPs = ["0.0.0.0/0]

和注释:

traefik.ingress.kubernetes.io/whitelist-source-range: "0.0.0.0/0"

它在 Docker Swarm 中对我有用

最新更新