通过 haproxy 获取 MQTT 请求的客户端 IP

get client IP for an MQTT request over haproxy

我已经配置 X_FORWARDED_FOR 为 HTTPS 请求捕获客户端 IP,它按预期工作。

但是,对于 MQTT,数据是通过 SSL 发送的,HTTP/S 不在考虑范围之内。

ssl://<HOST_NAME>:<PORT>

我尝试将以下内容添加到 HAproxy 配置的后端服务器。到目前为止运气不好。

backend TestServer
    mode tcp
    server TestServer01 10.6.186.24:48080 send-proxy-v2
------
    server TestServer01 10.6.186.24:48080 send-proxy
------    
    server TestServer01 10.6.186.24:48080 send-proxy-v2-ssl

有没有办法通过更改 HAProxy 配置来捕获传入 MQTT 请求的客户端(源)IP?

不,MQTT 协议中没有任何地方可以存储原始客户端 IP 地址(例如向 HTTP 请求添加额外的 headers)。

代理实际上只是将到达它的 public 端口的数据包转发到后端服务器(除了执行 SSL 终止之外)它根本不改变数据包。