使用错误 SOCKS 密码却成功的 Artemis broker 连接,可能已经跳过了代理处理器。请检查 broker 的目标地址,而不只是 socksHost。

transport 文档将 localhost 和 127.0.0.1 之类的 loopback broker 地址描述为绕过 SOCKS 配置的地址。对于正常的本地解析路径,当连接必须经过中间代理时,请使用预期的非 loopback broker 地址。另一个仍然解析到 loopback 的别名也可能得到相同结果。

检查 connector 版本的确切条件

较新的上游 connector 源码包含一个显式的 remote-DNS 例外。其代理处理器条件是:

socksEnabled && (socksRemoteDNS || !isTargetLocalHost())

在包含该条件的实现中启用 socksRemoteDNS 时,connector 会让目标保持未解析,并且即使目标看起来像 loopback 也会安装 SOCKS 处理器。在其文档所述的默认值 false 下,本地地址检查仍然很重要。

这改变了 localhost 这类主机名的含义:当它被交给 SOCKS 服务器解析时,指的是代理所看到的目标。在选择远程解析之前,请确认这就是预期的 broker 位置。

让行为与已安装的 Artemis 客户端保持一致。一旦处理器真正进入路由,就要区分 SOCKS 认证与 broker 认证,并验证最终连接路径,而不是把成功的 broker 会话当作使用了代理凭据的证据。

相关文章