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

pbgvytdp  于 2022-11-14  发布在  HAProxy
关注(0)|答案(2)|浏览(306)

我已经配置了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?

z3yyvxxp

z3yyvxxp1#

不,MQTT协议中没有存储原始客户机IP地址的地方(就像向HTTP请求添加额外的报头一样)。
代理实际上只是将到达其公共端口的数据包转发到后端服务器(SSL终止可能例外),它根本不更改数据包。

g9icjywg

g9icjywg2#

如果您希望IP地址执行基于粘贴表的滥用保护,则需要使用MQTT客户端标识符对粘贴表进行键控。
例如,如果客户端的连接速率大于每秒1次,在10秒的窗口内,这将拒绝客户端。

tcp-request content set-var(txn.client_id) req.payload(0,0),mqtt_field_value(connect,client_identifier) if data_in_buffer
stick-table type string len 64 size 100k expire 5m store gpc0,gpc0_rate(10s)
tcp-request content track-sc0 var(txn.client_id)
tcp-request content sc-inc-gpc0(0)
tcp-request content reject if { sc0_gpc0_rate gt 10 }

相关问题