HAProxy 后端 ACL:我可以解析主机名并使用 IP 地址来授权连接吗?

问题描述 投票:0回答:1

我们对多个后端使用 haproxy,有时只需要从内网访问,所以在后端配置中我使用这个:

backend srv-web-http-dev_ipvANY
    mode            http
    id          105
    log         global
    timeout connect     30000
    timeout server      30000
    retries         3
    acl         INTERNAL_LANS   src 172.1.0.0/16
    acl         INTERNAL_LANS   src 172.2.0.0/16
    acl         INTERNAL_LANS   src 172.3.0.0/16
    http-response allow  if  INTERNAL_LANS
    http-response deny 
    server          srv-web-01 172.1.2.3:888 id 117 check inter 1000  resolvers  

现在,第三方开发人员应该从外部连接,他问我是否可以解析 dns 查询以获取要授权的 ip,因为他在全国漫游时使用 dyndns 来获取正确的 ip。

For example: record A mynameisdev.devdomain.com -> 101.102.103.104

并获得101.102.103.104授权连接到后端srv-web-http-dev_ipvANY。

我检查了 haproxy 文档,但我不知道如何让它工作。似乎没有方法可以解析 dns 查询并在 ACL 检查中使用结果 ip(对于后端部分)

haproxy
1个回答
0
投票

由于您没有显示

haproxy -vv
的输出,我们不知道您使用哪个 HAProxy 版本。因此,我在这里链接了文档的最新版本。

您可以使用 do-resolve 来解析 IP。

部分从文档复制并未经测试。

resolvers mydns
  nameserver local 127.0.0.53:53
  nameserver google 8.8.8.8:53
  # some more config for resolvers section

frontend fe
  bind 10.42.0.1:80
  http-request do-resolve(txn.myip,mydns,ipv4) src
  http-request capture var(txn.myip) len 40
  # more config

backend srv-web-http-dev_ipvANY

  # more config 

  http-response allow  if  { var(txn.myip) -m ip 101.102.103.104/32 }

  # more config 

这是解析器部分的链接

© www.soinside.com 2019 - 2024. All rights reserved.