haproxy acl 根据从 PROXY protocl v2 标头中获取的客户端 IP 过滤 tcp 请求

时间:2020-12-20 19:02:59

标签: acl haproxy

所以我们有一个带有 NLB 的 AWS 设置,以便我们可以将它附加到 EIP,从而为客户白名单提供静态。 NLB 将代理协议 v2 标头发送到 haproxy,后者将其发送回后端服务器。 该应用程序正在选择并使用它。 我想弄清楚的问题是,由于 haproxy 获取 NLB 的内部 IP,并且它仅通过 PROXY 协议标头获取公共客户端 IP,

如何从 PROXY 标头解析客户端 IP 并根据 haproxy 中的白名单 ACL 对其进行过滤?

我有一个这样的监听配置

listen backoffice
  bind 10.2.3.4:443 accept-proxy
  mode tcp
  default-server  inter 3s fall 3 rise 3 error-limit 1 on-error mark-down
  option  tcplog
  acl network_allowed src 5.6.7.8 1.4.6.8 4.6.7.8
  tcp-request connection reject if !network_allowed
  server backoffice.prod.local 10.1.2.3:443 check-send-proxy send-proxy-v2-ssl-cn  port 443

这个 ^^ 打破了这个后端的 haproxy - 只有当我评论 tcp-request 行并重新加载时它才有效

对我来说,这看起来是非常有用的用例,但到目前为止,还没有在线研究显示任何有希望的 haproxy 配置可以做到这一点。

我只有不到 2 天的时间来解决这个问题,希望社区能在短时间内伸出援手

1 个答案:

答案 0 :(得分:0)

所以我最终弄清楚了我的情况:)

工作配置是这样的:

listen backoffice
  bind 10.2.3.4:443 accept-proxy
  mode tcp
  default-server  inter 3s fall 3 rise 3 error-limit 1 on-error mark-down
  option  tcplog
  acl network_allowed src 5.6.7.8 1.4.6.8 4.6.7.8
  tcp-request content reject if !network_allowed
  server backoffice.prod.local 10.1.2.3:443 check port 443

我删除了将代理标头传递给后端的部分,因为它不需要它们。 我只需要让 NLB 将代理标头传递给 haproxy,以便我们可以可靠地过滤源/客户端 IP

相关问题