Consul 是什么
8500 是 HashiCorp Consul 的 HTTP API 与 Web UI 端口:服务注册与注销、健康检查结果查询、KV 读写与配置下发都从这里进出。Consul 还有一组配套端口——8300 用于服务端之间的 RPC,8301 与 8302 分别用于局域网与广域网的 gossip 通信,8600 提供 DNS 查询接口,让客户端能像查域名一样解析服务地址。
基本信息
| 服务 | Consul HTTP API / Web UI |
|---|---|
| 协议 | TCP/HTTP(可配置 TLS,UI 路径为 /ui) |
| 配套端口 | 8300 服务端 RPC、8301/8302 gossip、8600 DNS |
| 存储 | KV 键值与服务目录 |
| 安全等级 | 仅业务网段,建议强制开启 ACL |
典型使用场景
- 服务注册与发现:服务启动时注册自身,调用方按名称查询实例
- 配置中心:把可变配置写入 KV,让应用按前缀监听变更
- 健康检查:由 Consul 判断实例是否可用,并影响查询结果
- 排障:确认 leader 正常、节点已加入、服务确实注册成功
- 安全评估:核对 ACL 是否开启及 token 的授权范围
API 与管理
API 与管理
curl -s http://consul:8500/v1/status/leader
curl -s http://consul:8500/v1/catalog/services | head -c 300
consul members # 节点与角色
consul kv get -recurse config/app/ # 读取 KV 子树
# DNS 接口:服务名可直接解析
# dig @127.0.0.1 -p 8600 web.service.consulConsul 端口全景
| 端口 | 用途 | 放行范围 |
|---|---|---|
| 8500 | HTTP API 与 UI | 业务与管理网段 |
| 8600 | DNS 接口 | 需要服务发现的客户端网段 |
| 8300 | 服务端 RPC | 仅服务端之间 |
| 8301 / 8302 | 局域网 / 广域网 gossip | 集群内网 |
UI 路径 /ui 可直接打开;生产暴露面评估时它属于高风险后台,因为它既能读服务目录,也可能读取 KV 中的配置与凭据。
Consul 未启用 ACL 时任何人或任何服务都能注册实例、读取全部 KV:注册同名实例即可劫持流量,这在微服务环境里等同于服务投毒,不是理论风险。
加固建议
- 启用 ACL 并默认拒绝,按服务颁发最小权限 token
- API 与 UI 启用 TLS,集群内部启用 gossip 加密
- 对外只暴露必要端口,管理接口限制来源网段
- 定期审计 token 清单与过期策略
巡检与加固要点
- 确认 ACL 已启用,并核对节点角色与待命状态
- KV 中的敏感值改用专用密钥系统托管
- 定期核对 token 清单与授权策略,清理长期未用凭据
- 服务目录变更留痕,便于定位异常注册
端口规划提示:服务发现的客户端通常还需要 DNS 接口,只放行 HTTP API 而漏掉 DNS 端口时,表现为“注册成功但调用方解析不到服务”。