#23724·consul

当查询节点不存在时,领事返回不正确的节点(Short节点名称)

作者: Silvenga创建于 2026年7月9日更新于 2026年8月29日

问题概览

当一个短节点名称不存在时,领事DNS可以返回随机节点.

这与此代码直接相关 :

https://GitHub.com/hashicorp/consul/blob/7d6316305e8612066e0a23c7a1209e7dae5e7441/agent/consul/state/catalog.go#L38-L43

源自此承诺:

https://GitHub.com/hashicorp/consul/commit/fe49c0a0abe8d0779abfca0b13ad557173f664d 页面存档备份,存于互联网档案馆.

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我被撕破了 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我被撕碎了 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我被撕碎了 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我被撕碎了 从UX角度来说,一个操作员能够打入一个很短的东西是有用的. 同时,通过强制使用"8"字符长度,我们根据行为降低用户的概率,当重复前缀被注入环境时,它在未来突然停止工作.

我很惊讶。 据我所知, 操作员不可能对这种行为进行观察。

-- -- . . .

  • 复制步骤
  1. 运行一个集群。
  2. 节点使用短3个字符主机名,如`ba1'(实际上也恰好是hex).
  3. 运气不好(一个UUID恰好从那个节点名称开始被问起),因此在这种情况下,有一个节点随机生成一个从 " BA1... " 开始的UUID.

内容来源: hashicorp/consul