无论如何要在 Consul 服务器配置中将 CIDR 块定义为 client_addr 值?

Is there anyway to define CIDR block as client_addr value in Consul server config?

我正在让自己熟悉 Consul 服务并进行尝试。但是,直到现在我都找不到允许特定子网向 Consul 服务器发送请求的方法。

这是我的基本领事 config.json:

{
"server": true,
"datacenter":"dc1",
"data_dir":"/opt/consul",
"bind_addr":"{{ ansible_ssh_host }}",
"client_addr": "0.0.0.0",
"bootstrap_expect": 1,
"node_name": "consul_server",

"ui": true,
"encrypt":"",
"acl" : {
  "enabled" : true,
  "default_policy" : "deny",
  "down_policy" : "extend-cache"
}


}

在这种情况下,client_addr 被设置为任意位置 0.0.0.0。如何将其设置为 10.10.4.0/24 10.10.2.0/2410.10.0.0/16

client_addr 配置选项控制 Consul 将为 DNS、HTTP[S] 和 gRPC 侦听器绑定到哪些接口。您可以在 Consul 应该监听的机器上指定一个 space 分隔的地址列表。例如,

{
  "client_addr": "192.0.2.10 198.51.100.20 203.0.113.30"
}

这不会阻止 Consul 可以从其他 CIDR 上的客户端访问,这些 CIDR 可以路由到其中一个侦听 IP。如果您想限制哪些 IP 可以与 Consul 通信,则需要使用防火墙。

但是,您可以使用 http_config.allow_write_http_from 配置选项限制 Consul 接受 API 写入请求的 CIDR。

{
  "http_config": {
    "allow_write_http_from": [
      "192.0.2.0/24",
      "198.51.100.0/24",
      "203.0.113.0/24"
    ]
  }
}

此示例配置仅允许来自位于所列地址范围之一的客户端的 HTTP PUT/POST/DELETE 选项。