Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTP API listener only listens on IPv4 interfaces by default, and multiple listeners for HTTP API are not supported #11526

Open
iqolome opened this issue Jun 22, 2024 · 6 comments

Comments

@iqolome
Copy link

iqolome commented Jun 22, 2024

Describe the bug

It is not possible to enable both IPv4 and IPV6 listening at 15671

Version

rabbitmq-server 3.9.13

Reproduction steps

  1. fail 1
management.ssl.ip.1      = 0.0.0.0
management.ssl.ip.2      = ::
  1. fail 2 startup fail
management.ssl.1      = 0.0.0.0:15671
management.ssl.2      = :::15671
  1. fail 3 startup fail
management.ssl.ip     = 0.0.0.0
management.ssl.ip     = ::
  1. fail 4 only ipv4
management.ssl.ip     = 0.0.0.0
  1. fail 5 only ipv6
management.ssl.ip     =::

Expected behavior

RabbitMQ Management Plugin Listening on Dual Stack (Both IPv4 and IPv6) Interfaces

Additional context

No response

@iqolome iqolome added the bug label Jun 22, 2024
@iqolome
Copy link
Author

iqolome commented Jun 22, 2024

RabbitMQ Management Plugin Listening on Dual Stack (Both IPv4 and IPv6) Interfaces

@dcorbacho
Copy link
Contributor

RabbitMQ 3.9.x is out of support. Please check https://www.rabbitmq.com/release-information

@lukebakken lukebakken reopened this Jul 12, 2024
@lukebakken lukebakken changed the title management SSL Cannot enable IPv4 and IPV6 Can't configure multiple TCP/TLS listeners for management HTTP server Jul 12, 2024
@lukebakken lukebakken self-assigned this Jul 12, 2024
@lukebakken
Copy link
Collaborator

lukebakken commented Jul 12, 2024

@dcorbacho I re-opened and edited the issue title because the actual issue is more generic, and still affects RabbitMQ.

Currently, it is not possible to specify multiple TCP or TLS listeners for the management HTTP server. This is the first time I've seen this issue brought up.

cc @michaelklishin @mkuratczyk because you two may have input.

Related issues:

@michaelklishin
Copy link
Member

@lukebakken a quick test suggests that the HTTP API listener is different from the rest in a few ways, for example, it only listens on IPv4 interfaces by default while others listen on IPv6 (I suspect it's both stacks but lsof -p lists it as IPv6).

I do not recall this being a common request from paying customers or regular contributors, a much more common request is "please make sure everything works in IPv6-only environments", like we have seen for peer discovery recently.

Changing rabbitmq.conf schema one more time — and it is already complex and supports a couple of legacy formats — for the HTTP API sounds like a non-trivial hassle for little gain.
But what likely can be done relatively easily is listening on all interfaces (for both stacks)
while retaining the ability to override the port.

#2526 is for TLS client options, so I don't see how that's relevant here?

@michaelklishin michaelklishin changed the title Can't configure multiple TCP/TLS listeners for management HTTP server HTTP API listener only listens on IPv4 interfaces by default, and multiple listeners for HTTP API are not supported Jul 12, 2024
@lukebakken
Copy link
Collaborator

Whoops, 2526 must have been in my clipboard. I've edited my comment.

@iqolome
Copy link
Author

iqolome commented Oct 17, 2024

@lukebakken a quick test suggests that the HTTP API listener is different from the rest in a few ways, for example, it only listens on IPv4 interfaces by default while others listen on IPv6 (I suspect it's both stacks but lists it as IPv6).lsof -p

I do not recall this being a common request from paying customers or regular contributors, a much more common request is "please make sure everything works in IPv6-only environments", like we have seen for peer discovery recently.

Changing schema one more time — and it is already complex and supports a couple of legacy formats — for the HTTP API sounds like a non-trivial hassle for little gain. But what likely can be done relatively easily is listening on all interfaces (for both stacks) while retaining the ability to override the port.rabbitmq.conf

#2526 is for TLS client options, so I don't see how that's relevant here?

I'm so sorry I didn't respond to the message in time, and I seem to have forgotten about it. My mailbox is always filled with all kinds of ads.


My initial requirement was to start the SSL protocol, listen to ipv4 and ipv6 at the same time, analyze the problem down,
Probably because of the configuration syntax limitations, this plugin itself supports both IPv4 and IPv6 listening.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants