HAproxy gpt0 不触发后端选择

HAproxy gpt0 不触发后端选择

我有一个如下所示的前端定义:

frontend fe_imap from defaults_1
  mode tcp
  bind 127.0.0.1:143
  bind [::1]:143
  bind x.x.x.x:143
  stick-table type ip size 100k expire 24h store gpt0
  option tcplog
  use_backend block_imap if { sc_get_gpt0(0) eq 1 }
  use_backend %[src,map_ip(/etc/haproxy/maps/blacklist-imap.map)]
  default_backend be_imap

我的想法是只封锁一些 IP 一段时间,而永久封锁其他 IP。后者已经完美运行。我使用运行时 API 对地图和表格进行更新。

由于某种原因,gpt0 的想法不起作用。我在命令提示符下输入了以下内容:

echo "set table fe_imap src 127.0.0.1 data.gpt0 1" | socat stdio /var/run/haproxy.sock

添加了 IP(这只是一个本地主机示例。在现实生活中,这将是远程 IP)

echo "show table fe_imap" | socat stdio /var/run/haproxy.sock
# table: fe_imap, type: ip, size:102400, used:1
0x7fe788035988: key=127.0.0.1 use=0 exp=85159306 shard=0 gpt0=1

如果我尝试“telnet 127.0.0.1 143”,我仍然会进入默认后端而不是 block_imap 后端。

有人可以帮我吗?

相关内容