无论如何要在 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/24
或 10.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 选项。
我正在让自己熟悉 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/24
或 10.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 选项。