You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RabbitMQ SSL连接失败:端点不可达及节点连接被拒问题求助

问题描述

在Oracle Cloud服务器上按教程安装RabbitMQ后,浏览器可正常访问Management Plugin,但使用dotnet推送消息时失败。已开放防火墙及Oracle入口规则的5671、5672、15672端口。

客户端错误信息

RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable
---> System.AggregateException: One or more errors occurred. (Connection failed)
---> RabbitMQ.Client.Exceptions.ConnectFailureException: Connection failed
---> System.Net.Sockets.SocketException (11001): No such host is known.
at System.Net.NameResolutionPal.ProcessResult(SocketError errorCode, GetAddrInfoExContext* context)
at System.Net.NameResolutionPal.GetAddressInfoExCallback(Int32 error, Int32 bytes, NativeOverlapped* overlapped)
--- End of stack trace from previous location ---
at RabbitMQ.Client.Impl.TcpClientAdapter.ConnectAsync(String host, Int32 port)
at RabbitMQ.Client.Impl.TaskExtensions.TimeoutAfter(Task task, TimeSpan timeout)
at RabbitMQ.Client.Impl.SocketFrameHandler.ConnectOrFail(ITcpClient socket, AmqpTcpEndpoint endpoint, TimeSpan timeout)
--- End of inner exception stack trace ---
at RabbitMQ.Client.Impl.SocketFrameHandler.ConnectOrFail(ITcpClient socket, AmqpTcpEndpoint endpoint, TimeSpan timeout)
at RabbitMQ.Client.Impl.SocketFrameHandler.ConnectUsingAddressFamily(AmqpTcpEndpoint endpoint, Func2 socketFactory, TimeSpan timeout, AddressFamily family) at RabbitMQ.Client.Impl.SocketFrameHandler..ctor(AmqpTcpEndpoint endpoint, Func2 socketFactory, TimeSpan connectionTimeout, TimeSpan readTimeout, TimeSpan writeTimeout)
at RabbitMQ.Client.ConnectionFactory.CreateFrameHandler(AmqpTcpEndpoint endpoint)
at RabbitMQ.Client.EndpointResolverExtensions.SelectOne[T](IEndpointResolver resolver, Func2 selector) --- End of inner exception stack trace --- at RabbitMQ.Client.EndpointResolverExtensions.SelectOne[T](IEndpointResolver resolver, Func2 selector)
at RabbitMQ.Client.Framing.Impl.AutorecoveringConnection.Init(IEndpointResolver endpoints)
at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName)
--- End of inner exception stack trace ---
at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName)
at

RabbitMQ诊断命令报错

执行rabbitmq-diagnostics listeners时,日志输出:

** Connection attempt from node '' rejected. Invalid challenge reply. **


解决方案

1. 修复DNS解析问题

错误No such host is known说明客户端无法解析RabbitMQ服务器的主机名:

  • 直接用服务器公网IP替换连接字符串中的主机名测试
  • 在客户端机器上执行ping <RabbitMQ服务器IP/主机名>,确认网络连通性

2. 调整RabbitMQ监听地址

默认情况下RabbitMQ可能仅监听localhost(127.0.0.1),导致外部无法连接:

  • 编辑RabbitMQ配置文件(通常路径为/etc/rabbitmq/rabbitmq.conf),添加或修改以下配置:
    loopback_users = none
    listeners.tcp.default = 0.0.0.0:5672
    listeners.ssl.default = 0.0.0.0:5671
    
  • 重启RabbitMQ服务:systemctl restart rabbitmq-server
  • 再次执行rabbitmq-diagnostics listeners,确认监听地址为0.0.0.0而非仅127.0.0.1

Invalid challenge reply通常和Erlang Cookie不匹配或节点名称配置错误有关:

  • 执行rabbitmqctl status查看服务器节点名称(格式类似rabbit@hostname),确保客户端连接时指定的节点名称与服务器一致
  • 检查Erlang Cookie文件:
    • 文件路径通常为/var/lib/rabbitmq/.erlang.cookie
    • 确保文件权限为400,若客户端部署在同一服务器,需保证Cookie内容与服务器一致

4. 验证SSL配置(若使用5671端口)

如果连接使用5671(SSL端口),需排查SSL配置:

  • 临时改用5672端口连接,排除SSL配置问题
  • 若必须使用SSL,确保客户端信任RabbitMQ的SSL证书,或临时禁用证书验证(仅用于测试)

内容的提问来源于stack exchange,提问作者Hamza Hussain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:31:06