Welche Ports verwendet RabbitMQ?

135

Welche Ports verwendet RabbitMQ Server oder muss in der Firewall für einen Knotencluster geöffnet sein?

Mein /usr/lib/rabbitmq/bin/rabbitmq-envist unten eingestellt, von dem ich annehme, dass es benötigt wird (35197).

SERVER_ERL_ARGS="+K true +A30 +P 1048576 \   
-kernel inet_default_connect_options [{nodelay,true}] \  
-kernel inet_dist_listen_min 35197 \   
-kernel inet_dist_listen_max 35197"

Ich habe das nicht berührt rabbitmq.config, um einen Benutzer tcp_listenerfestzulegen, daher sollte der Standard 5672 abgehört werden.

Hier sind die relevanten Netstat-Zeilen:

tcp        0      0 0.0.0.0:4369           0.0.0.0:*           LISTEN      728/epmd 
tcp        0      0 0.0.0.0:35197          0.0.0.0:*           LISTEN      5126/beam
tcp6       0      0 :::5672                :::*                LISTEN      5126/beam

Meine Fragen sind:

  1. Müssen alle drei Ports 4369, 5672 und 35197 geöffnet sein, damit andere Knoten eine Verbindung zum Cluster herstellen können?

  2. Warum läuft 5672 nicht auf TCP und nicht nur auf TCP6?

Bluemalkin
quelle
2
Könnte mehr Antwort auf ServerFault anstelle von StackOverflow erhalten, aber ich bin froh, dass Sie es hier gepostet haben, da es genau das ist, wonach ich suche!
Norman H

Antworten:

151

PORT 4369: Erlang verwendet einen Port Mapper Daemon (epmd) zur Auflösung von Knotennamen in einem Cluster. Knoten müssen in der Lage sein, einander und den Port-Mapper-Daemon zu erreichen, damit das Clustering funktioniert.

PORT 35197, festgelegt durch inet_dist_listen_min / max Firewalls müssen zulassen, dass Datenverkehr in diesem Bereich zwischen Clusterknoten übertragen wird

RabbitMQ-Verwaltungskonsole:

  • PORT 15672 für RabbitMQ Version 3.x.
  • PORT 55672 für RabbitMQ vor 3.x.

PORT 5672RabbitMQ Hauptport.

Für einen Cluster von Knoten, müssen sie miteinander auf offen sein 35197, 4369und 5672.

Für alle Server, die die Nachrichtenwarteschlange verwenden möchten, ist nur 5672erforderlich.

Bluemalkin
quelle
8
Es scheint, dass der Verwaltungsport in der 3.x-Reihe von Releases auf 15672 geändert wurde.
kjw0188
1
Es sieht so aus, als ob der Management-Port in 3.x auf 15672 geändert wurde: rabbitmq.com/management.html#configuration
Greg M. Krsak
3
Es sieht so aus, als wären
kixorz
76

Welche Ports verwendet RabbitMQ?

Standard: 5672, das Handbuch hat die Antwort. Es ist in der RABBITMQ_NODE_PORTVariablen definiert .

https://www.rabbitmq.com/configure.html#define-environment-variables

Die Nummer kann anders sein, wenn sie von jemandem in der Rabbitmq-Konfigurationsdatei geändert wird:

vi /etc/rabbitmq/rabbitmq-env.conf

Bitten Sie den Computer, Ihnen Folgendes zu sagen:

sudo nmap -p 1-65535 localhost

Starting Nmap 5.51 ( http://nmap.org ) at 2014-09-19 13:50 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00041s latency).
PORT      STATE         SERVICE
443/tcp   open          https
5672/tcp  open          amqp
15672/tcp open  unknown
35102/tcp open  unknown
59440/tcp open  unknown

Oh schau, 5672 und 15672

Verwenden Sie netstat:

netstat -lntu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:15672               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:55672               0.0.0.0:*                   LISTEN
tcp        0      0 :::5672                     :::*                        LISTEN

Oh schau 5672.

benutze lsof:

eric@dev ~$ sudo lsof -i | grep beam
beam.smp  21216    rabbitmq   17u  IPv4 33148214      0t0  TCP *:55672 (LISTEN)
beam.smp  21216    rabbitmq   18u  IPv4 33148219      0t0  TCP *:15672 (LISTEN)

Verwenden Sie nmap von einem anderen Computer und stellen Sie fest, ob 5672 geöffnet ist:

sudo nmap -p 5672 10.0.1.71
Starting Nmap 5.51 ( http://nmap.org ) at 2014-09-19 13:19 EDT
Nmap scan report for 10.0.1.71
Host is up (0.00011s latency).
PORT     STATE SERVICE
5672/tcp open  amqp
MAC Address: 0A:40:0E:8C:75:6C (Unknown)    
Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds

Versuchen Sie, manuell mit Telnet eine Verbindung zu einem Port herzustellen. 5671 ist GESCHLOSSEN:

telnet localhost 5671
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

Versuchen Sie, manuell mit Telnet eine Verbindung zu einem Port herzustellen. 5672 ist OFFEN:

telnet localhost 5672
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Überprüfen Sie Ihre Firewall:

sudo cat /etc/sysconfig/iptables  

Es sollte Ihnen sagen, welche Ports geöffnet sind:

-A INPUT -p tcp -m tcp --dport 5672 -j ACCEPT

Wenden Sie Ihre Firewall erneut an:

sudo service iptables restart
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]
Eric Leschinski
quelle
1
Hervorragende Antwort. Wenn überhaupt, sind Sie ein wenig über Bord gegangen.
Darth Egregious
Falls sich jemand gefragt hat - standardmäßig bindet rabbitmq nur den 4369-Port an die Schnittstelle, die Sie in rabbitmq-env.conf angegeben haben. Wenn Sie den gesamten rabbitmq-bezogenen Datenverkehr über eine bestimmte Schnittstelle zulassen möchten (wie ich selbst - über einen dedizierten openvpn-Link), müssen Sie rabbitmq so konfigurieren, dass der gesamte andere Datenverkehr über diese Schnittstelle in rabbitmq.conf geleitet wird (andernfalls werden andere Ports nicht gebunden zu Schnittstelle Ihrer Wahl, wird aber stattdessen auf allen Ports lauschen)
Greg0ry
15

So finden Sie heraus, welche Ports rabbitmq verwendet :

$ epmd -names

Ausgänge:

epmd: up and running on port 4369 with data:
name rabbit at port 25672

Führen Sie diese als root aus:

lsof -i :4369
lsof -i :25672

Weitere Informationen zu epmd-Optionen.

Mick
quelle
lsofist schmerzhaft langsam ... und erfordert Root-Rechte. Sie können das gleiche viel schneller mitnetstat -an | egrep '\.(4369|25672).*LISTEN'
dland
Benötigt es wirklich root? Ich konnte es als normaler Benutzer gut ausführen. Vielleicht hat sich in den letzten Versionen etwas geändert?
Asgs
8

Portzugang

Firewalls und andere Sicherheitstools können verhindern, dass RabbitMQ an einen Port gebunden wird. In diesem Fall kann RabbitMQ nicht gestartet werden. Stellen Sie sicher, dass die folgenden Ports geöffnet werden können:

4369: epmd, ein Peer-Discovery-Service, der von RabbitMQ-Knoten und CLI-Tools verwendet wird

5672, 5671: Wird von AMQP 0-9-1- und 1.0-Clients ohne und mit TLS verwendet

25672: Wird von der Erlang-Distribution für die Kommunikation zwischen Knoten und CLI-Tools verwendet und wird aus einem Dynamikbereich zugewiesen (standardmäßig auf einen einzelnen Port beschränkt, berechnet als AMQP-Port + 20000). Weitere Informationen finden Sie im Netzwerkhandbuch.

15672: HTTP-API-Clients und rabbitmqadmin (nur wenn das Management-Plugin aktiviert ist)

61613, 61614: STOMP-Clients ohne und mit TLS (nur wenn das STOMP-Plugin aktiviert ist)

1883, 8883: (MQTT-Clients ohne und mit TLS, wenn das MQTT-Plugin aktiviert ist

15674: STOMP-over-WebSockets-Clients (nur wenn das Web-STOMP-Plugin aktiviert ist)

15675: MQTT-over-WebSockets-Clients (nur wenn das Web-MQTT-Plugin aktiviert ist)

Referenzdokument: https://www.rabbitmq.com/install-windows-manual.html

Code5
quelle